1

次のようなVBAコードを書いています。

If function_one Or Function_two Or Function_three Then
    ' Do Something
End If

したがって、関数のいずれかが真の値を返す場合、それは何かを行います。

私は、小さくて効率的なコードを書いたと思いました。

しかし、デバッグ中に、VBA は function_one を実行し、その戻り値を取得し、次に function_two を実行し、その戻り値を取得するというように 3 番目の条件を評価し、さらに続行することがわかりました。

私が達成したいのは、最初の関数が true を返すとすぐに何かを実行し、他の関数を実行してはならないということです。最初の関数が失敗した場合は、次の関数のみを呼び出す必要があります。

後で、このタスクを達成するために loop キーワードを使用しましたが、単純/スマートではありません。では、同じコードをより最適化された方法で書く方法を知っていますか。

4

2 に答える 2

2

手で短絡を実装する必要があります。

result = function_one
if not result then
   result = function_two
end if
if not result then
   result = function_three
end if
If result Then
    ' Do Something
End If

AndVBA (および従来の VB) は、 orの短絡バージョンを提供しませんOr(VB.Net では、そのようなアイテムは and として導入されましたAndAlso) OrElse

于 2013-06-11T06:22:16.543 に答える