• ベストアンサー

(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 次に、この場合はどちらの意味でしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

演算には、優先順位と言うものがあります 算数の+-×÷の四則演算と同じです 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)) と同じ意味になります

noname#128465
質問者

お礼

この場合、Andが優先されるのですね。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)#1で述べられているように プログラム言語には、(例は論理演算子)演算子には優先度というのが決められてあります。 http://www.skai.co.jp/arufonsu/vb/VB-004-01.htm たまたまVBでは、AND>ORになっている。 (2)優先度が同じ演算子の場合、左から演算される決めが多い。 上記の記事などによると、VBでは同じ優先度の演算子がないようです。同種の演算子の中だけの問題になる。 (3)作った本人が判りやすいように、読む人がわかりやすいように 括弧を使って表現すべきです。本件質問のケースで自分でも迷うようなら、自分の実現したいように、括弧をつけるべきです。 システム任せにしなくても、この件では、方法があるのだから。

noname#128465
質問者

お礼

ExcelVBAではAndの方が優先されるのですね。 ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

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

noname#128465
質問者

お礼

Andが優先されるのですね。 ありがとうございました。

関連するQ&A