VBAの「=」の意味とは|代入と比較の違いと==が使えない理由

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はどうやって区別しているのですか?

書いた場所(文脈)によって自動的に判断します。IfWhile などの条件式の中なら比較、それ以外なら代入として解釈されます。プログラマー側もそのルールに従って書くことが大切です。

「<>」や「>=」も比較演算子ですか?

はい。<>(等しくない)・>=(以上)・<=(以下)なども比較演算子です。これらはすべて If 文などの条件式の中で使い、値の大小や一致・不一致を判定します。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール