「エクセルを使用していて、同じ処理を効率的に処理したい。」
このように悩んでいませんか?

・Excelで同じ処理を繰り返し行いたい!
・特定の範囲やデータに対して効率的に操作を加えたい!



その場合は、VBAの「For Next文」を
使用すると解決します!
この記事では、VBAのFor Next文を使った繰り返し処理の基礎から、応用的な使用例までを詳しく解説します。
VBAのFor Nextループは、指定した回数の繰り返し処理や、セルやフォルダ内のデータ取得を簡単に自動化できます。
特定の条件でループをスキップしたり、途中で終了することも可能です。
効率的に繰り返し処理を行い、作業時間を大幅に短縮できます。
この記事を読むだけで、あなたもすぐにVBAのFor Next文を使いこなせるようになります!
ぜひご覧ください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を読むと「できるようになる」こと
この記事を読むことで、次のことができるようになります。
- VBAのFor Next文を使った基本的な繰り返し処理を理解する
- VBAのFor Next文でよく使われる機能を習得する
- For Next文を使用する際の注意ポイントを確認する
- For Next文を実践でどのように使用するか?を学ぶ
VBAのFor Next文とは? | 繰り返し処理の種類をご紹介
VBAにはさまざまな繰り返し処理があり、For Next文はその中でも事前に決められた回数だけ処理を繰り返す基本的な構文です。
Excelシート上でセルや範囲に対して繰り返し処理を行う場合に特に役立ちます。
また、「条件に応じてループを途中で抜ける方法」や、「特定の条件でスキップする方法」も簡単に実装でき、柔軟な処理が可能です。
次に、VBAで使用できる繰り返し処理の種類を詳しく見ていきましょう。
VBAにおける繰り返し処理の種類
繰り返し処理の種類 | 説明 |
---|---|
For文 | 指定した回数だけ繰り返し処理を行います。 範囲内で連続した処理を行うのに便利です。 |
For Each文 | 配列やコレクション内の各要素に対して順次処理を行います。 全要素にアクセスする場合に便利で、シートのセル範囲や オブジェクトのコレクションに対してよく使用されます。 |
Do While文 | 指定された条件がTrueの間、処理を繰り返します。 条件に基づいてループを制御したい場合に使用され、 繰り返し回数が決まっていないケースに適しています。 |
Do Until文 | 指定された条件がTrueになるまで処理を繰り返します。 Do While文とは逆の条件で動作し、条件が満たされるまで処理を続けます。 |
While…Wend文 | 指定された条件がTrueである間、処理を繰り返します。 Do While文に似ていますが、よりシンプルなループ処理に使用されます。 |
Do Loop While文 | 処理を少なくとも1回は実行し、その後、指定された条件がTrueで あれば繰り返します。 最初に必ず1回処理が行われる点が特徴です。 |
Do Loop Until文 | 処理を少なくとも1回実行した後、指定された条件がTrue になるまで繰り返します。 条件が満たされるまで必ず1回は処理が行われます。 |
VBAのFor Next文の基本を解説
VBAのFor Next文は、指定した回数だけ繰り返し処理を行うために使われる基本構文です。
この構文を使えば、Excelでのセルの操作や特定の範囲に対する繰り返し処理を簡単に自動化できます。
For Next文の基本構文


