Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 – 比較演算子

Excel VBA VBA
スポンサーリンク

比較演算子って何をする記号?

比較演算子は、
「この値とこの値を比べて、条件が成り立つかどうか」
を判定するための記号です。

VBAでは、比較の結果は必ず Boolean型(True / False) になります。
この True / False を If 文や Do While などで使って、「処理する/しない」を決めていきます。

「値を計算する」のが算術演算子、「値を比べる」のが比較演算子、というイメージを持っておくと整理しやすいです。


主な比較演算子の種類と意味

一番よく使う6つ

VBAでまず押さえるべき比較演算子は、この6つです。

  • = :等しい
  • <> :等しくない
  • > :より大きい
  • >= :以上
  • < :より小さい
  • <= :以下

算数とほぼ同じですが、「以上」「以下」と「より大きい」「より小さい」の違いだけは、ちゃんと意識しておくと条件を書くときに迷いません。

10 より大きい → 11, 12, 13, …(10は含まない)
10 以上 → 10, 11, 12, 13, …(10を含む)

この感覚は、点数判定や範囲チェックで頻繁に出てきます。


数値の比較をIf文で使ってみる

基本的な例:合格・不合格判定

Sub SampleScore()

    Dim score As Long
    score = 75

    If score >= 60 Then
        MsgBox "合格です"
    Else
        MsgBox "不合格です"
    End If

End Sub
VB

ここでやっていることを言葉にすると、

  • score >= 60 という「条件式」を評価する
  • 60以上なら True、60未満なら False
  • True のときは「合格」、False のときは「不合格」を表示

という流れです。

重要なのは、
比較演算子を使った式は「True か False を返す」
ということです。
If は、その True / False を見て分岐しています。

等しい・等しくないの例

Sub SampleEqual()

    Dim a As Long
    Dim b As Long

    a = 10
    b = 5

    If a = b Then
        MsgBox "a と b は等しい"
    End If

    If a <> b Then
        MsgBox "a と b は等しくない"
    End If

End Sub
VB

a = b は「a と b が等しいか?」を判定する比較です。
ここでの = は「代入」ではなく「比較」であることに注意してください。


文字列の比較と注意点

文字列が特定の値かどうかを判定する

Sub SampleStringCompare()

    Dim name As String
    name = "山田"

    If name = "山田" Then
        MsgBox "山田さんです"
    Else
        MsgBox "山田さんではありません"
    End If

End Sub
VB

文字列同士の比較も、= / <> で行えます。
「セルの値が ‘完了’ かどうか」など、状態判定でよく使います。

If Range("A1").Value = "完了" Then
    ' 完了時の処理
End If
VB

大小比較は“文字コード順”になる

文字列に対して >< を使うと、「文字コード順」での比較になります。

超初心者のうちは、文字列に対しては

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

だけを使う、と決めてしまったほうが混乱しません。


日付の比較は「Date型+比較演算子」が鉄板

今日が締切を過ぎているかどうか

Sub SampleDateCompare()

    Dim today As Date
    today = Date

    If today > #2025/12/31# Then
        MsgBox "締切を過ぎています"
    Else
        MsgBox "まだ期限内です"
    End If

End Sub
VB

Date型同士は、比較演算子で素直に比べられます。

  • > :指定日より後か
  • < :指定日より前か
  • >= :指定日以降か
  • <= :指定日以前か

日付を文字列(”2025/12/31″)のまま比較すると、文字列としての大小比較になってしまうので、
日付は必ず Date 型で持って比較する
というのを強いルールにしておくと安全です。


比較演算子とBoolean型の関係を深掘りする

比較の結果は必ずBooleanになる

Sub SampleBoolean()

    Dim a As Long
    Dim b As Long
    Dim result As Boolean

    a = 10
    b = 5

    result = (a > b)

    MsgBox result   ' True が表示される(内部的には -1)

End Sub
VB

a > b の部分は、「True か False を返す式」です。
それを Boolean 型の変数 result に代入しています。

If 文の中では、この「True / False を返す式」をそのまま書いているだけです。

If a > b Then
    ' ここは (a > b) が True のときだけ実行
End If
VB

つまり、

  • 比較演算子を使った式 → Boolean を返す
  • If / Do While / Do Until など → Boolean を評価して動く

という関係になっています。

この構造が見えてくると、
「条件式って、結局は True / False を返す“普通の式”なんだ」
と腑に落ちてきます。


つまずきやすいポイントと回避のコツ

「=」の“代入”と“比較”を混同しない

a = 10      ' 代入
If a = 10 Then   ' 比較
End If
VB

同じ = でも、
文の位置によって意味が変わります。

  • 文の先頭付近:a = 10 → 代入
  • If の中:a = 10 → 比較

「左に変数、右に値や式だけ」の形なら代入、
「If の中で条件として使われている」なら比較、
と読み分ける癖をつけておくと混乱しにくくなります。

複数条件と組み合わせるときは読みやすさを優先する

If score >= 60 And score < 80 Then
    MsgBox "60点以上80点未満"
End If
VB

このように、比較演算子と論理演算子(And / Or)を組み合わせるときは、
「日本語に言い換えて読んでみて、意味がスッと入るか」を必ず確認してください。

必要なら、カッコでグループ分けしても構いません。

If (score >= 60) And (score < 80) Then
VB

コンピュータのためだけでなく、「未来の自分が読んだときの理解しやすさ」のために、
比較式は“きれいに書く”ことを意識してみてください。


まとめ:比較演算子は「条件式の心臓部」

比較演算子は、If や Do などの条件式の“心臓部”です。
ここで True / False をどう返すかで、プログラムの流れが決まります。

今日のポイントをぎゅっとまとめると、

  • 比較演算子は「値と値を比べて True / False を返す記号」
  • =, <>, >, >=, <, <= の6つをまず押さえる
  • 数値・文字列・日付、どれも比較できるが、日付は必ず Date 型で
  • 比較の結果は Boolean 型で受け取れる(If はそれを見て動く)
  • 「=」は代入と比較で意味が違うので、文脈で読み分ける

タイトルとURLをコピーしました