2015-08-24 4 views
0

Я хотел бы выполнить цикл через набор столбцов, тем самым подсчитывая значения времени «PAS» или «VRIJ».Ошибка времени выполнения во время цикла for

Поэтому я написал следующий код:

Sub CountWorkDays() 

    Dim count As Integer 
    count = 0 

    For i = 1 To 6 

    Dim var1 As Characters 
    var1 = Cells(1, i).Value 

    If var1 = "Test" Then 
    count = count + 1 

    ElseIf var1 = "PAS" Then 
    count = count + 1 

End If 

Next 
End 

MsgBox (count) 

End Sub 

Но когда я запускаю код, я получаю следующее сообщение об ошибке:

Run-time error '91': 
Object-variable or with block variable is not set 

Пробовал прибегая к помощи ошибке, но не может undestand, где он и откуда. Любые мысли о том, как мне улучшить код выше?

ответ

1

Вы устанавливаете var1 как символы - вместо этого устанавливаете его как строку и перемещаете линию DIM за пределы цикла и избавляетесь от инструкции END - выполнение кода останавливается там.

Sub CountWorkDays() 

    Dim var1 As String 
    Dim count As Integer 
    count = 0 

    For i = 1 To 6 
     var1 = Cells(1, i).Value 
     If var1 = "Test" Then 
      count = count + 1 
     ElseIf var1 = "PAS" Then 
      count = count + 1 
     End If 
    Next i 

    MsgBox (count) 

End Sub 

Edit:
Это может быть лучший способ сделать это, хотя:

Sub CountWorkDays() 

    MsgBox Application.WorksheetFunction.CountIf(Range("A1:A6"), "Test") + _ 
      Application.WorksheetFunction.CountIf(Range("A1:A6"), "PAS") 

End Sub 
Смежные вопросы