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

时间:2016-11-21 16:23:45

标签: 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)

1 个答案:

答案 0 :(得分:9)

运行时错误91表明ActiveSheet Is Nothing(因为ActiveSheet是您提供的几行代码中唯一假设的对象,当然也是唯一引发错误的行上的对象

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

  1. 正在从加载项,Excel或其他应用程序中调用代码,并且不打开任何Excel工作簿。在这种情况下,没有ActiveWorkbook也没有ActiveSheet
  2. 代码正在从另一个应用程序执行(Outlook, 访问,Word,PowerPoint等),但您使用的是内置的Excel ActiveSheet,其他应用程序中不存在。
  3. 您已使用ActiveSheet隐藏了内置Dim Activesheet As Worksheet,并忽略了将工作表对象分配给该变量,因此默认情况下为Nothing
  4. 分辨率:

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