トップページ > プログラム > 2016年01月23日 > NKVsIEv5

書き込み順位&時間帯一覧

28 位/190 ID中時間01234567891011121314151617181920212223Total
書き込み数0001100000000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net

書き込みレス一覧

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に書かれていれば使うことは出来ない。
だから単純に決められることではないので、状況を良く見てからどう作るか考えた方が良いかもね。
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
558 :デフォルトの名無しさん[sage]:2016/01/23(土) 04:07:52.25 ID:NKVsIEv5
ああごめん、よく読んだら全て評価することは知ってたのか。
だったら後はメソッドとか使う場合で片側の処理が重い時があるんで、それに気をつけておけばいいと思うよ。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。