Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15531 / 76734 ←次へ | 前へ→

【66679】Re:if文による条件わけ
回答  Hirofumi  - 10/9/24(金) 11:32 -

引用なし
パスワード
   >If i <> 12 Or i <> 13 Then
>〜処理〜
>end if
>
>If CB(14) <> 0 Or CB(15) <> 0 Then
>〜処理〜
>end if
>
>上記二つの意味することは違うのでしょうか。
>CB(14)が0ではない、もしくはCB(15)が0ではない場合処理に入ってくれるのですが違いは何なのでしょうか。
>ちなみに
>
>If Not(CB(14) = 0 Or CB(15) = 0) Then
>〜処理〜
>end if
>
>では希望する処理とは違いました。
>
>よろしくお願いいたします。

論理演算子のHelpを見ましたか?

先ずIf文に就いて

If 評価式 Then
  処理A
Else
  処理B
Enf if

Ifは、評価式が真(True)の時、Then節の処理Aが実行され
評価式が偽(False)の時、Else節の処理Bが実行されます

比較演算子

= :(等しい)
<>:(等しくない)

等が有り、右項と左項を比較し真(True)または、偽(False)を返します

Or論理演算子に就いて

結果 = 式1 Or 式2

真偽表

式1     式2     結果
True     True     True
True     False    True
False    True     True
False    False    False

と成ります

If i <> 12 Or i <> 13 Then は

i=12の時
式   結果
i <> 12 False
i <> 13 True

因って、上記真偽表から「i <> 12 Or i <> 13」
の結果はTrueに成ります
因ってIf文はThen節が実行されます

同様に
i=13の時
式   結果
i <> 12 True
i <> 13 False

真偽表より結果はTrue
Then節が実行

同様に

i=14の時
式   結果
i <> 12 True
i <> 13 True

真偽表より結果はTrue
Then節が実行

同様に
12、13以外の結果は全てTrue成る

詰まり
結果がFalse(Else節の実行)に成りえない


If CB(14) <> 0 Or CB(15) <> 0 Then は

CB(14)が0以外、CB(15)が0以外の時
式      結果
CB(14) <> 0  True
CB(15) <> 0  True

因って、上記真偽表から「CB(14) <> 0 Or CB(15) <> 0」
の結果はTrueに成ります
因ってIf文はThen節が実行されます

同様に

CB(14)が0、CB(15)が0の時
式      結果
CB(14) <> 0  False
CB(15) <> 0  False

因って、上記真偽表から「CB(14) <> 0 Or CB(15) <> 0」
の結果はFalseに成ります
因ってIf文はElse節が実行されます

同様に

CB(14)が0以外、CB(15)が0の時
式      結果
CB(14) <> 0  True
CB(15) <> 0  False

因って、上記真偽表から「CB(14) <> 0 Or CB(15) <> 0」
の結果はTrueに成ります
因ってIf文はThen節が実行されます

同様に

CB(14)が0、CB(15)が0以外の時もTrueに成り
Then節が実行されます

次に
Not論理演算子に就いて
Notは否定ですので、評価式の結果を反転させます
詰まり、評価式の値がTrueならFalseに
FalseならTrueにします

そこで
If Not(CB(14) = 0 Or CB(15) = 0) Then は

CB(14)が0以外、CB(15)が0以外の時
式      結果
CB(14) = 0  False
CB(15) = 0  False

因って、上記真偽表から「CB(14) = 0 Or CB(15) = 0」
の結果はFalseに成りますが、Notで否定しているので結果はTrueに成ります
因ってIf文はThen節が実行されます

同様に

CB(14)が0、CB(15)が0の時
式      結果
CB(14) = 0  True
CB(15) = 0  True

因って、上記真偽表から「CB(14) = 0 Or CB(15) = 0」
の結果はTrueに成りますが、Notで否定しているので結果はFalseに成ります
因ってIf文はElse節が実行されます

同様に

CB(14)が0以外、CB(15)が0の時
式      結果
CB(14) = 0  False
CB(15) = 0  True

因って、上記真偽表から「CB(14) = 0 Or CB(15) = 0」
の結果はTrueに成りますが、Notで否定しているので結果はFalseに成ります
因ってIf文はElse節が実行されます

同様に

CB(14)が0、CB(15)が0以外の時も最終結果はFalseに成り
Else節が実行されます

2 hits

【66671】if文による条件わけ lenient 10/9/23(木) 17:02 質問
【66673】Re:if文による条件わけ かみちゃん 10/9/23(木) 17:14 発言
【66674】Re:if文による条件わけ Hirofumi 10/9/23(木) 17:52 回答
【66676】Re:if文による条件わけ Hirofumi 10/9/24(金) 8:09 発言
【66677】Re:if文による条件わけ lenient 10/9/24(金) 9:28 質問
【66679】Re:if文による条件わけ Hirofumi 10/9/24(金) 11:32 回答
【66680】Re:if文による条件わけ lenient 10/9/24(金) 12:00 お礼

15531 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free