出现错误“对象variables或块variables未设置”

我创build了一个Excel加载项,它确定了ActiveSheetActiveWorkbook的名称。 我使用的代码如下。 当我运行加载项时,在“variables集”消息框之后显示上述错误。 但是,当我在macros运行它是正常工作。 我不明白加载项正在发生什么。 任何人都可以帮助我吗?

 Sub sheetvalues() Dim bk As Workbook, sht1 As Worksheet, sht2 As Worksheet, sht3 As Worksheet Dim book As String, sht As String, i As Integer, j As Integer Dim att(1 To 4) As String, att_col(1 To 4) As Integer MsgBox ("variables set") book = ActiveWorkbook.Name sht = ActiveSheet.Name MsgBox ("names set") Set bk = Workbooks.Add With bk .Title = "MissingValues" .SaveAs Filename:="MissingValues.xls" End With Set sht1 = bk.Sheets.Add sht1.Name = "EndOne" Set sht2 = bk.Sheets.Add sht2.Name = "EndTwo" Set sht3 = bk.Sheets.Add sht3.Name = "EndThree" MsgBox (book & " " & sht) MsgBox ("completed") End Sub 

导致此问题的常见问题是忘记使用“Set”将值分配给variables。

就像@TimWilliams说的那样,如果你的加载项是加载的唯一的工作簿,你会得到这个错误。 在这种情况下,没有活动的工作簿,你的代码失败了

 book = ActiveWorkbook.Name 

您可以通过添加以下几行来检查是否存在工作簿:

 Set bk = Application.ActiveWorkbook If bk Is Nothing Then MsgBox ("No workbook open. Creating a new one.") Set bk = Workbooks.Add(xlWBATWorksheet) Set sht1 = bk.ActiveSheet End If 

所以你最终:

 Sub sheetvalues() Dim bk As Workbook, sht1 As Worksheet, sht2 As Worksheet, sht3 As Worksheet Dim book As String, sht As String, i As Integer, j As Integer Dim att(1 To 4) As String, att_col(1 To 4) As Integer MsgBox ("variables set") Set bk = Application.ActiveWorkbook If bk Is Nothing Then MsgBox ("No workbook open. Creating a new one.") Set bk = Workbooks.Add(xlWBATWorksheet) Set sht1 = bk.ActiveSheet End If book = ActiveWorkbook.Name sht = ActiveSheet.Name MsgBox ("names set") Set bk = Workbooks.Add With bk .Title = "MissingValues" .SaveAs Filename:="MissingValues.xls" End With Set sht1 = bk.Sheets.Add sht1.Name = "EndOne" Set sht2 = bk.Sheets.Add sht2.Name = "EndTwo" Set sht3 = bk.Sheets.Add sht3.Name = "EndThree" MsgBox (book & " " & sht) MsgBox ("completed") End Sub 

检查Excel中的工作簿是否询问您是否要打开写保护版本。 我认为在提出这个问题的时候,工作手册不被认为是主动的,也不是其他的