VBAのBoolean型を使って真偽値を扱う方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Booleanの概要

真偽値を管理する VBAの予約語

Boolean

概要 Boolean は、VBAで真偽値(True または False)を扱うデータ型です。条件分岐(If 文など)やフラグの管理に使用されます。

  • True(真)または False(偽)の2値のみを扱う。
  • 条件分岐(If文)での判定に便利。
  • 変数や関数の戻り値に使うことで、コードの可読性を向上させる。

Boolean型の基本的な使い方

以下の例では、Boolean 型の変数を使って条件を判定しています。

Sub BooleanExample()
    Dim isEven As Boolean
    Dim number As Integer
    number = 10
    
    isEven = (number Mod 2 = 0) ' 偶数ならTrue
    
    If isEven Then
        MsgBox "この数は偶数です"
    Else
        MsgBox "この数は奇数です"
    End If
End Sub

解説:

  • Dim isEven As Boolean: 真偽値を格納する変数を定義。
  • isEven = (number Mod 2 = 0): number が偶数なら True、奇数なら False
  • If isEven Then: isEvenTrue の場合のみメッセージを表示。

関数の戻り値にBooleanを使う

Boolean 型を関数の戻り値にすると、条件の判定をわかりやすくできます。

Function IsPositive(num As Integer) As Boolean
    IsPositive = (num > 0)
End Function

Sub CheckNumber()
    If IsPositive(5) Then
        MsgBox "正の数です"
    Else
        MsgBox "ゼロまたは負の数です"
    End If
End Sub

解説:

  • Function IsPositive(num As Integer) As Boolean: 数値が正であるかを判定する関数。
  • IsPositive = (num > 0): 正の数なら True、そうでなければ False を返す。
  • CheckNumber でこの関数を使い、数値の判定を行う。

Booleanの値を反転する

Boolean 型の値を Not 演算子で反転することができます。

Sub ToggleBoolean()
    Dim isOn As Boolean
    isOn = True
    
    MsgBox "元の値: " & isOn
    isOn = Not isOn ' 反転
    MsgBox "反転後: " & isOn
End Sub

解説:

  • isOn = True: 変数を True に設定。
  • isOn = Not isOn: 値を反転(TrueFalseFalseTrue)。

Booleanの値の数値的な扱い

Boolean 型の True は数値の -1False0 として扱われます。

Sub BooleanToNumber()
    Dim isTrue As Boolean
    isTrue = True
    
    MsgBox "True の数値表現: " & CInt(isTrue)
    isTrue = False
    MsgBox "False の数値表現: " & CInt(isTrue)
End Sub

解説:

  • True-1 として扱われる。
  • False0 となる。
  • 条件式では True = -1 という特性を考慮する必要がある。

注意点

  • 数値とBooleanを混在させない: Boolean 型は True = -1False = 0 なので、数値演算と混在すると誤動作の原因になることがある。
  • 比較演算の結果はBooleanになる: 例えば (5 > 3) のような式は True を返す。
  • 未初期化のBoolean変数はFalse: Dim flag As Boolean の状態では、自動的に False になる。

よくある質問

Q: Boolean 型の変数を初期化しないとどうなりますか?
A: VBAでは Boolean 型の変数はデフォルトで False になります。
Q: Boolean を数値として扱うことはできますか?
A: できますが、True = -1False = 0 であることに注意が必要です。
Q: If 文の条件判定で Boolean 変数を直接使えますか?
A: はい、If isEven Then のように直接記述できます。

まとめ

  • Boolean 型は True または False のみを持つデータ型。
  • 条件判定(If 文など)やフラグの管理に最適。
  • 関数の戻り値として使うとコードの可読性が向上する。
  • Not を使うと値を反転できる。
  • 数値と混在させると意図しない動作を引き起こす可能性があるので注意。