Написание макроса в MS Project, который читает значения из Excel. Макрос должен подсчитать вхождение определенной строки в столбце таблицы Excel. Я использую следующий код:

Set objXL = CreateObject("Excel.Application")
Set objWB = objXL.Workbooks.Open("D:\VBA\Design\" + FileName + ".xls")
Set ObjWS = objWB.Worksheets(1)   

ObjWS.Activate

Dim lastRow As Integer   
lastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row

Dim iVal As Double    
iVal = WorksheetFunction.CountIf(ObjWS.Range("A1:A" & lastRow), "Resource:" & "*")

Проблема: когда я запускаю код в первый раз, я получаю

Ошибка времени выполнения 13 Несоответствие типов

где iVal объявлен. Но после остановки выполнения и повторного запуска эта ошибка не появляется.

Испытанные решения: изменение значения возвращаемого типа на Integer, Long и т.д. Но ошибка все равно сохраняется.

Может ли кто-нибудь помочь мне отследить проблему и найти решение?

1 ответ1

2

Документация предполагает, что ваше назначение до этого (lastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row) может быть проблемой.

Вы объявляете lastRow как целое число, но в документации говорится об этом .Row for Range будет только для чтения. Это не объясняет, почему это работает во второй раз, но это может быть проблемой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .