AndAlso/OrElse в VBA

Я пытаюсь получить отложенные вычисления с 'И' в моем макросе Excel путем выполнения следующего:

If Not myObject Is Nothing *And* myObject.test() Then
    'do something'
Else
    'do something else'
End If

Я знаю, что отложенные вычисления существуют в VB.NET как AndAlso и OrElse но ничто не может найти подобным в VBA. Если отложенные вычисления не существуют в VBA, что лучший способ состоит в том, чтобы структурировать код так, чтобы это оценило способ, которым я ожидаю?

42
задан Jake88 16 December 2014 в 23:39
поделиться

2 ответа

Единственное короткое замыкание (своего рода) происходит в рамках оценки выражения Case , поэтому следующий неуклюжий оператор делает то, о чем я думаю, вы спрашиваете:

Select Case True
    Case (myObject Is Nothing), Not myObject.test()
        MsgBox "no instance or test == false"
    Case Else
        MsgBox "got instance & test == true"
    End Select
End Sub
51
ответ дан 26 November 2019 в 23:50
поделиться
If Not myObject Is Nothing Then
    If myObject.test() Then
        'do something'
    End If
Else
   'do something else'
End If

Думаю, так и надо делать.

Редактировать

Может быть так

Dim bTestsFailed as Boolean
bTestsFailed = False

If Not myObject Is Nothing Then
    If myObject.test() Then
        'do something'
    Else
        bTestsFailed = True
    End If
Else
   bTestsFailed = True
End If

If bTestsFailed Then
    'do something else
End If

Разве VBA не замечательный?

0
ответ дан 26 November 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: