VBA运行时错误91:未设置对象变量?

Sla*_*lab -5 excel vba excel-vba

为什么这不起作用?运行时错误91?

Dim fornameCurr As String
Dim surnameCurr As String
Dim rowCurr As Long

rowCurr = 13
fornameCurr = Activesheet.Cells(rowCurr, 1)    << ERROR HERE
surnameCurr = Activesheet.Cells(rowCurr, 2)
Run Code Online (Sandbox Code Playgroud)

Dav*_*ens 9

运行时错误91表明ActiveSheet Is Nothing(因为你提供的几行代码中ActiveSheet唯一假定的对象,当然是提高错误的行上唯一的对象).

我能想到的几种情况可能会对此产生影响:

  1. 代码是从外接程序,Excel或其他应用程序中调用的,并且没有打开任何Excel工作簿.在这种情况下,没有ActiveWorkbook也没有ActiveSheet.
  2. 代码正在从另一个应用程序(Outlook,Access,Word,PowerPoint等)执行,但您使用的ActiveSheet是其他应用程序中不存在的Excel内置代码 .
  3. 你阴影内置ActiveSheetDim Activesheet As Worksheet和被忽视的一个工作表对象赋给变量,所以它的Nothing默认.

决议:

  1. 添加逻辑以检查是否存在Workbook对象等.
  2. 声明一个Worksheet对象变量并赋值给它.
  3. 希望避免遮蔽现有的内置名称,确保分配给对象变量

  • 我的猜测是#2 - 但我们真的不应该猜.OP需要提供更多细节. (3认同)
  • @DavidZemens,我选择选项3 ...注意OP的代码没有'sheet'大写,因此他可能宣布自己的代码. (2认同)