首页 > 解决方案 > 检查是否已设置工作簿变量

问题描述

我有一个带有可选工作簿参数的子。我想If检查该变量是否已通过,如果未将变量设置为活动工作表。

Sub SaveWorkbook(NewPathName As String, Optional Workbook As Workbook)
    'This is very simplified, the real thing has various other parameters

    If IsNull(Workbook) Then Set Workbook = ActiveWorkbook

    'Then loads more stuff
End Sub

我尝试过的事情包括:

IsNull(Workbook)
IsEmpty(Workbook)
Workbook = Nothing

None 触发 If 语句,因此代码尝试继续Workbook设置为 Empty,然后遇到错误。

标签: excelvba

解决方案


不要使用单词“Workbook”作为变量名。试试这样:

Sub SaveWorkbook(NewPathName As String, Optional wb As Workbook)

  If wb Is Nothing Then
    MsgBox "workbook not set"
    Set wb = ActiveWorkbook
  End If

  MsgBox wb.Name

End Sub

推荐阅读