論理積(And)論理和(Or)と真(True)偽(False)の判定
And演算子、Or演算子は、2つの数式内のビット単位の比較を行います、
Trueとは何か、Falseとは何か
CInt(False) ・・・ 0
Falseとは0
Hex(False) ・・・ 0
Hex(False) ・・・ 0なので、Trueと同じ桁数で表すと、0000 0000 0000 0000
論理積(And)
値1 | 値2 | 結果 |
TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE |
FALSE | TRUE | FALSE |
FALSE | FALSE | FALSE |
通常はこのように表現されますが、
Falseとは0 ・・・ 0000 0000 0000 0000
値1 | 値2 | 結果 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
全てのビットにおいて、この比較を行い結果を返します。
True(1111 1111 1111 1111) And False(0000 0000 0000 0000) ・・・ False(0000 0000 0000 0000)
False(0000 0000 0000 0000) And True(1111 1111 1111 1111) ・・・ False(0000 0000 0000 0000)
False(0000 0000 0000 0000) And False(0000 0000 0000 0000) ・・・ False(0000 0000 0000 0000)
010(2)
010(2)
論理和(Or)
値1 | 値2 | 結果 |
TRUE | TRUE | TRUE |
TRUE | FALSE | TRUE |
FALSE | TRUE | TRUE |
FALSE | FALSE | FALSE |
通常はこのように表現されますが、
Falseとは0 ・・・ 0000 0000 0000 0000
値1 | 値2 | 結果 |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
全てのビットにおいて、この比較を行い結果を返します。
True(1111 1111 1111 1111) And False(0000 0000 0000 0000) ・・・ True(1111 1111 1111 1111))
False(0000 0000 0000 0000) And True(1111 1111 1111 1111) ・・・ True(1111 1111 1111 1111)
False(0000 0000 0000 0000) And False(0000 0000 0000 0000) ・・・ False(0000 0000 0000 0000)
010(2)
010(2)
Ifステートメントにおける真偽の判定
If 条件式 Then
真(True)の場合
Else
偽(False)の場合
End If
このように表現されることが多いですが、
Falseとは0
例.指定のフルパスがフォルダかの判定
strDir = Dir(パス, vbDirectory)
Do While strDir <> ""
If strDir <> "." And strDir <> ".." Then
If GetAttr(パス & strDir) And vbDirectory Then
Debug.Print strDir 'strDirはフォルダです
End If
End If
strDir = Dir()
Loop
概ね、このような記述をしますが、
vbDirectory ・・・ 16
2進数なら、
10010 And 10000
ほとんどの場合、And、Orでのビット単位の比較まで意識する必要はないでしょう。
あれっ、このIfステートメントは・・・
と思ったら、以上の事を思い出してみて下さい。
同じテーマ「マクロVBA技術解説」の記事
プログラミングの基本~ロジックの組み立て
実は奥が深いIfステートメント
論理積(And)論理和(Or)と真(True)偽(False)の判定
If条件式のいろいろな書き方:TrueとFalseの判定とは
VBAでの括弧()の使い方、括弧が必要な場合
VBAにおけるピリオドとカンマとスペースの使い方
変数とプロシージャーの命名について
文字列置換の基本と応用(Replace)
データクレンジングと名寄せ
ForとIfのネストこそがVBAの要点
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBA技術解説
- 論理積(And)論理和(Or)と真(True)偽(False)の判定
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。