- カウンタ変数
- 繰り返し回数をカウントするための変数です。
- 開始値
- カウンタ変数が初めに設定される値です。
- 終了値
- カウンタ変数が到達しループを終了する値です。
- 増分
- カウンタ変数の増分です。(省略すると1ずつ増加します)
この構文を使えば、同じ処理を繰り返し適用することが簡単にできます。
より詳しい情報は、Microsoft公式 – For…Next ステートメントを参照してみてください。
VBA For Next文で繰り返し処理を行う際に「よく使われる機能」一覧
VBAのFor Next文は、繰り返し処理の基本です。
ここでは、よく使われる機能とその使用方法を、具体的なコード例を交えて詳しく解説します。
⇒ 具体的なFor Next文の使用例は「VBAのFor Next文の使用例をご紹介」で紹介しています。
よく使われる機能1: 基本的なFor Next文の宣言方法
以下のコードは、セル「A1」から「A10」に「1」から「10」までの数値を順に入力するシンプルな繰り返し処理の例です。
Sub FillCellsWithForLoop()
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
このコードは、Excelシート上で「A1」から「A10」のセルに「1」から「10」までの数値を順に入力します。
For Next文を使用して、簡単に繰り返し処理を行う方法を学ぶ基本例です。
よく使われる機能2: Excelシートの最終行まで繰り返し処理を行う
以下のコードは、Excelシートの最終行までデータを自動的に取得し、各セルに対して繰り返し処理を行う例です。
Sub FillCellsToLastRow()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' 最終行を取得
For i = 1 To lastRow
Cells(i, 1).Value = i
Next i
End Sub
このコードは、Excelシートにおけるデータが存在する最終行まで繰り返し処理を行う場合に非常に便利です。
たとえば、データの自動入力やデータの加工を最終行まで処理したいときに活用できます。


よく使われる機能3: For Next処理中に「ループを途中で抜ける」(Exit For)
VBAには直接の「breakステートメント」は存在しませんが、ループを途中で抜けるためには「Exit For」を使います。
これは、他のプログラミング言語での「break」と同様の機能を持ちます。
以下のコードは、変数「i」が5になった時点でループを抜ける例です。
Sub ExitForExample()
For i = 1 To 10
If i = 5 Then
Exit For '// iが5の時点でループを抜ける
End If
Cells(i, 1).Value = i
Next i
End Sub
このコードは、Excelシート上でA1からA4までに数値を入力し、変数「i」が5に達した時点でループを抜けます。
そのため、「A5」以降のセルには何も入力されません。
「Exit For」を使うことで、特定の条件を満たしたときに繰り返し処理を途中で抜けることが可能です。
これにより、無駄な処理を避けて効率的なループを実現できます。
よく使われる機能4: For Next処理中に「ループをスキップ」する(Continueの代わりに GoToを使用)
VBAには直接の「Continueステートメント」が存在しないため、特定の条件でループの一部処理をスキップするには、「GoTo」を使用します。
以下のコードは、変数「i」が5の場合に、その処理をスキップする例です。
Sub SkipLoopExample()
For i = 1 To 10
If i = 5 Then GoTo SkipLoop '// iが5の場合はスキップ
Cells(i, 1).Value = i
SkipLoop:
Next i
End Sub
VBAには直接の「Continueステートメント」はないため、「GoTo」を使ってスキップ処理を実現します。
このコードでは、「i = 5」の時にスキップされ、セル「A1」から「A4」、「A6」から「A10」にのみ値が入力され、「A5」は空のままになります。
代替手段としてのGoToの使用
VBAには他のプログラミング言語で一般的な「Continueステートメント」(ループの中で特定の条件を満たした際に、その反復の残りの処理をスキップし、次の反復に進む命令)が存在しません。
そのため、VBAでは「GoToステートメント」を使って、特定の処理をスキップする方法がよく使われます。
「GoTo」は、プログラムの実行を指定されたラベルにジャンプさせるステートメントです。
この例のように、特定の条件に基づいてGoToを使うことで、ループ内の一部処理をスキップし、次の反復に進むことができます。
よく使われる機能5: For Next処理で「繰り返しの増分を指定」(Stepを使用)
For Next文では、カウンタ変数の増加量を指定することができます。
Stepを使って、繰り返しの増分を調整します。
Sub StepExample()
For i = 1 To 10 Step 2
Cells(i, 1).Value = i
Next i
End Sub
このコードは、「A1」、「A3」、「A5」… と奇数行に対して「1」「3」「5」と2ずつ増加する値を入力する例です。
特定のステップ(増分)で処理を進めたい場合に役立ちます。
例えば、奇数または偶数の行だけにデータを入力するケースで便利です。
よく使われる機能6: For Next処理で「逆方向にループを行う」(Stepにマイナスの値を使用)
Stepにマイナスの値を指定することで、ループを逆方向に実行することができます。
以下のコードは、「A10」から「A1」に向かって逆順に数値を入力する例です。
Sub ReverseLoopExample()
For i = 10 To 1 Step -1
Cells(i, 1).Value = i
Next i
End Sub
このコードでは、セルの「A10」から「A1」までに向かって逆順に数値を入力します。
Stepにマイナスの値を指定することで、カウントダウンのように逆方向にループを実行でき、特定のシナリオ(データの逆順処理など)で役立ちます。
VBAのFor Next文を使う際の注意ポイント
VBAのFor文は非常に便利ですが、正しく使わないとエラーや無限ループが発生することがあります。
ここでは、For文を使用する際の重要な注意点を解説します。
カウンタの範囲に注意 (無限ループ)
VBAのFor Next文では、カウンタ変数の「開始値」と「終了値」を正しく設定することが重要です。
範囲が正しく設定されていないと、無限ループが発生し、プログラムが意図通りに動作しません。
無限ループの例
Sub InfiniteLoopExample()
'// 無限ループの例
For i = 1 To -1 '// 終了値が到達できないため無限ループ
Cells(i, 1).Value = i
Next i
End Sub
無限ループが起きたらどうしたらいい?
無限ループが発生すると、Excelがフリーズする可能性があるため、実行時には注意が必要です。
無限ループを途中で止めるには、「Escキー」を押して、強制的に中断するか、タスクマネージャーでExcelを終了させる必要があります。
配列やセル範囲のインデックス外アクセスに注意
VBAで配列やセル範囲を操作する際、インデックスが範囲外に設定されているとエラーが発生します。
例えば、行や列の指定が存在しない範囲にアクセスすると、VBAの実行時に「範囲外エラー」が発生します。
このようなエラーを防ぐためには、常に範囲を正確に設定することが重要です。
範囲外エラーの例
Sub IndexOutOfRangeExample()
'// 範囲外エラーの例
For i = 1 To 20
Cells(i, 100).Value = i '// 100列目が存在しない場合、エラー発生
Next i
End Sub
範囲外エラーの対策
範囲外アクセスを防ぐために、以下の対策を講じることが推奨されます。
- 列数や行数を動的に取得して、適切な範囲内で操作することが重要です。
- CellsやRangeオブジェクトを使用する際に、常にアクセス範囲が有効な範囲内に収まっているかを確認しましょう。
VBAのFor Next文の使用例をご紹介
ここからは、VBAのFor文の具体的な使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 順番にセルに値を入力する
セル範囲「A1」から「A10」に、「1」から「10」までの数値を順に入力する方法を紹介します。
主な使用用途: セルに数値を順に入力する場合や、配列にデータを格納する際に使用します。
コード例
Sub InputValues()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
処理結果


