Excel VBAを学び始めたとき、多くの方が最初に混乱するのが =(イコール)の使い方です。あるときは「値を入れる(代入)」として使われ、別のときには「等しいかどうか(比較)」として使われます。
この記事では、代入と比較の違い・よくある間違いのパターン・実務での使い分けを具体例とともに解説します。
代入としての「=」の使い方とは?
変数にデータをセットするときの = は、右辺の値を左辺に格納するという意味です。数学の「左辺と右辺が等しい」という意味とは異なります。
Sub 代入の例()
Dim メッセージ As String
' 変数に文字列を代入する
メッセージ = "おはようございます"
' セルA1に表示する
Range("A1").Value = メッセージ
End Sub
メッセージ = "おはようございます" は「メッセージという変数に、おはようございますという文字列を入れる」という意味です。
比較としての「=」の使い方とは?
If 文の中で使う = は、左辺と右辺が等しいかどうかを判定する比較の意味になります。
Sub 比較の例()
Dim 点数 As Integer
点数 = Range("B1").Value
' 点数が100かどうかを比較
If 点数 = 100 Then
Range("C1").Value = "満点です"
End If
End Sub
If 点数 = 100 Then は「点数が100と等しいなら」という条件判定です。代入ではなく、真偽(True/False)を評価しています。
代入と比較をどう見分けるには?
書いた場所で判断するのが一番シンプルです。
| 用途 | 書き方 | 意味 | よく使う場所 |
|---|---|---|---|
| 代入 | 変数 = 値 | 値をセットする | Subの中、初期設定 |
| 比較 | If A = B Then | 等しいか調べる | If文、条件分岐 |
「If 文の中は比較、それ以外はほぼ代入」と覚えておくと迷いにくいです。
よくある間違いを避けるには?
間違い1:代入と比較を書く場所を混同する
' 正しい(比較)
If 点数 = 80 Then
' 間違い(代入になってしまう)
点数 = 80 ' ← If文の外なので比較ではなく代入
間違い2:「==」を使ってしまう
' 構文エラー(VBAでは使えない)
If 点数 == 100 Then
' 正しい書き方
If 点数 = 100 Then
JavaScriptやPythonなど他のプログラミング言語では == が比較に使われますが、VBAでは = だけを使います。ネット上のコードをそのままコピーするとエラーになることがあるため、特に注意が必要です。
実務での代入と比較の使い分け例とは?
Sub 部門判定()
Dim 部門 As String
部門 = Range("A1").Value ' ← 代入:セルの値を変数に格納
If 部門 = "営業部" Then ' ← 比較:営業部かどうかを判定
Range("B1").Value = "対象部門です"
Else
Range("B1").Value = "対象外"
End If
End Sub
1つのコードの中に代入と比較が混在しています。コメントを見てどちらかを意識しながら読む練習をすると、VBAが一気に読みやすくなります。
まとめ
=には代入(値を変数にセット)と比較(等しいか判定)の2つの意味があるIf文の中は比較、それ以外はほぼ代入と覚えると迷いにくい- VBAでは
==は使えない(構文エラーになる) - 代入と比較が同じコードの中に混在しているのは普通のこと。書いた場所で判断する習慣をつける
よくある質問
VBAで「==」を使うとどうなりますか?
コードを実行しようとした時点で構文エラーになります。VBAは比較演算子として = しか使えません。他の言語の習慣があってもVBAでは == は使えないと覚えておきましょう。
If文以外に比較の「=」を使う場面はありますか?
あります。Do While 条件 や Loop Until 条件、Select Case の中でも比較の = が使われます。いずれも「条件を評価する場所」という点では同じです。
文字列の比較でも「=」は使えますか?
使えます。If 部門 = "営業部" Then のように文字列同士の一致チェックにも = を使います。ただし大文字・小文字を区別するかどうかはモジュールの設定(Option Compare)によって変わります。
代入と比較が同じ記号なのに、VBAはどうやって区別しているのですか?
書いた場所(文脈)によって自動的に判断します。If・While などの条件式の中なら比較、それ以外なら代入として解釈されます。プログラマー側もそのルールに従って書くことが大切です。
「<>」や「>=」も比較演算子ですか?
はい。<>(等しくない)・>=(以上)・<=(以下)なども比較演算子です。これらはすべて If 文などの条件式の中で使い、値の大小や一致・不一致を判定します。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



