- 開発技術
VBA入門_繰り返し処理(For Next)
- VBA
目次
For Next文を使った繰り返し処理
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
For Next 文で指定した回数だけ繰り返し処理を行いたい場合に使用します。
構文
1 2 3 4 5 6 |
For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter] |
counter |
必ず指定します。 カウンタに使う数値変数を指定します。 |
start |
必ず指定します。 引数 counter の初期値を指定します。 |
end |
必ず指定します。 引数 counter の最終値を指定します。 |
step |
省略可能です。ループを繰り返すごとに引数counterには1が加算されます。 ループを繰り返すごとに引数 counter に加算される値を指定します。 |
statements |
省略可能です。 ループ内で実行される一連のステートメントで、For と Next の間に記述します。 ここに記述したステートメントは、For…Next ステートメントで指定した回数だけ実行されます。 |
上記構文の余分なものを消して、日本語に直してみましょう。
1 2 3 |
For 変数 = 初期値 To 最終値 Step 増加量 実行する処理 Next 変数 |
使用例・For Next文で文字列を入力
ForNext文を使って、「セルA1」から「セルA10」まで文字列「a」を入力する事例です。
1 2 3 4 5 6 7 |
'使用例・For Next文で文字列を入力 Sub Sample1() Dim i As Long For i = 1 To 10 Range("A" & i).Value = "a" Next End Sub |
マクロ実行後
重要なのは4行目の 「For = i 1 to 10」と5行目の「Range(“A” & i).Value」です。
まず、4行目が i=1,2,3,・・・,10と加算しながら繰り返すプログラムを意味します。
一方、5行目の Range(“A” & i).Value はセルAi の値を指します。
したがって、4行目と5行目を組み合わせると、セルA1、セルA2、・・・セルA10と増やすことが可能です。
その結果、「セルA1からセルA10まで”a”を入力する」となります。
使用例・For Next文の2つ以上(複数)の組み合わせ
Step-1という方法で5行目から1行目に向かって、行を削除していくプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'使用例・For Next文をStep-1する(逆順に後ろから回す) 'プログラム1|プログラム開始 Sub Sample9() 'プログラム2|変数設定 Dim i As Long 'プログラム3|i=5~1まで繰り返し処理 For i = 5 To 1 Step -1 'プログラム4|iが偶数(2で割り切れる)の場合に処理を実行 If i Mod 2 = 0 Then 'プログラム5|行を削除 Rows(i).Delete End If Next 'プログラム6|プログラム終了 End Sub |
マクロ実行前
マクロ実行後
1.「Sub」で始まります。
2.Long(整数)型の変数を2つを使います。
3.ForとNextの間を、i=5,4,3,2,1と1つずつカウントダウンしながら、繰り返し処理を実行。
1 2 3 |
For i = X To Y Step -1 処理 Next |
これでXからYまで1ずつカウントダウンしながら、繰り返し処理を行うことができます。
なお、X>Yでそれぞれには数値が入ります 。
4.「i Mod 2」でiを2で割ったときの余りを計算できます。
その余りが0のとき、すなわち2で割り切れる(つまり偶数)とき、プログラム5をを実行します。
5.i行目を削除します。
1 |
Rows(行番号).Delete |
これで「行番号」の行を削除することができます。
この事例ではプログラム4で偶数のときのみ、プログラム5が実行されるようにしています。
6.「End Sub」を読み込むと、プログラムが終了します。
使用例・For Next文の2つ以上(複数)の組み合わせ
ForNextを2つ組み合わせて、かけ算九九表を作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
'使用例・For Next文の2つ以上(複数)の組み合わせ 'プログラム1|プログラム開始 Sub Sample1() 'プログラム2|変数設定 Dim i As Long, k As Long 'プログラム3|1つ目のForNext For i = 1 To 9 'プログラム4|2つ目のForNext For k = 1 To 9 'プログラム5|i×kのセルに出力 Cells(i, k).Value = i * k 'Range("A" & i).Offset(0, k - 1).Value = i * k Next Next 'プログラム6|プログラム終了 End Sub |
マクロ実行後
1.「Sub」で始まります。
2.Long(整数)型の変数を2つを使います。
3.For(1行目)とNext(9行目)の間を、i=1,2,3,・・・,7,8,9と1つずつカウントアップしながら、繰り返し処理を行います。
4.For(1行目)とNext(5行目)の間を、k=1,2,3,・・・,7,8,9と1つずつカウントアップしながら、繰り返し処理を行います。
5.「Cells(i, k).Value = i * k」は、「Range(“A” & i).Offset(0, k – 1).Value = i * k」でも同じ結果となります。
6.「End Sub」を読み込むと、プログラムが終了します。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>