- ベストアンサー
(Excel VBA)and,orについて
andとorを同時に使用する場合について質問です。 Case1) if A=1 and B=1 or C=1 then これは「Aが1かつBが1であるか、又はCが1であれば」という意味か 「Aが1であり、かつBが1であるか又はCが1であれば」という意味なのか どちらでしょうか。 Case2) if A=1 or B=1 and C=1 then 次に、この場合はどちらの意味でしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
演算には、優先順位と言うものがあります 算数の+-×÷の四則演算と同じです Visual Basic における演算子の優先順位 http://msdn2.microsoft.com/ja-jp/library/fw84t893(VS.80).aspx > if A=1 and B=1 or C=1 then ((A=1) And (B=1)) Or (C=1) と同じ意味で > if A=1 or B=1 and C=1 then (A=1) Or ((B=1) And (C=1)) と同じ意味になります
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)#1で述べられているように プログラム言語には、(例は論理演算子)演算子には優先度というのが決められてあります。 http://www.skai.co.jp/arufonsu/vb/VB-004-01.htm たまたまVBでは、AND>ORになっている。 (2)優先度が同じ演算子の場合、左から演算される決めが多い。 上記の記事などによると、VBでは同じ優先度の演算子がないようです。同種の演算子の中だけの問題になる。 (3)作った本人が判りやすいように、読む人がわかりやすいように 括弧を使って表現すべきです。本件質問のケースで自分でも迷うようなら、自分の実現したいように、括弧をつけるべきです。 システム任せにしなくても、この件では、方法があるのだから。
お礼
ExcelVBAではAndの方が優先されるのですね。 ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
Andを先に見ます。 だから、 Case1 If (A = 1 And B = 1) Or C = 1 Case2 If A=1 Or (B=1 And C=1) ということです。 ためしてみました。 Sub test01() Set A = Range("A1") Set B = Range("B1") Set C = Range("C1") If A = 1 And B = 1 Or C = 1 Then x = True Else x = False End If MsgBox x End Sub
お礼
Andが優先されるのですね。 ありがとうございました。
お礼
この場合、Andが優先されるのですね。 ありがとうございました。