运行以下代码时,我收到“对象变量或未设置块变量”错误消息。它位于Access中并引用Excel电子表格。代码有什么问题?
wsTest.Range("A11").Activate
Do Until IsEmpty(ActiveCell)
intX = intX + wsTest.Cells(ActiveCell.Row, "L") 'error occurs on this line
intY = intY + wsTest.Cells(ActiveCell.Row, "I")
ActiveCell.Offset(1, 0).Select ' Step down 1 row to the next cell.
Loop
第一次运行代码时,没有错误,只有第二次。关闭并重新打开Access“修复”问题。这怎么能与这段代码相关?
答案 0 :(得分:2)
您需要定义工作表,如下所示:
Dim wsTest As Worksheet
Set wsTest = Sheets("Sheet1")
答案 1 :(得分:1)
由于错误发生在突出显示的行中,我相信你试图做一个无效的总和。也许wsTest.Cells(oCell.Row, "L")
返回的值不是整数,或者您应该使用wsTest.Cells(oCell.Row, "L").Value
。
将更容易确定问题的根本原因,添加一个msgbox来检查单元格值,正如我在下面添加的那样。
无论哪种方式,我建议你不要使用对ActiveCell的引用,因为它们不可靠。也许这段代码有助于避免这种错误(只需用适当的单元格对象替换ActiveCell)。
Dim oCell as excel.range
set oCell = wsTest.Range("A11")
Do Until Len(oCell.Value) = 0
msgbox(wsTest.Cells(oCell.Row, "L"))
intX = intX + wsTest.Cells(oCell.Row, "L") 'error occurs on this line
intY = intY + wsTest.Cells(oCell.Row, "I")
Set oCell = oCell.Offset(1, 0) ' Step down 1 row to the next cell.
Loop
答案 2 :(得分:0)
尝试更改
wsTest.Range("A11").Activate
到
wsTest.Range("A11").Select