Проверьте, установлена ​​ли переменная Workbook - PullRequest
0 голосов
/ 06 марта 2020

У меня есть подпрограмма с необязательным аргументом рабочей книги. Я хочу, чтобы 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

Ничего не вызывает оператор If, поэтому код пытается продолжить с Workbook, установленным в значение Empty, и затем обнаруживает ошибки.

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Не используйте слово «Рабочая книга» в качестве имени переменной. Попробуйте это так:

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
1 голос
/ 06 марта 2020

В VBA функция isMissing работает, только если вы объявите параметр как Variant. Смотрите в описании

Это должно работать:

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

    If isMissing(Workbook) Then Set Workbook = ActiveWorkbook

    'Then loads more stuff
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...