VBA运行时错误“91”:对象variables或未设置块variables

我在这里是全新的,尽pipe我对Excel非常方便,但对于VBA我有最less的知识。 我有一个在工作中使用的Excel程序放在我的腿上,因为它开始抛出多个错误,我是这个工作的“最好的”人:(

我已经search了这个最优秀的论坛和其他几个人,并且已经能够解决我的大部分问题,但现在出现了一个新的错误,我不知道为什么。

运行时错误“91”:对象variables或块variables未设置

当我启动程序时popup。

debugging器中突出显示的区域是:

If ActiveWorkbook.Name = wbkTT Then 

我正在发布下面的代码部分

非常感谢您的帮助!

 ' TTV2.xlam version 5/15/12 14:00 Const wbkTT As String = "Time Tracker ver2.xlsm" Const RibbonxAddin As String = "TTV2.xlam" Option Explicit Private Sub Workbook_Open() Dim strName As String Dim strPath As String Dim strNewShow As String Dim strDate As String Dim strTime As String Dim strDepartment As String Dim strOS As String Dim strVersion As String Dim dtFormat As String Dim myAddIn As AddIn Dim wbkDateOrder As Integer Dim timedropdown As Boolean strVersion = Application.Version strOS = Application.OperatingSystem dtFormat = DateFormat newTTwbk = wbkTT If strVersion < 14 Then MsgBox ("You are running an outdated version of Excel." & Chr(10) & _ "Time Tracker will only run on MS Excel 2011 for Mac") ActiveWorkbook.Close Exit Sub Else wbkDateOrder = Application.International(xlDateOrder) strTime = Format(time, "hhmm") strDate = Format(Date, "mmdd") If ActiveWorkbook.Name = wbkTT Then strName = Replace(Workbooks(wbkTT).Sheets("Show Info").Range("A2").Value, " ", "") ActiveWorkbook.Sheets("Preferences").Range("D2:D3").NumberFormat = dtFormat ActiveWorkbook.Sheets("Data").Range("B:B").NumberFormat = dtFormat End If ' AddMenu ActiveWorkbook.Sheets("Preferences").visible = True timedropdown = ActiveWorkbook.Sheets("Preferences").Range("E3") If timedropdown Then ActiveWorkbook.Sheets("Data").Range("G:L").Validation.Delete ActiveWorkbook.Sheets("Data").Range("G:L").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Time" Else ActiveWorkbook.Sheets("Data").Range("G:L").Validation.Delete End If If ActiveWorkbook.Sheets("Show Info").Range("A2").Value = "TTV2" Then If strOS Like "*Win*" Then strPath = ThisWorkbook.Path & "\" Else strPath = ThisWorkbook.Path & ":" End If strName = InputBox(Prompt:="Show Name please.", Title:="ENTER SHOW NAME", Default:="Show Name Here") strDepartment = InputBox(Prompt:="Enter your Department:", Title:="ENTER DEPARTMENT", Default:="Department Here") showcrewform If strName = "Show Name Here" Or strName = vbNullString Then Exit Sub Else ActiveWorkbook.Sheets("Show Info").Range("A2").Value = strName ActiveWorkbook.Sheets("Show Info").Range("B2").Value = strDepartment If Not strOS Like "*Mac*" Then strNewShow = strPath & strName & "_" & strDate & "_" & strTime & ".xlsm" Else strNewShow = strPath & strName & "_" & strDate & "_" & strTime & ".xlsm" End If ActiveWorkbook.SaveAs strNewShow, FileFormat:=xlOpenXMLWorkbookMacroEnabled MsgBox ("You are now working on the file: " & strNewShow) loadwbkName ResetDataSheet Exit Sub End If End If If strOS Like "*Mac*" Then AddMenu End If ResetDataSheet End If End Sub 

添加了一些缺less的声明和End If语句…我没有得到任何运行时错误与下面。 (编辑:增加新的代码)

 ' TTV2.xlam version 5/15/12 14:00 Const wbkTT As String = "Time Tracker ver2.xlsm" Const RibbonxAddin As String = "TTV2.xlam" 'ADDED DECLARATIONS Dim dtFormat As String Dim DateFormat Dim newTTwbk Option Explicit Private Sub Workbook_Open() Dim strName As String Dim strPath As String Dim strNewShow As String Dim strDate As String Dim strTime As String Dim strDepartment As String Dim strOS As String Dim strVersion As String Dim dtFormat As String Dim myAddIn As AddIn Dim wbkDateOrder As Integer Dim timedropdown As Boolean ' ADDED DECLARATIONS Dim WB As Workbook 'ADDED CODE Set WB = ActiveWorkbook strVersion = Application.Version strOS = Application.OperatingSystem dtFormat = DateFormat newTTwbk = wbkTT If strVersion < 14 Then MsgBox ("You are running an outdated version of Excel." & Chr(10) & _ "Time Tracker will only run on MS Excel 2011 for Mac") WB.Close 'SAVE? (TRUE/FALSE) Exit Sub Else wbkDateOrder = Application.International(xlDateOrder) strTime = Format(Time, "hhmm") strDate = Format(Date, "mmdd") If WB.Name = wbkTT Then strName = Replace(Workbooks(wbkTT).Sheets("Show Info").Range("A2").Value, " ", "") WB.Sheets("Preferences").Range("D2:D3").NumberFormat = dtFormat WB.Sheets("Data").Range("B:B").NumberFormat = dtFormat End If 'AddMenu WB.Sheets("Preferences").Visible = True timedropdown = WB.Sheets("Preferences").Range("E3") If timedropdown Then WB.Sheets("Data").Range("G:L").Validation.Delete WB.Sheets("Data").Range("G:L").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Time" Else WB.Sheets("Data").Range("G:L").Validation.Delete End If If WB.Sheets("Show Info").Range("A2").Value = "TTV2" Then If strOS Like "*Win*" Then strPath = ThisWorkbook.Path & "\" Else strPath = ThisWorkbook.Path & ":" End If strName = InputBox(Prompt:="Show Name please.", Title:="ENTER SHOW NAME", Default:="Show Name Here") strDepartment = InputBox(Prompt:="Enter your Department:", Title:="ENTER DEPARTMENT", Default:="Department Here") 'showcrewform If strName = "Show Name Here" Or strName = vbNullString Then Exit Sub Else WB.Sheets("Show Info").Range("A2").Value = strName WB.Sheets("Show Info").Range("B2").Value = strDepartment If Not strOS Like "*Mac*" Then strNewShow = strPath & strName & "_" & strDate & "_" & strTime & ".xlsm" Else strNewShow = strPath & strName & "_" & strDate & "_" & strTime & ".xlsm" End If WB.SaveAs strNewShow, FileFormat:=xlOpenXMLWorkbookMacroEnabled MsgBox ("You are now working on the file: " & strNewShow) 'loadwbkName 'ResetDataSheet Exit Sub End If End If If strOS Like "*Mac*" Then 'AddMenu End If 'ResetDataSheet End If End Sub