【Excelマクロ】「=」の意味は代入?比較?混乱しないための基礎知識

はじめに

Excel VBAを学び始めたとき、多くの方が最初に混乱するのが「=(イコール)」の使い方です。

あるときは「値を入れる(代入)」に使われ、別のときには「等しいかどうか(比較)」に使われるため、「結局どう使えばいいの?」という疑問を持つ方が少なくありません。

実装するメリット(理解する意味)

  • コードが読めるようになる(読み違え防止)
  • 意図しないエラーや不具合を防げる
  • 条件分岐や変数の操作に自信が持てる

代入としての「=」

まずは「=」を代入として使うパターンです。

Sub 代入の例()

    Dim メッセージ As String

    ' 変数に文字列を代入する
    メッセージ = "おはようございます"

    ' セルA1に表示する
    Range("A1").Value = メッセージ

End Sub

解説

このコードでは、「メッセージ = “おはようございます”」のように、左辺の変数に右辺の値を代入しています。これが代入の基本的な形です。

  • VBAでは「=」は「右のものを左に入れる(格納する)」という意味で使います。
  • 数学のように「左辺=右辺が等しい」という意味ではありません。

比較としての「=」

次に、「=」を比較として使うパターンです。

Sub 比較の例()

    Dim 点数 As Integer
    点数 = Range("B1").Value

    ' 点数が100かどうかを比較
    If 点数 = 100 Then
        Range("C1").Value = "満点です"
    End If

End Sub

解説

この場合の「=」は「点数と100が等しいかどうかを比較する」意味です。

  • If文の中で「=」を使うときは、「右と左が同じか?」という条件判定になります。
  • この場合は、点数が100のときにだけ「満点です」と表示されます。

代入と比較の違い

用途書き方意味よく使う場所
代入変数 = 値値をセットするSubの中や初期設定時
比較If A = B Then等しいか調べるIf文、条件分岐

よくある間違い

間違い例1:比較のつもりが代入になってしまった

If 点数 = 80 Then   ' ← これは正しい(比較)
点数 = 80   ' ← 条件式ではなく、代入になってしまう
If 点数 Then ' ← 点数が0でなければTrueになるが、意図とズレる

間違い例2:「==」を使ってしまう

If 点数 == 100 Then  ' ← VBAでは構文エラー!

解説

他のプログラミング言語(例:JavaScript、C言語、Pythonなど)では、「==」は比較、「=」は代入に使われるのが一般的です。

しかし、VBAでは「=」しか使いません。そのため「==」と書くと構文エラーになります。

ネット上の情報を参考にするときに、VBA以外の言語の記述をそのまま真似してしまいエラーになることがあるため、特に注意が必要です。

実務でありがちな「=」の使い分け例

例:部門名が「営業部」かどうかを判定する

Sub 部門判定()

    Dim 部門 As String
    部門 = Range("A1").Value

    If 部門 = "営業部" Then
        Range("B1").Value = "対象部門です"
    Else
        Range("B1").Value = "対象外"
    End If

End Sub

このように、業務で「ある条件に該当するかどうか」を判定する際に比較の「=」は必須です。

一方で、「部門 = Range(“A1”).Value」のようにデータを変数に格納する部分では代入の「=」が使われます。

まとめ

  • 「=」の使い方には代入比較の2通りある
  • If 文の中は比較、それ以外はほぼ代入と覚える
  • 「==」は使わない(構文エラー)

「=」というたった1文字でも、意味が異なると動作も大きく変わります。基本的な違いをしっかり押さえることで、VBAの理解がぐっと深まります。

混乱しやすいポイントだからこそ、まずは「どこで=を使っているか」「その文脈は代入か比較か」に注目してみてください。

コメント