備忘録
VBA Select Caseのショートサーキット(短絡評価)
VBAではAnd 演算子やOr演算子はショートサーキット(短絡評価)にならないというお話。
A Or Bを評価するときに条件Aが満たされていれば、条件Bの評価は行わないというのが、多くのプログラミング言語の評価方法で、ショートサーキット(短絡評価)といいます。
次の図のような状態で
と書いたとき、もし短絡評価がされるのであれば、最初の項、「Range(A2).Value = “ABC”」の部分でTrueになるので、セルB2の値はクリアされて、終了することになるはずですが、この場合そうはならない。VBAでは2番目の項も評価して結果を出すので、0で割る計算は当然エラーになります。結果として、上記の記述は実行時エラーが生じてしまいます。
ところが「Select Case」を使うと
エラーにはならず、セルB2の値をクリアして終了します。
この例では、Case節に複数の条件を設定していて、Or演算子のような条件判定になりますが、最初の項でTrueになりますので、短絡評価が行われ、次の項の評価は省略されます。
今日のポイント
Select Case~ステートメント
Case以下の条件に合致したときだけ、その次の処理を実行します。条件がtrueでないときに、次の条件を調べます。