我有以下代码在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
答案 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