よく使うステートメント

【n=n+1】プログラミングで重要な計算式

VBA でプログラミングするときによく使われる計算式があります。

n = n + 1

この等式は「数学」ではありえない等式です。
n と n+1 がイクオール(=) で結ばれることは数学の世界では絶対にありえません。

 

 

 

右辺を左辺に代入する

プログラミングので世界では次のように解釈します。

まず左側の n は「左辺」、右側の n+1 は「右辺」(これは中学の数学で習ってます)ですので

左辺 = 右辺 として

「右辺」を「左辺」に代入する

と解釈します。

これはとても重要です。

使用例

簡単なプログラムを書いて説明します。

n=0

Do until n=10
  n=n+1
  (ベルを1回鳴らす)
LoopMsgbox “ベルが10回鳴りました!”

この Do-Loop は「条件を満たす間 処理を繰り返す」というステートメントです。

プログラムは上の行から下の行に向けて順番に実行されます。

まず最初に 0 (右辺)を n(左辺)に代入します。
つまり n はゼロになります。

次に Do until n=10

「nが10になるまで、Do と Loop の間に書かれている処理を繰り返し,
n が10を超えるとこの繰り返しから抜け出る」

という命令文になります。

つまり n が10になるまで「ベルを1回鳴らす」という命令が実行されるわけです。

初めてこの行を通過するときは n=0 の状態です。

次に n=n+1 の命令文が実行されます。

この時 右辺は 0+1 となりますので つまり 右辺=1となります。

「右辺を左辺に代入する」でしたので 左辺 n に右辺の 1 が代入されます。

よって左辺 n は1 に変化します。

そこでベルを1回鳴らす命令が実行されます。

最後に Loop がありますので、再度上の Do until n=10 へ戻ります。

次にまた n=n+1 を通過しますので、n+1 は 1+1 となり、左辺 n は2と変化します。

そしてまたベルを1回鳴らします。

これをグルグル繰り返します。

n は1づつ増えていき、n が10になるまではベルが鳴り続けます。

そして n が11になったとき、この Do – Loop から抜け出し、11回目のベルは鳴りません。

そして「ベルを鳴らす仕事は終了しました」というメッセージ文が表示されます。

初めての方は少し頭が混乱するかもしれませんが、ゆっくりこの n の変化を理解してください。

 

ここでもう一つ例を出してみましょう。

1+2+3+4+5 の総和計算です。

勿論、暗算でできる簡単な例ですが、n=n+1 を理解するためですのであえてプログラムを書きます。

Sub 合計計算
 Dim Total as Integer

 Total = 1 ‘①
 Total = Total + 2 ‘②
 Total = Total + 3     ‘③
 Total = Total + 4     ‘④
 Total = Total + 5     ‘⑤

 Msgbox “合計:” & Total ‘⑥
End Sub

① 合計を意味する変数 Total は 1
② 右辺は1+2 となり、左辺 Total は3になる
③ 右辺は3+3 となり、左辺 Total は6になる
④ 右辺は6+4 となり、左辺 Total は10になる
⑤ 右辺は10+5 となり、左辺 Total は15になる

この「Sub 合計計算」はあくまで n=n+1 を説明するためにこのように書きましたが、実際はこのようには記述しません。

 

 

Sub 合計計算2()
 Dim Total As Integer
 Dim n As Integer

 Total = 0

 For n = 1 To 5
  Total = Total + n
 Next n

 MsgBox “合計:” & Total
End Sub

このように「For ~ Next」を使って記述します。

この流れは理解できますか?

1行1行ゆっくり動きを考えてみてください。

【For ~ Next】指定した数だけ処理を繰り返す 同じ処理繰り返して実行するとき、その繰り返しの記述にはいくつかの方法があります。 ここでは指定した回数だけ処理を繰り返す「For ~...

この n=n+1 は実際にこれからVBAでプログラミングを勉強していく間によく使われます。

実践を積み重ねることで十分に理解は深まると思います。