2013-06-20 2 views
1

Я получаю ошибку времени выполнения 13 во время компиляции. это линия, которая подбрасываетExcel VBA Ошибка времени выполнения 13 Несоответствие типа

ошибка, y = Application.counta ((«A: A») <> «" - 3). Я попробовал объявить y, поскольку вариант /() тоже не помог. кто-нибудь может указать, где я делаю ошибку, это было бы очень полезно.

Option Explicit 


Sub Test() 

' z= no of rows(temp calc sheet emp id) 
' x= no of columns(dashboard calender) 
' y= no of rows(dashboard emp id) 


Dim i, j, k, d, x, y, z As Long 
Dim Empid As Long 
Dim currentdate, startdate, enddate As Date 
'Dim countA As Long 

startdate = Worksheets("Temp calc").Range("C2") 
enddate = Worksheets("Temp calc").Range("D2") 

x = (Range("n2") - Range("n1")) 
y = Application.counta(("A:A") <> "" - 3) 
z = Worksheets("Temp Calc").counta(("A:A") - 1) 

For i = 1 To y 'To loop through the emp_id in dashboard. 

For j = 1 To x Step 1 'To loop through the calender in dashboard daywise. 

For k = 1 To z 'To loop through the emp_id i temp calc sheet. 



     d = 0 
     Empid = Cells(4, i) 
     currentdate = Cells(3, 17 + j) 

     If (Cells(k, 1)) = Empid Then 
     If (currentdate > startdate) & (currentdate < enddate) Then  'To check whether the first column date falls within the project start and end date 

     d = d + 1 

     startdate = startdate + 1 
     enddate = enddate + 1 

     Cells(i + 3, j + 16) = d 

End If 
End If 

Next 
Next 
Next 


End Sub 
+0

'COUNTA' используется для подсчета без пустых ячеек в диапазоне , но вы, кажется, добавляете условие '<>" "' к нему - 'COUNTA' принимает только диапазон. Вы намеревались использовать 'COUNTIF'? – brettdj

ответ

2

Если вы хотите посчитать, не пустые ячейки в столбце А и вычесть 3 из этого числа, то попробуйте:

y = Application.WorksheetFunction.CountA(Range("A:A")) - 3

+0

он работал, но возвратил ту же ошибку для z, как мне ее создать, поскольку я хочу ссылаться на col A в листе «temp calc». – mathew

+2

Попробуйте 'Z = Application.WorksheetFunction.CountA (Рабочие листы (« Temp Calc »). Диапазон (« A: A »)) - 1' – brettdj

+0

Да, это сработало, но я получаю ту же ошибку для Я не объявляю что-то? If (currentdate> startdate) & (currentdate mathew