コードの動作概要
変数「i」を Long型で宣言し、ループのカウントに使用します。
変数「i」の値を「1」から「10」まで繰り返し、ループを開始します。
ループごとに、セルの「A列」1行目から10行目に対して、ループするカウント「i」を値として入力します。
10回のループが完了し、すべての値が入力された時点でループが終了します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub InputValues()
- この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
プロシージャ名は「InputValues」で、このサブルーチンが実行されると指定された一連の操作が実行されます。
- この行では、「Subステートメント」を使用して新しいプロシージャ(サブルーチン)を定義しています。
- Dim i As Long
- ここでは、変数「i」を Long 型として宣言しています。
この変数は、後に For ループで使用され、繰り返し処理のカウンタとして働きます。
Long 型は、より大きな整数値を扱うためのデータ型です。
- ここでは、変数「i」を Long 型として宣言しています。
- For i = 1 To 10
- この行では、「Forループ」が開始されます。
変数「i」が「1」から「10」まで増加する範囲でループが繰り返されます。
ループは10回実行され、それぞれのループごとに i の値が「1」ずつ増加します。
- この行では、「Forループ」が開始されます。
- Cells(i, 1).Value = i
- この行では、Cells(i, 1) を使用して、シート上の「i」行目の1列目(A列)のセルを指定しています。
そして、そのセルに変数「i」の値を代入しています。
例えば、1回目のループでは「A1」に「1」が入力され、2回目のループでは「A2」に「2」が入力されるように順番に処理されます。
- この行では、Cells(i, 1) を使用して、シート上の「i」行目の1列目(A列)のセルを指定しています。
- Next i
- この行でサブルーチンが終了します。
ループの処理が完了し、プログラムが次に実行する手順に移行します。
- この行でサブルーチンが終了します。
- End Sub
- この行は、サブルーチン「InputValues」の終わりを示します。
このコードは、セル「A1」から「A10」までに、「1」から「10」までの数値を順に入力する処理を行います。
For ループを使用して、変数「i」の値を各セルに代入しています。
使用例2: ループで「Step」を使い、数値を飛ばして加算する
セル範囲「A1」から「A10」に、2ずつ増加する数値を入力する方法を紹介します。
主な使用用途: 数値やデータを特定の増加幅で入力したい場合に便利です。例えば、偶数や奇数を扱う処理に適しています。
コード例
Sub StepValues()
Dim i As Long
For i = 1 To 10 Step 2
Cells(i, 1).Value = i
Next i
End Sub
処理結果


