比較演算子って何をする記号?
比較演算子は、
「この値とこの値を比べて、条件が成り立つかどうか」
を判定するための記号です。
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
VBa = 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
VBDate型同士は、比較演算子で素直に比べられます。
>:指定日より後か<:指定日より前か>=:指定日以降か<=:指定日以前か
日付を文字列(”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
VBa > 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 はそれを見て動く)
- 「=」は代入と比較で意味が違うので、文脈で読み分ける
