Developer

【ExcelVBA】For…Nextステートメント1
2020.11.30
Lv1

【ExcelVBA】For…Nextステートメント1

For…Nextステートメント①

同じ処理を何度も繰り返し行いたい場合には、For…Nextステートメントを使用します。

書式は以下の通りです。

For [変数] = [初期値] To [終了値]
    [繰り返し処理]
Next 変数

使用例は次のようになります。

Sub VBA基礎第7回_1()
    Dim i As Integer
    
    For i = 0 To 4
        MsgBox i & "回目"
    Next i
End Sub

プログラムを実行すると、次のようなメッセージが5回連続で表示されるはずです。
「0回目」→「1回目」→「2回目」→「3回目」→「4回目」の計5回です。「5回目」は表示されず、プログラムが終了していることにも注目しましょう。

[007-【ExcelVBA】For…Nextステートメント1-001.png]

5行目の「MsgBox」が[繰り返し処理]になっていて、5回実行されているためにこのような結果となります。
繰り返しの回数は4行目の次の部分で決めています。

    For i = 0 To 4

処理の流れは次の通りです。

1. 変数iはゼロからスタートします。変数iの中身はゼロです。
2. 次に「MsgBox」を実行します。この結果、メッセージが画面に表示されます。
3. 「Next」まで行くと、ループの最初に戻ります。
4. 先頭に戻ると変数iの中身はプラス1され、1になります。
5. また同じように「MsgBox」を実行します。この結果、メッセージが画面に表示されます。
6. 「Next」まで行くと、ループの最初に戻ります。この時、変数iの中身はプラス1され、2になります。
7. また同じように「MsgBox」を実行します。
・・・この後は同じように繰り返し

[007-【ExcelVBA】For…Nextステートメント1-002.png]

[007-【ExcelVBA】For…Nextステートメント1-003.png]

繰り返しが終了するのはいつになるかというと、スタートのときと同じ次のプログラムが決めています。

    For i = 0 To 4

変数iが4になるまで実行し、5になると繰り返しが終了となります。

繰り返しは難しい?

実は今回の繰り返しのプログラムは、プログラムで初心者が躓いてしまう大きなハードルのうちの1つです。
まずとても難しいもので、使えるようになるにはそれなりの練習が必要になると思っていただいてOKです。
この記事の最後に宿題を用意しました。それほど難しいものではありませんので、頭で考えるだけで出来たような気になってしまいますが、是非手を動かして作成してみてください。簡単とは思っても実はなかなかうまくいかないものです。

「For…Nextステートメント」のような繰り返し処理は、このように1行1行プログラムの実行の流れを追っていくことが大切です。
ソースコードを眺めるだけで処理のイメージがつかめる方もいますが、そうでない方も多いです。実際に私も使えるようになるには、時間がかかったことを覚えています。「プログラムが苦手だな」「よくわからないな」と感じている方は特にこのように1行ずつ処理を追ってみてください。慣れてくれば簡単なものであればすぐに理解できるようになります。
最初のうちは繰り返し回数の少ないものや、繰り返し処理が複雑でないもので練習するとよいでしょう。処理を追いやすいからです。宿題もこのような問題になっています。
例えば、100回繰り返す処理では全て追っていくのは実質不可能ですよね。

次回は、「For…Nextステートメント」の応用編です。

宿題

1. サンプルプログラムと同じように「0から9」まで計10回のメッセージを画面に表示するプログラムを作成してください。
2. サンプルプログラムと同じように「5から10」まで計6回のメッセージを画面に表示するプログラムを作成してください。
3. 1から10まで繰り返すプログラムを作成し、「VBA基礎」という文字を以下のようにExcel上に表示するプログラムを作成してください。
[007-【ExcelVBA】For…Nextステートメント1-004.png]

※ヒント
Excel上に表示するには、Cellsを使用します。

 
 

連載目次リンク

ExcelVBA 入門 連載目次