はじめに
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の理解がぐっと深まります。
混乱しやすいポイントだからこそ、まずは「どこで=を使っているか」「その文脈は代入か比較か」に注目してみてください。
コメント