vba错误:对象variables或块variables未设置

运行以下代码时出现“对象variables或块variables未设置”错误消息。 它在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 

代码第一次运行,没有错误,只有第二次。 closures并重新打开Access“修复”问题。 这怎么可能与这个代码有关?

由于错误发生在突出显示的行中,我相信你正试图做一个无效的总和。 也许wsTest.Cells(oCell.Row, "L")返回的值不是一个整数,或者你应该使用wsTest.Cells(oCell.Row, "L").Value

将更容易找出问题的根本原因添加一个msgbox来检查单元格的值,如我在下面添加。

无论哪种方式,我build议你避免使用ActiveCell的引用,因为它们不可靠。 也许这个代码有助于避免这个错误(简单地用合适的单元对象replaceActiveCell)。

 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 

您需要定义工作表,如下所示:

 Dim wsTest As Worksheet Set wsTest = Sheets("Sheet1") 

尝试改变

 wsTest.Range("A11").Activate 

 wsTest.Range("A11").Select