VBAテクニック集 VBA一覧 変数・知識 文法・構文

【VBA】Boolean型とは?True/Falseの使い方と実務での注意点を徹底解説

Excel VBAでコードを書いていると、TrueFalse という値を目にする機会は非常に多くあります。しかし、「Boolean型とは何か」「なぜ数値や文字列ではなくBooleanを使うのか」を明確に説明できる方は意外と多くありません。

実務では、Boolean型を正しく使えるかどうかで、コードの読みやすさ・処理速度・バグの発生率が大きく変わります。逆に、Boolean型を曖昧に扱っていると、「条件が分かりにくい」「なぜか判定がおかしい」といった問題に直面しやすくなります。

この記事では、Boolean型の基本から、If文での使い方、数値との違い、実務でよくある落とし穴、設計レベルでの考え方まで、体系的に解説します。

目次

✅ 【VBA】Boolean型とは?True/Falseだけを扱う論理型

Boolean型とは、True(真)または False(偽)の2つの値だけを扱うデータ型です。

・Boolean型の基本宣言

Dim isCompleted As Boolean

この変数には、

  • True
  • False

のどちらかしか入りません。


・Boolean型の役割

Boolean型は主に、次のような用途で使われます。

  • 条件を満たしているかどうか
  • 処理を続けるかどうか
  • 成功・失敗の判定
  • ON / OFF の状態管理

つまり、「Yes / No」「実行する / しない」 を表現するための型です。


✅ 【VBA】Boolean型を使わないと起こる問題

初心者の方のコードでは、次のような書き方をよく見かけます。

Dim result As String
result = "OK"

あるいは、

Dim flg As Integer
flg = 1   ' 1 = True, 0 = False のつもり

このような書き方でも動作はしますが、実務では多くの問題を引き起こします。


・問題点1:意味が分かりにくい

If flg = 1 Then

これが「何の条件」なのか、コードだけでは分かりません。


・問題点2:誤った値が入りやすい

flg = 2

数値型や文字列型では、True/False以外の値が簡単に入ってしまいます。


・問題点3:条件分岐が複雑になる

If result = "OK" Then

文字列比較はタイプミスや表記ゆれの原因になります。


✅ 【VBA】Boolean型を使う最大のメリット

Boolean型を使うメリットは非常に大きく、特に実務では次の点が重要です。

  • 条件の意味が一目で分かる
  • True / False 以外が入らない
  • If文がシンプルになる
  • 処理速度が速い
  • バグを未然に防げる

・例:意味が明確なBoolean変数

Dim isSuccess As Boolean
Dim hasError As Boolean
Dim needUpdate As Boolean

これらは、変数名と型だけで役割が伝わる理想的な形です。


✅ 【VBA】Boolean型の基本的な使い方

・True / False を直接代入する

isCompleted = True
isCompleted = False

・条件式の結果を代入する

isCompleted = (total > 100)

この場合、

  • total が 100 より大きい → True
  • それ以外 → False

が自動的に代入されます。


・If文での基本使用例

If isCompleted Then
    MsgBox "処理は完了しています"
End If

Boolean型は、If文の条件としてそのまま使えるのが特徴です。

参考:【VBA】If文の複数分岐を実現する方法|効率的な条件分岐と実務応用




✅ 【VBA】If文とBoolean型の正しい書き方

初心者がよくやってしまう間違いがこちらです。

If isCompleted = True Then

これは動作しますが、冗長で推奨されません


・正しい書き方

If isCompleted Then

・Falseの場合の判定

If Not isCompleted Then

Not を使うことで、条件が非常に読みやすくなります。

参考:【VBA】IsEmpty / IsNull / IsNothing の違いを徹底解説|未初期化・Null・Nothingを正しく見分けよう


✅ 【VBA】Boolean型と比較演算子の関係

比較演算子(=, <>, >, < など)は、結果として Boolean型 を返します。

・比較の例

Dim isOver As Boolean
isOver = (score >= 80)

このように、

  • 比較結果 → Boolean
  • 判定結果 → True / False

という流れになります。


・複数条件を組み合わせる

Dim canExecute As Boolean
canExecute = (isLogin And Not hasError)

Boolean型は、論理演算子(And / Or / Not)との相性が非常に良いです。

参考:【VBA】IF文のandとorを組み合わせた複数条件


✅ 【VBA】Boolean型の内部的な扱い(数値との関係)

