Необязательный диапазон для Sub Excel VBA - PullRequest
1 голос
/ 14 июля 2020

У меня есть существующий макрос, который я хотел бы использовать, передав аргумент rng, но если rng не передан, макрос запрашивает rng через поле ввода, но я не могу заставить аргумент работать правильно.

Вот что у меня:

Sub Four_Hundred_Fourty_Four_Split_Sub(Optional urng)
     ' Tried (Optional urng As Range), but it didn't work, couldn't run sub without arg

If IsEmpty(urng) = False Then 'urng = Missing
    Debug.Print urng
    Set urng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
End If

Как я могу получить необязательный аргумент rng для работы в этом методе?

Ответы [ 2 ]

3 голосов
/ 14 июля 2020

Когда вы используете необязательный аргумент в процедуре, вам необходимо использовать IsMissing:

Sub Four_Hundred_Fourty_Four_Split_Sub(Optional urng)
    If IsMissing(urng) Then
        Set urng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
    End If
End Sub

С уважением,

2 голосов
/ 14 июля 2020

Сравнить переменную диапазона ни с чем:

Sub test(Optional urng As Range)
    If urng Is Nothing Then
        Set urng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
    End If
    Debug.Print urng.Address
End Sub

работает должным образом.

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