Это старый вопрос, но этот вопрос все еще жив и здоров.Один обходной путь, который я использовал:
Dim success As Boolean ' False by default.
If myObj Is Nothing Then ' Object is nothing, success = False already, do nothing.
ElseIf Not myObj.test() Then ' Test failed, success = False already, do nothing.
Else: success = True ' Object is not nothing and test passed.
End If
If success Then
' Do stuff...
Else
' Do other stuff...
End If
Это в основном инвертирует логику в исходном вопросе, но вы получите тот же результат.Я думаю, что это более чистое решение, чем другие, которые используют только операторы If
.Решение, использующее оператор Select
, является умным, но если вам нужна альтернатива, использующая только операторы If
, я думаю, что это тот, который нужно использовать.