VBAでは、Boolean型は内部的に次のように扱われます。

  • True → -1
  • False → 0

・確認例

Debug.Print True + True   ' -2
Debug.Print False + 1    ' 1

・この仕様による注意点

If isCompleted = 1 Then

この条件は、意図通りに動作しない場合があります。


・実務でのルール

  • Booleanは Booleanとして扱う
  • 数値との比較は行わない

これを徹底するだけで、判定ミスは大幅に減ります。


✅ 【VBA】Boolean型とVariantの違い

Dim flg As Variant
flg = True

この書き方も可能ですが、推奨されません


・Variantを使うデメリット

  • 型が曖昧になる
  • True / False 以外が入る可能性
  • 処理速度が遅くなる
  • バグを見つけにくい

・明示的にBooleanを使うべき理由

Dim flg As Boolean

これだけで、コードの安全性が大きく向上します。


✅ 【VBA】Boolean型を使った実務的なパターン

・処理成功・失敗を返す例

Function SaveData() As Boolean
    If Err.Number <> 0 Then
        SaveData = False
        Exit Function
    End If

    SaveData = True
End Function

・呼び出し側の処理

If SaveData() Then
    MsgBox "保存に成功しました"
Else
    MsgBox "保存に失敗しました"
End If

Boolean型を使うことで、処理の流れが非常に分かりやすくなります。


✅ 【VBA】Boolean型とSelect Caseの使い分け

Boolean型は基本的に If 文向きですが、条件が増えると読みにくくなります。

If isAdmin And isActive And Not hasError Then

このような場合は、処理を分割したり、関数化する方が安全です。


✅ 【VBA】Boolean型でよくある落とし穴

・落とし穴1:初期値を意識していない

Boolean型の初期値は False です。

Dim isDone As Boolean
' この時点で isDone は False

意図せず False のまま使ってしまうケースがよくあります。


・落とし穴2:意味の曖昧な変数名

Dim flag As Boolean

flag だけでは、何の判定か分かりません。


・改善例

Dim isFileExists As Boolean
Dim hasPermission As Boolean

・落とし穴3:Booleanに文字列を代入する

isCompleted = "True"

暗黙変換が行われ、予期せぬ挙動になる可能性があります。


✅ 【VBA】Boolean型の命名ルール(実務向け)

Boolean型の変数名は、Yes / No が自然に答えられる形が理想です。

・よく使われる接頭語

  • is
  • has
  • can
  • need

・良い例

Dim isVisible As Boolean
Dim hasError As Boolean
Dim canEdit As Boolean
Dim needSave As Boolean

✅ 【VBA】Boolean型とエラー処理の相性

Boolean型は、エラー処理と非常に相性が良いです。

Dim isError As Boolean
isError = False

On Error Resume Next
' 処理
If Err.Number <> 0 Then
    isError = True
End If
On Error GoTo 0

✅ 【VBA】RPA(UiPath)とBoolean型の重要性

VBAとRPAを組み合わせる実務では、Boolean型は特に重要です。

  • 処理成功 → True
  • 処理失敗 → False

を明確に返すことで、

  • RPA側の分岐が簡潔になる
  • 無人実行でも安定する
  • ログ設計がしやすくなる

というメリットがあります。

【29歳以下限定】VBAの次は「正社員エンジニア」へ。未経験からIT業界へ飛び込む最強の戦略


✅ 【VBA】設計レベルで考えるBoolean型の役割

良いVBAコードでは、

  • 状態 → Boolean
  • データ → 数値・文字列
  • 判定 → Boolean

という役割分担が明確です。

Boolean型は「処理の流れを制御する型」であり、
データそのものを表す型ではありません


✅ まとめ:Boolean型を正しく使うとVBAコードは一段レベルアップする

  • Boolean型は True / False の2値のみを扱う論理型
  • 条件判定・状態管理に最適
  • 数値や文字列で代用すべきではない
  • If文では「If 変数 Then」が基本
  • 内部的には True = -1、False = 0
  • 命名は is / has / can / need を意識
  • VariantよりBooleanを優先する
  • 実務・RPA連携では必須レベルの知識

Boolean型を正しく使えるようになると、
VBAコードは「動く」だけでなく「読める・守れる」コードに変わります。

ぜひ今回の内容を参考に、
日々のマクロ作成でBoolean型を積極的に活用してみてください。

    -VBAテクニック集, VBA一覧, 変数・知識, 文法・構文