コードの動作概要
変数「i」を Long型で宣言し、ループのカウントに使用します。
変数「i」を「1」から「10」まで、「2」ずつ増加させながらループを実行します。(Step 2 により1, 3, 5, 7, 9と進行します)
ループごとに、セルの「A列」の奇数行(A1, A3, A5, A7, A9)に、その行番号に対応する数値を入力します。
変数「i」が「10」を超えた時点で、ループが終了し、値の入力が完了します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub StepValues()
- この行は、新しいサブルーチン「StepValues」を定義しています。
Subステートメントは、VBAで一連の操作をグループ化し、名前を付けて実行可能な処理を作成します。
- この行は、新しいサブルーチン「StepValues」を定義しています。
- Dim i As Long
- ここでは、変数「i」を Long 型として宣言しています。
この変数は、後に For ループで使用され、繰り返し処理のカウンタとして働きます。
Long 型は、より大きな整数値を扱うためのデータ型です。
- ここでは、変数「i」を Long 型として宣言しています。
- For i = 1 To 10
- この行では、「Forループ」を定義しています。
変数「i」の初期値を「1」、終了値を「10」とし、「Step 2」によって、「i」が「2」ずつ増加するように指定しています。
ループは、「i」が「10」を超えるまで繰り返されます。
最初のループでは i =1
次のループでは i = 3
以降、i = 5, 7, 9 というように進行します。
- この行では、「Forループ」を定義しています。
- Cells(i, 1).Value = i
- この行では、Cells(i, 1) を使用して、シート上の「i」行目の1列目(A列)のセルを指定しています。
そして、そのセルに変数「i」の値を代入しています。
例えば、最初のループではセル「A1」に「1」、次のループではセル「A3」に「3」、「A5」に「5」と順に代入されます。
- この行では、Cells(i, 1) を使用して、シート上の「i」行目の1列目(A列)のセルを指定しています。
- Next i
- この行でサブルーチンが終了します。
ループの処理が完了し、プログラムが次に実行する手順に移行します。
- この行でサブルーチンが終了します。
- End Sub
- この行は、サブルーチン「StepValues」の終わりを示します。
このコードは、セル「A1」から「A9」の奇数行に対して、「1」から「9」までの数値を「2ずつ増加」させながら順に入力する処理を行っています。
使用例3: 逆方向にループを行う
セル範囲「A10」から「A1」に、逆順で数値を入力する方法を紹介します。
主な使用用途: データを逆方向に処理したい場合や、逆順にデータを削除する処理などに使用します。
コード例
Sub ReverseInputValues()
Dim i As Long
For i = 10 To 1 Step -1
Cells(i, 1).Value = 11 - i
Next i
End Sub
処理結果


