对象variables或块variables未设置试图从CommandButton运行macros

我已经做了一些工作簿的一些工作簿,我想更新一些不同的驱动器(因为他们依靠我的工作簿中的INDIRECT),只需打开文件,并在扩展更新所有值(希望)。 我试过的是通过开发人员选项卡和ActiveX控件实现一个CommandButton。 然后我右键单击这个button和“查看代码”,我简单地得到了“Private Sub CommandButton21_Click”和“End Sub”,我收集意味着“button的名称”是CommandButton21。

我的代码如下所示:

Private Sub CommandButton21_Click() Dim WbookCheck As Workbook Dim sPath As String, sFile As String On Error Resume Next sPath = "C:\Pathtofile" sFile = sPath & "filename.xlsx" Set WbookCheck = Workbooks(sFile) On Error GoTo 0 If CommandButton21.Value = True Then If WbookCheck Is Nothing Then 'Closed Workbooks.Open Filename:=sFile, ReadOnly:=True ElseIf Application.ActiveWorkbook.Name = WbookCheck.Name Then WbookCheck.Close SaveChanges:=True Else WbookCheck.Activate End If Else WbookCheck.Close True End If End Sub 

有人有这方面的线索吗?

我不知道你为什么要testing一个commandbutton的值,但它会是False,所以试图closures一个从未分配的工作簿variables将会失败。 你应该跳过价值testing并使用:

 Private Sub CommandButton21_Click() Dim WbookCheck As Workbook Dim sPath As String, sFile As String On Error Resume Next sPath = "C:\Pathtofile\" sFile = sPath & "filename.xlsx" Set WbookCheck = Workbooks(sFile) On Error GoTo 0 If WbookCheck Is Nothing Then 'Closed Workbooks.Open Filename:=sFile, ReadOnly:=True ElseIf Application.ActiveWorkbook.Name = WbookCheck.Name Then WbookCheck.Close SaveChanges:=True Else WbookCheck.Activate End If End Sub