- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
557 :デフォルトの名無しさん[sage]:2016/01/23(土) 03:58:47.08 ID:NKVsIEv5 - >>533
これは単純に見えて根深い問題で例えば FuncA、FuncBというBooleanの戻り値を持つメソッドがあったとして If FuncA then If FuncB Then 〜 End If End If を If FuncA And FuncB then 〜 End If とした場合これはあまり変わらないけど、もしFuncBで評価を求めるのに時間が掛かる場合、 Dim isDo As Boolean isDo = True If Not FancA Then isDo = False Else Not FancB Then isDo = False End If If isDo then 〜 End if とかにした方が速い時がある。つまり、FancAで既に評価対象から外れた場合、FancBの評価を見る必要はない。 .NetにはOrElseやAndAlsoという、片方の評価が既に条件を満たしていればもう片方の評価はしないという命令があるからそれを使うけど、 VBAのAndやOrはどちらも評価してしまうため、場合によっては使用しないで上記のような回りくどい書き方をした方が速い場合もある。 もちろん、この方法は評価を求める以外必ず実行しなければいけない処理がFancBに書かれていれば使うことは出来ない。 だから単純に決められることではないので、状況を良く見てからどう作るか考えた方が良いかもね。
|