コードの動作概要
変数「i」を Long型で宣言し、ループのカウントに使用します。
変数「i」を「10」から「1」まで、「1」ずつ減少させながらループを実行します(Step -1 により逆順に進行)。
ループごとに、セルの「A列」10行目から1行目に対して、ループするカウント「i」を値として入力します。
変数「i」 が「1」を下回った時点で、ループが終了し、値の入力が完了します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ReverseInputValues()
- この行では、新しいサブルーチン「ReverseInputValues」を定義しています。
Sub ステートメントを使用して、処理をまとめて命名し、後で実行可能なブロックを作成します。
- この行では、新しいサブルーチン「ReverseInputValues」を定義しています。
- Dim i As Long
- ここでは、変数「i」を Long 型として宣言しています。
この変数は、後に For ループで使用され、繰り返し処理のカウンタとして働きます。
Long 型は、より大きな整数値を扱うためのデータ型です。
- ここでは、変数「i」を Long 型として宣言しています。
- For i = 10 To 1 Step -1
- この行では、Forループを定義しています。
このループでは、変数「i」の初期値を「10」、終了値を「1」とし、「Step -1」により「i」が「1」ずつ減少するように設定されています。
ループは変数「i」が 1 になるまで繰り返されます。
ループの開始時点で「i = 10」から始まり、次の反復で変数「i」は「9」になります。
以降、変数「i」の値は毎回「1」ずつ減少します。
- この行では、Forループを定義しています。
- Cells(i, 1).Value = 11 – i
- この行では、Excelのセルに値を入力しています。
Cells(i, 1) を使って、i 行目の A 列(1列目)のセルを指定しています。
セルには 11 – i の計算結果が入力されます。
例えば、「i = 10」の場合、11 – 10 = 1 なので、セル「A10」に「1」が入力されます。
次に「i = 9」の場合、11 – 9 = 2 なので、セル「A9」に「2」が入力されます。
これを繰り返し、「A1」には「10」が入力されます。
- この行では、Excelのセルに値を入力しています。
- Next i
- この行では、Forループが次の反復に進むように指示します。
変数「i」が「Step -1」によって「1」ずつ減少しながら繰り返され、i = 1 になるまで実行されます。
変数「i」が「1」になった後、ループが終了します。
- この行では、Forループが次の反復に進むように指示します。
- End Sub
- この行は、サブルーチン「StepValues」の終わりを示します。
このコードは、セル「A10」から「A1」に向かって、「1」から「10」までの数値を逆順に入力する処理を行っています。
セル「A10」には「1」、セル「A1」には「10」が入力され、10行に渡って値が逆順に設定されます。
使用例4: ループを強制終了する方法
特定の条件を満たした場合、ループを強制終了する方法を紹介します。
主な使用用途: 特定の条件に達したら処理を中断したい場合に使用します。
コード例
Sub BreakLoop()
Dim i As Long
For i = 1 To 10
If i = 5 Then
Exit For
Else
Cells(i, 1).Value = i
End If
Next i
End Sub
処理結果


