「=」の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
このコードは次のような意味になります。
- 右側の処理(Cells(2,1).Value + 1)を計算
例: A2の値が「2」であれば、右側は「3」になります。 - 計算結果を左側(Cells(2,1).Value)に代入
例: A2の値が「2」から「3」に更新されます。
この動作を「数学の=(等しい)」と捉えると、「2 = 3」と見えてしまい、大混乱を招きます。
あくまで説明した通り、「右側の内容を左側に代入する」なので、もともと「A2」に入っている値に「+1」して、改めて「A2」に入れ直す、と考えると理解しやすいです。
VBAの「=」では、右側の計算結果を左側に「置き換える(代入する)」と理解することが重要です。
実務での利用
数値の更新と連続処理
以下のようなマクロを組むことで、一覧を順番に反映しながら連続印刷することが可能です。
- 数字を更新する。
- VLOOKUP関数で該当する内容を取得する。
- 取得した内容を印刷する。
- 数字を更新して次の内容を処理する。
コード例:
For i = 1 To 10
Cells(1, 1).Value = i ' 数字を更新
' 他の処理(例: VLOOKUP関数で値を取得して印刷)を追加
Next i
文字列の代入
代入演算子は文字列をセルに入れる際にも使えます。
例:セルに文字列を代入する
Cells(1, 1).Value = "タイトル"
このコードでは、セルA1に「タイトル」という文字列が代入されます。
まとめ
- 代入演算子「=」は、右側の内容を左側に代入するために使います。
- 右側を計算 → 左側に置き換える
- 例:
Cells(2, 1).Value = Cells(2, 1).Value + 1
- 比較演算子「=」は、値が「等しいかどうか」を判断するために使います。
- 例:
If Cells(1, 1).Value = "○" Then
- 例:
「=」はコードに応じて意味が変わるため、どのような意図で使われているかを意識しましょう。
数をこなしながら「=」の役割を理解し、効率的に活用していきましょう!
コメント