VBA豆知識

=(イクオール)の意味

 VBAで使う「=(イクオール)」は、特別な意味があります。

 n = n + 1

この数式は数学ではありえません。

 数字 「n」と「nに 1 を加えたもの」は明らかに差が 1 あって、同等ではありません。

上の表を見てください。

 A7のセルには 「SUM(A1:A6)」この合計を計算表示するSUM関数が書かれており、既にA1~A6の合計が A7のセルに書かれています。

 これを For ~ Nextステートメントを使って合計計算をやってみます。

Sub kei()
 Dim n As Long ’①
 Dim I As Long ’ ②

 n = 0   ‘ ③

 For I = 1 To 6
  n = n + Cells(I, 1) ‘ ④
 Next I

 Range(“B7”) = n  ‘ ⑤
End Sub

① 合計を表す変数 型は数字
② 繰り返しの変数 型は数字

③ 合計値の変数のリセット( 0 にする)

④ 次の動きになります。

  For Next文に入り、

  I=1 の時 nは0で、これにA1セルの数字を加えるので、右辺は「 0 + 500」

  「右辺を左辺に代入する」により、ここで nは500となります。

 Next からループし再度 Forに戻り I=2の時、右辺は次のA2セルの数字を加えて 500+326 となります。

  よって n は 826 に変化します。

 3・4・5回と続き 6回目で右辺は 「5回目までの合計 + A6セルの数」1,809 + 1,205 となり、左辺は 3,014となります。

  つまり④の処理を6回繰り返しますから、nは 500+326+458+200+325+1205 の計算をすることになります。

⑤ セル B7 に合計値を書き入れます。

これだけのことでしたら、合計の関数を使って 

n = Application.WorksheetFunction.Sum(Range(“A1:A6”))

のように書けば済むことですが、「For ~ Next」や「n=n+1」といった基本的なステートメント等を使って、流れを考えながらマクロを組み立てることは、今後のプログラミングにとっても非常に大切なことです。

SUM関数を知らなくても「合計」は計算できます。

カウント関数を知らなくても n = n + 1 でカウントすることができます。

 関数だけに頼るということは、数学で公式だけに頼るようなものという見方もあります。

基本問題は解けるけれど、応用問題となると全く解けないという考え方です。

確かに一理あります。

公式の裏にある考え方の理解が必要です。

 この =(イクオール) の「右辺を左辺に代入する」という考え方は数字に限ったことではありません。

文字列でも同じことが言えます。

Sub namae()
 Dim NM As String

 NM = Range(“B2”) ‘①
 NM = NM + “ 様” ‘②

 Range(“B4”).Value = NM ‘③
End Sub

① NM という文字列型の変数に、セル B2 の値「田中 太郎」を代入します。

② 右辺の「NM」は ”田中 太郎” で、これに「 様」を加えています。
  この時点で右辺は「田中 太郎 様」になったわけです。

  この右辺を左辺に代入するので、左辺は 「田中 太郎 様」 となります。

③ よってセルB4に「田中 太郎 様」と表示されます。

 以上のように「=」 の「右辺を左辺に代入する」というプログラミング独自の考え方は、数字であれ文字であれ共通する考え方です。

VBAプログラミングの中では頻繁に使われる大切な考え方です。