繰り返し処理において、非常に大切なことが、繰り返し処理を抜けることです。
”非常に大切”どころではないですね。絶対必要です。
そうでないと、永遠に繰り返されてしまいます。
では、繰り返し処理を抜けるには、どのようにすればよいでしょうか。
大きく、二つの方法があります。
- 条件を設定して、それに合致した場合に、繰り返しを抜ける
- 予め、繰り返す回数を設定しておく
今までは、1の「条件を設定しておく」方法を取りました。
※ちなみに、前述した方法以外でも、Do~Loopにて繰り返し処理を抜ける方法はあります。
それは、また今度。
それは、また今度。
今回は、2の「繰り返す回数を設定しておく」方法を取ります。
1.For~Nextの構文
〜〜〜ここから〜〜〜
For 変数 = 初期値 To 最終値
実施する処理
Next 変数
〜〜〜ここまで〜〜〜
2.変数の設定
いきなりですが、構文は上記の通りです。
ここで”変数”というものが出てきます。
変数を説明するにあたって、最適なワードは何か考えていたのですが、
「箱」という考え方が、一番シックリきますので、「箱」と捉えます。
- 箱は自由に名前を決められる
- 箱の中身は自由に入れ替えられる
なお、変数を使用する際は、「使用します」と記述内で宣言する必要があります。
その場合は、「Dim」を使います。※Dimは、Dimensionの略です。
そして、Dimの後に、好きに決めた変数の名前を書きます。
最後に、「As 〜〜」と、変数のデータ型を指定します。
〜〜〜ここから〜〜〜
Dim i As Integer
〜〜〜ここまで〜〜〜
こんな感じです。
変数は「i」にしました。変数を数値にする場合、iとすることが多いです。
また、Integerは、整数型(-32,768 ~ 32,767)意味します。
また、よく使うデータ型として、String(最大約20億文字)があります。
使えるデータ型は、まだまだ多くありますが、一旦は、上記二つを覚えましょう。
3.For~Next構文に変数をセット
では早速、変数をセットしてみましょう。
〜〜〜ここから〜〜〜
Dim i As Integer
For i = 初期値 To 最終値
実施する処理
Next i
〜〜〜ここまで〜〜〜
Dim i(iという名前の変数を使います) As Integer(それは整数です)
For i = 初期値 To 最終値(変数iは、初期値から最終値まで)
実施する処理
Next i(次の値に進む)
このようになります。
では、最後に初期値〜最終値と、実施する処理を書いてみましょう。
4.For~Next文を完成させる
相変わらず、「いつ使うんだ?」というサンプルですが、
1から10まで足してみようと思います。1+2+3+…+10なので、答えは55です。
それを実行する文は、以下の通りです。
〜〜〜ここから〜〜〜
Sub 一から十の足し算()
Dim i As Integer
For i = 1 To 10
Range("A1").Value = Range("A1").Value + i
Next i
End Sub
〜〜〜ここまで〜〜〜
ここから少し長くなりますが、iが1から10まで進む際の処理を説明していきます。
- iが1の場合
Range("A1").Valueは空欄なので便宜上0とし、iは1なので、
Range("A1").Value = Range("A1").Value + i
→Range("A1").Value = 0 + 1 となり、A1セルには1という値が入ります。
そして、「Next i」で、iは次の値に移ります。 - iが2の場合
Range("A1").Valueは1、iは2なので、
Range("A1").Value = Range("A1").Value + i
→Range("A1").Value = 1 + 2 となり、A1セルには3という値が入ります。
そして、「Next i」で、iは次の値に移ります。 - iが3の場合
Range("A1").Valueは2、iは3なので、
Range("A1").Value = Range("A1").Value + i
→Range("A1").Value = 2 + 3 となり、A1セルには5という値が入ります。
そして、「Next i」で、iは次の値に移ります。
・
・
・ - iが10の場合
Range("A1").Valueは45、iは10なので、
Range("A1").Value = Range("A1").Value + i
→Range("A1").Value = 45 + 10 となり、A1セルには55という値が入ります。
そして、iは10が最終値となるので、繰り返し処理が終わります。
結果的に、A1セルに55という値が入って、このマクロは終了します。
この処理は、エクセルのシートと、VBEを画面上に両方表示して、
ステップインで処理がどう進んでいるのか、見ていただくと良いかと思います。
ステップイン中に、VBE上の「Range("A1").Value」や、「i」にカーソルを合わせると、
その時点の値が表示されますので、よりどのような処理が実行されているのか、理解が深まります。
5.まとめ
繰り返し処理は、二つの方法があります。
- 一つは、どのような状況で繰り返しを止めるかを決める
- 予め回数を設定して処理を行う
応用すれば、Do~LoopでもFor~Nextでも対応は可能です。
状況によって使い分けができるようになっておくも良し、
どちらか一方に、拘って利用するも良しです。
それではまた
コメント
コメントを投稿