2015-08-14 2 views
0

У меня есть фрагмент кода в моем макросе Excel VBA, который подсчитывает количество раз, когда появляется определенная строка, а затем добавление этого номера в соответствующий столбец сотрудника на другом листе. Вот код:Ошибка VBA Countif

For d = 2 To table3.UsedRange.Rows.Count 
     saP = table3.Cells(d, 1).Value 
     If table3.Cells(d, 5).Value > 3 Then 
      numVils = WorksheetFunction.CountIfs(table4.Range("$A:$A"), saP, table4.Range("$D:$D"), "015D", table4.Range("$G:$G"), "0/1" Or "0/2") 
      table3.Cells(d, 5).Value = table3.Cells(d, 5).Value + numVils 
      table3.Cells(d, 4).Value = table3.Cells(d, 4).Value + WorksheetFunction.CountIfs(table4.Range("$A:$A"), saP, table4.Range("$D:$D"), "015D") 
     Else 
      table3.Cells(d, 5).Value = table3.Cells(d, 5).Value + WorksheetFunction.CountIfs(table4.Range("$A:$A"), saP, table4.Range("$D:$D"), "015D") 
     End If 
    Next 

По какой-то причине он работает в течение первых двух раз, я запускаю его, а затем получает сообщение об ошибке на третьем. Coinicdentally, третий запуск, когда много table3.cells (d, 5) .value> 3. Он получает ошибку на четвертой строке. Есть ли ошибки в моем коде, которые вызывают это?

+0

Вы пытались скомпилировать код и узнать где именно именно код выдает сообщение? – DragonSamu

ответ

0

То, что бросается в глаза, это «или» в 4-й строке.

Я не верю, что вы можете это иметь. Наверное, нужно что-то вроде:

numVils = WorksheetFunction.CountIfs(table4.Range("$A:$A"), saP, table4.Range("$D:$D"), "015D", table4.Range("$G:$G"), "0/1") _ 
    + WorksheetFunction.CountIfs(table4.Range("$A:$A"), saP, table4.Range("$D:$D"), "015D", table4.Range("$G:$G"), "0/2") 
Смежные вопросы