• ベストアンサー

Excel VBA 条件分岐のスマートな書き方

すみません。すごく初歩的な質問なのですが、 Excel VBAで以下のような条件分岐をさせたい場合、 もっとスマートな書き方できませんか? 命題 AとBに対して if not A then 処理X end if if not B then 処理Y end if if not(A and B) then 処理Z(この処理の中には処理Xと処理Yの結果が含まれている) end elseifを使った書き方が思い浮かばず、 同じことを何度も書いているようで、もっと上手に書けそうな気がしまして・・・ どなたかご教示頂けたらと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • ubku
  • ベストアンサー率37% (227/608)
回答No.2

これ以上簡単に書くことはできないと思います。 なぜならば、この例の場合、3つの If は互いに独立していて、どんな場合にも判断を必要としています。どれも省略することはできません。処理 X を行ったかどうかは、処理 Y には関係ありませんよね。 そもそも Else If を多用した構文はたいていの場合非常に読みにくくバグの温床になりやすいです。 この場合は質問者さんのロジックが一番分かりやすいと思います。 蛇足ですが、自分は Not (A and B) とは書かず (A and B ) = False と書きます。代入と間違えやすく嫌う人もいるかもしれませんが・・・。

naitosato
質問者

お礼

ありがとうございました。 納得しました。 else if の考え方、勉強になります。 まだまだ初心者なもので、できるだけシンプルで可読性の高い プログラムにしようと努力していますが、 こういったことを一度考え出すと沼にはまってしまい、 抜け出せなくなり、困り果て、このような場をお借りました。 早々にご回答頂き有難う御座いました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

not A と not B が両方とも起こることがあり得るなら、それ以上は簡単にはならないと思います。 あと、3つ目の条件は、 if not A or not B then と書いた方がわかりやすいでしょう。

naitosato
質問者

お礼

ありがとうございました。 3つ目の条件の書き方、参考にさせて頂きます。 確かにわかりやすいですね。 早々にご回答頂き有難う御座いました。

関連するQ&A