VBAの「=」は2つの意味がある|代入と比較の違いと混乱しないための考え方

VBAの「=」には「代入」と「比較」の2つの使い方があります。どちらで使われているかは書かれている場所で判断できます。If の中では「比較」、それ以外では「右側を左側に代入する」という意味になります。

この記事では、次の内容を順番に解説します。

  • 代入演算子としての「=」の使い方
  • 比較演算子としての「=」の使い方
  • 混乱しやすいパターンと考え方

代入演算子としての「=」とは?

「右側の内容を左側に入れる」という意味です。数学の「等しい」とは違います。

' セルA2に「タイトル」という文字を入れる
Cells(2, 1).Value = "タイトル"

' 変数にセルの値を入れる
Dim txt As String
txt = Cells(2, 1).Value

どちらも「右側のものを左側に入れる」という動作です。

比較演算子としての「=」とは?

If の中で使う「=」は「等しいかどうか比べる」という意味になります。

' A2の値が「○」と等しいかどうか確認する
If Cells(2, 1).Value = "○" Then
    MsgBox "A2の値は○です"
End If

「A2が○と等しければメッセージを表示する」という処理です。

混乱しやすいパターンは?

次のコードは初心者が混乱しやすい書き方です。

Cells(2, 1).Value = Cells(2, 1).Value + 1

数学の感覚で読むと「A2 = A2 + 1」となって「2 = 3」のようにおかしく見えます。でもVBAでは「右側を計算してから左側に入れ直す」という意味なので、次のように解釈します。

  1. 右側の Cells(2,1).Value + 1 を計算する(例:A2が2なら、2+1=3)
  2. 計算結果の「3」をA2に入れ直す

「A2の値を1増やして、A2に書き直す」という処理です。

どちらの「=」かを見分けるには?

書かれている場所で判断できます。

  • Ifの中にある:比較(等しいかどうか確認する)
  • Ifの外にある:代入(右側を左側に入れる)
' 比較(Ifの中)
If Cells(1, 1).Value = "完了" Then ...

' 代入(Ifの外)
Cells(1, 1).Value = "完了"

まとめ

  • 代入の「=」:右側を左側に入れる。Cells(1,1).Value = "タイトル"
  • 比較の「=」:等しいかどうか確認する。If x = 1 Then
  • 見分け方:Ifの中なら比較、それ以外なら代入。
  • 自分自身に代入x = x + 1 は「xを1増やしてxに入れ直す」という意味。

よくある質問

「等しくない」を表すにはどう書く?

<> を使います。例:If Cells(1,1).Value <> "" Then で「A1が空白でなければ」という条件になります。

「以上・以下」はどう書く?

>= が「以上」、<= が「以下」です。例:If x >= 80 Then で「xが80以上なら」という条件になります。

文字列の比較は大文字・小文字を区別する?

VBAの = による文字列比較は、デフォルトでは大文字・小文字を区別しません。区別したい場合はモジュールの先頭に Option Compare Binary と書きます。

数値と文字列を「=」で比較するとどうなる?

型が違う場合でも、VBAが自動で変換して比較しようとします。たとえばセルに数値の「1」が入っていて If Cells(1,1).Value = "1" Then と書いても一致すると判定されることがあります。確実に比較したい場合は型を合わせてから比較しましょう。

変数に何も入っていないときの初期値は?

数値型(LongやDoubleなど)は 0、文字列型(String)は ""(空文字)、論理型(Boolean)は False が初期値です。代入していない変数と比較するときはこの初期値と比較されることになります。


動画で学びたい方へ

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

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

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

コメントする

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

上部へスクロール