【Excelマクロ】代入演算子 イコール

Excelマクロ

「=」の2つの役割:比較演算子と代入演算子

「=」はVBAで非常によく使われる記号ですが、役割が2つあるため、役割を理解しないまま使うと、混乱をしやすい記号です。

それぞれの意味を理解し、混乱しないようにしましょう。

「=」は厳密に話をすると次のような内容になっています。

比較演算子(ひかくえんざんし)

比較と書いてあるように、2つのものを比べて、その2つが「等しい」という意味で使われます。

If Cells(2, 1).Value = "○" Then
  MsgBox "A2の値は○です"
End If

上記の場合には、「A2(Cells(2,1)」が「◯」と「等しい(同じ)」ですか?という条件を表現していますが、「A2が◯のとき”A1の値は◯です”というメッセージを表示」するものです。

代入演算子(だいにゅうえんざんし)

代入とは「代わりに入れる」と書いてあるように文字を置き換えたりする意味があります。

VBAの場合には「=」で繋いだ内容について、「右側の内容を左側に代入する」という意味で使われます。

Cells(2, 1).Value = "タイトル"

このように記載すると「A2(Cells(2,1)」に「タイトル」という文字を代入(入力)してください、という意味になります。

同じように変数にセルの値をいれるのも代入になります。

a_txt = Cells(2,1).Value

この例だとA2のセルに入っている内容を「a_txt」という変数に代入(入れる)という意味になります。

混乱しやすいポイント

今の説明を踏まえて改めてお話をしていきます。

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

次のコードは「A2の値が○かどうか」を判断します。

If Cells(2, 1).Value = "○" Then
    ' 条件が成立した場合の処理
End If

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

次のコードは「A2の値に+1する」操作です。

これを比較演算子と同様に考えてしまうと「A2=A2+1」となってしまうので、頭が大混乱してしまう元になってしまいます。

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

このコードは次のような意味になります。

  1. 右側の処理(Cells(2,1).Value + 1)を計算
    例: A2の値が「2」であれば、右側は「3」になります。
  2. 計算結果を左側(Cells(2,1).Value)に代入
    例: A2の値が「2」から「3」に更新されます。

この動作を「数学の=(等しい)」と捉えると、「2 = 3」と見えてしまい、大混乱を招きます。

あくまで説明した通り、「右側の内容を左側に代入する」なので、もともと「A2」に入っている値に「+1」して、改めて「A2」に入れ直す、と考えると理解しやすいです。

VBAの「=」では、右側の計算結果を左側に「置き換える(代入する)」と理解することが重要です。

実務での利用

数値の更新と連続処理

以下のようなマクロを組むことで、一覧を順番に反映しながら連続印刷することが可能です。

  1. 数字を更新する。
  2. VLOOKUP関数で該当する内容を取得する。
  3. 取得した内容を印刷する。
  4. 数字を更新して次の内容を処理する。

コード例:

For i = 1 To 10
    Cells(1, 1).Value = i ' 数字を更新
    ' 他の処理(例: VLOOKUP関数で値を取得して印刷)を追加
Next i

文字列の代入

代入演算子は文字列をセルに入れる際にも使えます。

例:セルに文字列を代入する

Cells(1, 1).Value = "タイトル"

このコードでは、セルA1に「タイトル」という文字列が代入されます。


まとめ

  1. 代入演算子「=」は、右側の内容を左側に代入するために使います。
    • 右側を計算 → 左側に置き換える
    • 例: Cells(2, 1).Value = Cells(2, 1).Value + 1
  2. 比較演算子「=」は、値が「等しいかどうか」を判断するために使います。
    • 例: If Cells(1, 1).Value = "○" Then

「=」はコードに応じて意味が変わるため、どのような意図で使われているかを意識しましょう。

数をこなしながら「=」の役割を理解し、効率的に活用していきましょう!

コメント