在 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
这文档这表明你在此之前的作业(lastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row
)可能有问题。
您将其声明lastRow
为 Integer,但文档指出,.Row
aRange
将是只读的 long。这无法解释为什么它第二次有效,但这可能是问题所在。