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

时间:2015-11-17 07:50:48

标签: excel vba excel-vba excel-2010 excel-2007

我有以下代码在Excel 2007中正常工作。

但是,它在Excel 2010上出现以下错误:

  

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

任何想法如何解决?我没有运气检查过其他帖子。

更新:请注意,如果包含vba代码的工作簿是activeworkbook,则代码可以正常工作。

但我正在做的是打开另一个工作簿,然后按F3(运行此代码)。然后它失败了。因此,基本上iif工作簿与代码是活动的,它工作,如果它是另一个活动的工作簿,它会给出错误。

Sub Process_current_Sheet()


        Dim WS_Count As Integer
        Dim i As Integer
        Dim sheet_name As String

         WS_Count = ActiveWorkbook.Worksheets.Count

         nameofworkbook = ActiveWorkbook.Name


         ' Begin the loop.
         For i = 1 To WS_Count

            If InStr(ActiveWorkbook.Worksheets(i).Name, "xxx") > 0 Then
                    sheet_name1 = activeWorkbook.Worksheets(i).Name               
            End If


        Next i


End Sub

2 个答案:

答案 0 :(得分:1)

发现问题。
我打开的第二个工作簿是活动工作簿,后面也有一个宏,所以等待用户按下宏激活/不是宏 ....

如果不这样做,则会收到提到的错误...
如果您激活该工作簿上的宏(不再显示宏按钮),那么我的宏工作正常。

答案 1 :(得分:0)

可能不是解决方案,但这将有助于确认谁至少是罪魁祸首(告诉我们是否有错误,如果有错误,哪个错误以及在哪一行):

Sub Process_current_Sheet()
    Dim WS_Count As Integer, _
        i As Integer, _
        sheet_name As String, _
        wB As Workbook

    Set wB = ActiveWorkbook

    WS_Count = wB.Worksheets.Count
    nameofworkbook = wB.Name

    ' Begin the loop.
    For i = 1 To WS_Count
        If InStr(wB.Worksheets(i).Name, "xxx") > 0 Then
            sheet_name1 = wB.Worksheets(i).Name
        End If
    Next i

End Sub