コードの動作概要
変数「i」を Long型で宣言し、ループのカウントに使用します。
変数「i」が「1」から「10」まで増加するようにループを実行します。
変数「i」が「5」になった時点で、Exit For文によりループを強制終了します。
変数「i」が「5」未満の場合、セルの値に変数「i」の値を入力します。
変数「i」が「5」になった時点でループが終了し、それまでに入力された値が確定します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub BreakLoop()
- この行では、「BreakLoop」という新しいサブルーチンを定義しています。
このサブルーチン内での処理は、特定の条件が満たされた場合にループを途中で終了させるために使用されます。
- この行では、「BreakLoop」という新しいサブルーチンを定義しています。
- Dim i As Long
- ここでは、変数「i」を Long 型として宣言しています。
この変数は、後に For ループで使用され、繰り返し処理のカウンタとして働きます。
Long 型は、より大きな整数値を扱うためのデータ型です。
- ここでは、変数「i」を Long 型として宣言しています。
- For i = 1 To 10
- この行では、「Forループ」が定義されています。
変数「i」 の初期値を「1」、終了値を「10」と設定して、変数「i」 が「1」から「10」まで「1」ずつ増加する間、ループが繰り返されます。
- この行では、「Forループ」が定義されています。
- If i = 5 Then
- この行では、条件分岐が行われています。
変数「i」が「5」と等しい場合、Then に続く処理が実行されます。
- この行では、条件分岐が行われています。
- Exit For
- この行では、If 文が True になった場合に Exit For ステートメントが実行されます。
Exit For は、現在の For ループを途中で強制終了するためのコマンドです。
ここでは、変数「i」が「5」に達した時点でループが終了します。
- この行では、If 文が True になった場合に Exit For ステートメントが実行されます。
- Else
- この行では、If 文の条件が False の場合に実行される処理を示します。
つまり、「i」が「5」ではない場合は、Else に続くコードが実行されます。
- この行では、If 文の条件が False の場合に実行される処理を示します。
- Cells(i, 1).Value = i
- この行では、i 行目の A 列(1列目)のセルに変数「i」の値を入力します。
例えば、i = 1 の場合はセル「A1」に「1」が、i = 2 の場合はセル「A2」に「2」が入力されます。
ただし、i = 5 の場合は Exit For によってループが強制終了されるため、それ以降のセルには値が入力されません。
- この行では、i 行目の A 列(1列目)のセルに変数「i」の値を入力します。
- End If
- この行は、If 文の終了を示します。
ここで If…Else 構文が終了します。
- この行は、If 文の終了を示します。
- Next i
- この行では、For ループの次の反復に進みます。
変数「i」が「1」ずつ増加し、次の値で再びループが実行されます。
変数「i」が「5」になると Exit For によりループが終了します。
- この行では、For ループの次の反復に進みます。
- End Sub
- この行は、サブルーチン「BreakLoop」の終了を示します。
サブルーチン内の処理がすべて完了します。
- この行は、サブルーチン「BreakLoop」の終了を示します。
このコードは、「1」から「10」までの数字をA列に入力する処理を行いますが、途中で「i」が「5」に達した時点でループを強制終了します。
そのため、A列のセル「A1」からセル「A4」には「1」から「4」までの値が入力され、「A5」以降のセルには何も入力されません。
使用例5: 特定の条件になったら、ループを「スキップ」する方法
特定の条件を満たした場合、ループ内の一部の処理をスキップする方法を紹介します。
主な使用用途: 条件に応じて一部の処理を飛ばしたい場合や、特定のデータを除外する処理に便利です。
コード例
Sub SkipLoop()
Dim i As Long
For i = 1 To 10
If i = 5 Then
GoTo Continue
Else
Cells(i, 1).Value = i
End If
Continue:
Next i
End Sub
処理結果


