たとえば次のようなコードでは「質問1」のメッセージボックスで「いいえ」を選んだとしても「質問2」が表示されてしまいます。これはAnd演算の1番目のオペランドがFalseに評価された場合でも2番目のオペランドが実行されるからです。
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _ And (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then MsgBox("両方Yesです。") End If
しかし次のようにAndの代わりにAndAlsoを使えば、「質問1」で「いいえ」を選んだときに「質問2」が表示されることがなくなります。AndAlso演算は1番目のオペランドがFalseに評価されるとすぐにFalseを返すためです。
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _ AndAlso (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then MsgBox("両方Yesです。") End If
Orにおいて同様のことを行うには、Orの代わりにOrElseを使います。次の例では、「質問1」で「Yes」がクリックされるとすぐに「Yesがクリックされました。」と表示され、「No」がクリックされた時のみ「質問2」が表示されます。
If (MsgBox("質問1", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) _ OrElse (MsgBox("質問2", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then MsgBox("Yesがクリックされました。") End If
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。