vba错误:对象变量或未设置块变量

时间:2011-04-12 19:40:37

标签: excel ms-access vba excel-vba

运行以下代码时,我收到“对象变量或未设置块变量”错误消息。它位于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“修复”问题。这怎么能与这段代码相关?

3 个答案:

答案 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