こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAでif文にorを使う場合の仕様

http://www.relief.jp/itnote/archives/vba-if-or.php


このページにも書かれてあるのですが、

Sub textss()
aaa = 2


If aaa = 0 Or 1 Then

bbb = 1

ElseIf aaa = 2 Then



bbb = 2

End If

ccc = bbb


End Sub


を実行すると
cccには2が代入されそうなのですが、実際には1が代入されてしまいます。

If aaa = 0 Or aaa = 1 Then
と入力する必要があります。

それでは、
If aaa = 0 Or 1 Then

とした時、プログラムではどういう処理がなされているのでしょうか?

投稿日時 - 2014-05-21 21:40:23

QNo.8605192

すぐに回答ほしいです

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

>If aaa = 0 Or 1 Then

orの両端の評価をします。

ifとは、thenまでの値により分岐する文です。
値はブール型として真(True)と偽(False)により分岐しますが、実はブール型は

http://msdn.microsoft.com/ja-jp/library/wts33hb3.aspx

0 は偽(False)、それ以外は真(True)と書くこともできます。

>aaa = 0
は比較演算子でFalseを返しますが、
>1
は1を返します。言い換えれば0以外なので真(True)です。
Orの条件の一方を真(True)とするならaaaの値にかかわらず真(True)です。

なのでcccには1が代入されます。

投稿日時 - 2014-05-21 22:03:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

if 式1 or 式2 then

と書けば、見えてくると思いますよ。さすれば、

式1は、 aaa=0 で
式2は、 1

だと言うことが判ります。

式1が成立するのは、 aaa の値が 0 の場合のみ。
式2が成立するのは、常にです。なぜなら、式が1だからです。

イミディエイトウインドウで、1が何を意味するのかを調べて表示している画像を添付しています。そこには、

?CBool(1)
True

つまり、1と書いた式は、常に真であるということです。

以上で、理解してもらえたかな。

投稿日時 - 2014-05-21 22:26:44

あなたにオススメの質問