コードの動作概要
変数「i」を Long型で宣言し、ループのカウントに使用します。
変数「i」が「1」から「10」まで増加するようにループを実行します。
変数「i」が「5」になった時点で「GoTo Continue」により、Cells(i, 1).Value = i の処理をスキップして次のループへ進みます。
変数「i」が「5」以外の場合、該当するセルにその値が入力されます。
変数「i」が「10」になった時点でループが終了し、セルに入力された値が確定します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub SkipLoop()
- この行では、「SkipLoop」という新しいサブルーチンを定義しています。
このサブルーチン内では、特定の条件が満たされた場合に、ループの一部の処理をスキップするためのロジックが実行されます。
- この行では、「SkipLoop」という新しいサブルーチンを定義しています。
- Dim i As Long
- ここでは、変数「i」を Long 型として宣言しています。
この変数は、後に For ループで使用され、繰り返し処理のカウンタとして働きます。
Long 型は、より大きな整数値を扱うためのデータ型です。
- ここでは、変数「i」を Long 型として宣言しています。
- For i = 1 To 10
- この行では、「Forループ」が定義されています。
変数「i」 の初期値を「1」、終了値を「10」と設定して、変数「i」 が「1」から「10」まで「1」ずつ増加する間、ループが繰り返されます。
- この行では、「Forループ」が定義されています。
- If i = 5 Then
- この行では、条件分岐が行われています。
変数「i」が「5」と等しい場合、Then に続く処理が実行されます。
- この行では、条件分岐が行われています。
- GoTo Continue
- この行では、「GoToステートメント」が使用されています。
変数「i」 が「5」の場合、「GoTo」によってラベル「Continue」まで処理をジャンプし、Cells(i, 1).Value = i の処理をスキップします。
このため、i = 5 のときにはセルに値が入力されません。
- この行では、「GoToステートメント」が使用されています。
- Else
- この行では、If 文の条件が False の場合に実行される処理を示します。
つまり変数「i」が「5」でない場合に実行される処理を示しています。
- この行では、If 文の条件が False の場合に実行される処理を示します。
- Cells(i, 1).Value = i
- この行では、i 行目の A 列(1列目)のセルに変数「i」の値を入力します。
例えば、i = 1 の場合はセル「A1」に「1」が、i = 2 の場合はセル「A2」に「2」が入力されます。
i = 5 の場合は「GoTo Continue」によってスキップされるため、セル「A5」には値が入力されません。
- この行では、i 行目の A 列(1列目)のセルに変数「i」の値を入力します。
- End If
- この行は、If 文の終了を示します。
ここで If…Else 構文が終了します。
- この行は、If 文の終了を示します。
- Continue:
- この行はラベルです。
「GoToステートメント」によってジャンプする先の位置を示します。
i = 5 の場合、このラベルにジャンプし、以降の処理を続行します。
これにより、セル「A5」への値の入力がスキップされます。
- この行はラベルです。
- Next i
- この行では、「Forループ」の次の反復に進みます。
変数「i」が「1」ずつ増加し、次の値で再びループが実行されます。
- この行では、「Forループ」の次の反復に進みます。
- End Sub
- この行は、サブルーチン「SkipLoop」の終了を示します。
このコードは、「1」から「10」までの数字をA列に入力する処理を行いますが、「i」 が「5」 のときだけは処理をスキップし、「A5」には値が入力されません。
「A1」から「A4」には「1」から「4」までの値が、「A6」から「A10」には「6」から「10」までの値が入力されますが、「A5」は空のままになります。
この記事のまとめ
VBAのFor文は、Excelの繰り返し処理を効率化するために欠かせないツールです。
この記事を通じて、基本的な使い方から応用的な操作までを理解し、実務で活用できるスキルが身につきます。
ポイントのおさらい
- VBAのFor Next文を使った繰り返し処理を理解する
- この記事では、VBAのFor Next文を使った基本的な繰り返し処理の方法を学びました。
セル範囲に対して同じ操作を効率的に行いたいときに非常に便利です。
⇒ 「VBAの繰り返し処理「For Next文」とは?」もう一度見る。
- この記事では、VBAのFor Next文を使った基本的な繰り返し処理の方法を学びました。
- VBAのFor Next文では、以下のような便利な機能がよく使われます
- 繰り返し処理
- 指定した回数だけセルやデータを自動処理します。
- ループの終了(Exit For)
- 特定の条件でループを途中で抜けることが可能です。
- ループのスキップ(GoTo)
- 特定の条件で処理をスキップし、次の反復に進めます。
⇒ 「VBA For Next文で繰り返し処理を行う際に「よく使われる機能」一覧」とは?」もう一度見る。
- 特定の条件で処理をスキップし、次の反復に進めます。
- 繰り返し処理
- 繰り返し処理の際の注意点を確認する
- For Next文の使用時に注意すべき点として、カウンタの設定や範囲外アクセスのリスクを学びました。
正しく設定することで、意図しないエラーや無限ループを防ぐことができます。
⇒ 「VBAのFor Next文を使うにあたっての注意ポイント」もう一度見る。
- For Next文の使用時に注意すべき点として、カウンタの設定や範囲外アクセスのリスクを学びました。
- セルにデータを入力する様々な方法を学ぶ
- 順番にデータを入力する、逆順に処理を行う、または特定の値ごとに飛ばしながらデータを入力するなど、さまざまな場面でFor文を活用する方法を具体的に学びました。
また、特定の条件を満たしたときにループを強制終了する「Exit For」や、特定の条件をスキップする方法も学びました。
これにより、柔軟なループ処理の制御が可能になります。
⇒ 「VBAのFor Next文の使用例をご紹介」もう一度見る。
- 順番にデータを入力する、逆順に処理を行う、または特定の値ごとに飛ばしながらデータを入力するなど、さまざまな場面でFor文を活用する方法を具体的に学びました。
この記事の使用例を実践していくことで、VBAの繰り返し処理ができるようになります。
最初はコードをコピペして実行し、少しずつ自分で書けるようにしていきましょう。

