VBAでの業務効率化を目指す上で、繰り返し処理は避けて通れない重要な要素です。その中でも「For文」は最も基本かつ汎用性の高い構文であり、数値の操作からデータ処理まで幅広く活用されます。
本記事では、For文の基本構文から実務的な応用方法、他のループ構文との違い、実務での注意点までを体系的に解説します。VBA初心者の方でも安心して読み進められる内容です。
VBAのFor文とは何か
VBAのFor文は、指定した回数だけ処理を繰り返すための制御構文です。繰り返し処理を自動化することで、手作業では時間のかかるExcel操作を大幅に効率化できます。
例えば、特定のセルに一括で値を入力したり、数値を集計したりする場面で活躍します。For文ではカウンタ変数を使って繰り返しの回数や条件を制御できるため、単純なループから複雑な処理まで柔軟に対応できます。
VBAの基本として、まず最初に習得すべき構文です。
VBAについて詳細を知りたい方は、下記をご覧ください。
VBAのFor文の基本
VBAの「For文」は、決まった回数だけ処理を繰り返す際に欠かせない基本構文です。
ここでは、VBAの起動手順から、For文の書き方と実行例までを解説します。
VBAの始め方
VBAのFor文を使い始めるためには、まずExcelでVBAを立ち上げ設定する必要があります。
以下は、その手順です。
- Excel上部の「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」タブにチェックを入れて有効にする
- 「Visual Basic」をクリックし、VBAエディタを起動
- エディタ上で「挿入タブ」→「標準モジュール」を選択
- コードを記述して実行
上記に沿って設定してみましょう。
For文の基本
VBAのFor文は、決まった回数だけ同じ処理を繰り返す際に使われます。
基本構文は以下の通りです。
‘ 繰り返し処理
Next カウンタ変数
たとえば、1から5までの数を表示する場合は次のようになります。
For i = 1 To 5
MsgBox i
Next i
この構文では、iが1から5まで1ずつ増加しながらループ内の処理が5回繰り返されます。繰り返し処理の基本として頻繁に使われる構文です。
基本的なVBAのFor文の使い方
VBAにおけるFor文は、定型処理や大量のデータを効率よく処理するために欠かせない構文です。基本構文を理解したら、さまざまな用途に応じて応用できるようになります。
ここンでは、日常的によく使われる「単純な繰り返し」や「数値計算」への応用方法を、具体的なコード例とともに見ていきましょう。
基本①単純な繰り返し処理の例
最も基本的な使い方として、「同じ処理を指定回数だけ繰り返す」というシーンがあります。
たとえば、「こんにちは」と5回表示するような単純な繰り返しがその典型です。
例は以下の通りです。
Dim i As Integer
For i = 1 To 5
MsgBox “こんにちは”
Next i
End Sub
このコードでは、変数iが1から5まで変化し、その回数分だけMsgBoxで「こんにちは」が表示されます。単純な繰り返しを体感するには最適な例です。
基本②数値計算への応用
For文は、繰り返しのたびに値を蓄積することで、合計値などの計算にも利用できます。
たとえば1から100までの合計を求めるといった処理も簡単に実現できます。
例は以下の通りです。
Dim i As Integer
Dim total As Long
total = 0
For i = 1 To 100
total = total + i
Next i
MsgBox “合計は ” & total & ” です。”
End Sub
このコードでは、iが1から100まで繰り返される中で、変数totalにiの値を逐次加算していきます。結果として、1から100までの合計である5050が表示されるのです。
応用的なVBAのFor文の使い方
基本的なFor文の使い方に慣れてきたら、次は応用的なテクニックを学びましょう。Step句を使ったカウント間隔の制御、ループのネスト、条件による中断、条件付き処理などを組み合わせることで、より柔軟で実用的な処理が可能になります。
ここでは、それぞれの代表的な活用方法を紹介します。
応用①Step句による増分・減分の制御
For文は通常1ずつ増加しますが、「Step句」を使えば増加幅や減少も指定できます。たとえば2つおきにループしたり、逆方向にカウントしたりできます。
下記コードは、1・3・5・7・9の順で出力されます。Step 2により、iは2ずつ増加します。
Dim i As Integer
For i = 1 To 10 Step 2
Debug.Print i
Next i
End Sub
応用すれば、偶数・奇数処理やデータの間引きも可能です。
応用②ネストされたFor文(多重ループ)
For文の中にさらにFor文を書くことで、2次元的な処理が可能になります。たとえば、Excelの複数行・列に対する一括処理などに使われます。
下記のコードは、A1〜B3の範囲に「行1 列1」などの文字を自動入力します。
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 2
Cells(i, j).Value = “行” & i & ” 列” & j
Next j
Next i
End Sub
外側のループで行を、内側で列を処理する典型的な例です。
応用③Exit Forによる途中脱出処理
繰り返しの途中で条件を満たしたらループを中断したい場合は、Exit Forを使います。無駄な処理を避けることができます。
下記のコードでは、A列の値が空白になる行でループを終了し、それ以前の行に「入力済」とB列へ記入します。
Dim i As Integer
For i = 1 To 10
If Cells(i, 1).Value = “” Then
Exit For
End If
Cells(i, 2).Value = “入力済”
Next i
End Sub
途中で終了させることで無駄なチェックを避けられます。
応用④条件分岐と組み合わせたループ制御
ループ中に特定条件だけ処理を実行したい場合、If文を併用することで柔軟な制御が可能です。よくあるパターンは、特定の値に対してのみ処理を行うものです。
下記のコードは、A列の数値が100以上であれば、B列に「合格」と表示します。
Dim i As Integer
For i = 1 To 10
If Cells(i, 1).Value >= 100 Then
Cells(i, 2).Value = “合格”
End If
Next i
End Sub
条件付き処理を入れることで、単なる繰り返しを実用的なフィルタ処理に変えることができるでしょう。
IF文について詳細を知りたい方は、下記をご覧ください。
VBAのFor文とFor Eachの違い
VBAでは、繰り返し処理に「For文」と「For Each文」の2種類があります。どちらもループ処理を行うための構文ですが、使い方や適した場面が異なります。
For文は「回数を指定した繰り返し」に適しており、カウンタ変数を使って明確な制御ができます。一方で、For Each文は「配列やコレクションなどのすべての要素を順番に処理する」場合に便利です。
以下の表で違いを比較してみましょう。
項目 | For文の特徴 | For Each文の特徴 | 例(サンプルコード) |
---|---|---|---|
ループ制御 | カウンタ変数(i など)で回数を制御 | 要素そのものを1つずつ取得 | For Each cell In Range(“A1:A5”) |
処理対象 | 数値範囲や配列のインデックス | 配列、Range、コレクションなど | For i = 1 To 5 |
要素数の把握 | 明示的にカウントが必要(UBoundなど) | 自動で要素数を判断 | 配列やRangeの全要素を自動で処理 |
処理の自由度 | Step句で増減指定や逆順処理が可能 | 順方向のループ処理のみ | For Each obj In Worksheets |
適している用途 | 明確な回数で処理する数値ループや行番号指定処理 | 配列、セル範囲、オブジェクトの全体処理 | 配列要素の一括表示、Rangeの全セル処理 |
それぞれの構文に得意・不得意があるため、用途に応じて適切に使い分けることが重要です。VBAをより効率的に書くためにも、この違いをしっかり理解しておきましょう。
VBAのFor文とDo While文・Do Until文との比較
VBAでは繰り返し処理を行うために、For文の他に「Do While文」や「Do Until文」も利用されます。For文と同じくループ処理を実現しますが、繰り返し回数ではなく“条件”を基準に処理を繰り返すという点で異なります。
「回数が決まっているならFor文」、「条件が満たされるまで処理したいならDo文系」と使い分けるのが基本です。
以下の表で具体的な違いを確認しましょう。
比較項目 | For文 | Do While文 | Do Until文 | 使用例 |
---|---|---|---|---|
ループの基準 | 回数 | 条件が成立している間(Trueの間) | 条件が成立するまで(Falseの間) | 条件によって終了する処理(空白セルまで繰り返す等) |
初期値の指定 | 必須(例:For i = 1 To 10) | 任意(外で指定) | 任意(外で指定) | i = 1 から条件に従って増やしていく |
回数の明確さ | 明確(開始値と終了値で制御) | 不明確(条件の結果次第で変化) | 不明確(条件の結果次第で変化) | データ量が変動する処理に適している |
無限ループの危険性 | 少ない(回数指定のため) | 条件が変化しなければ無限ループの可能性あり | 条件が変化しなければ無限ループの可能性あり | 必ずループ終了条件を確認する必要あり |
主な使用場面 | 繰り返し回数が決まっている処理 | 空白セルになるまで、特定条件が続く間の処理 | 同上(論理的にはWhileの逆) | データが続く限り処理を繰り返す、ファイル存在チェック |
Do文系のループは、データ件数や状況に応じて繰り返し回数が変化する実務処理(例:表の最終行まで処理する、エラーが出るまで処理する等)で力を発揮します。処理の目的や条件に応じて、構文を正しく使い分けましょう。
エクセルを使った業務改善を目指すための実践ガイド
Excel業務の効率化やDXに取り組む方におすすめなのが、「エクセル業務を効率化するための実践ガイド」資料です。
この資料では、Excelを活用した業務改善の具体例や、自動化・標準化のための基本ノウハウが丁寧にまとめられており、関数や操作の応用方法も実務に即した形で紹介されています。
特に、複数の部署で同じデータを扱う必要がある場合や、月次業務の繰り返し作業を見直したい場合などに効果的です。内容は図解や例を交えてわかりやすく構成されており、初心者でも理解しやすいのが特徴です。
メールアドレスを登録するだけで無料でダウンロードできるため、Excelの業務活用をさらに深めたい方は、ぜひチェックしてみてください。
VBAのFor文の実務での活用方法
VBAのFor文は、日々のExcel業務において非常に多くの場面で活用されています。しかし、便利な反面、使い方によっては逆に作業を複雑化させたり、トラブルの原因となる場合もあります。
ここでは、実務での代表的な活用例と、注意しておきたいポイントについて見ていきましょう。
Excel操作自動化へ応用できる
For文は、Excelの定型業務や繰り返し処理を効率化するために非常に有効です。毎回同じ作業を手動で行うのではなく、自動化によって作業時間を大幅に短縮できます。
具体的には、以下の通りです。
- 複数行への一括データ入力
- 複数ファイルの一括処理
- 条件に応じたセルの色分けや数値集計
- ピボットテーブルやグラフの自動生成
- 行ごとに異なる処理を自動で実行
たとえば、100行にわたるデータ入力や、各行ごとに異なる条件での判定処理なども、For文を活用すれば数秒で完了します。手作業による人的ミスを防ぎながら、業務の正確性とスピードを同時に高めることが可能です。
MsgBox多用によりループトラブルを回避する
VBAの学習初期には、処理内容を確認する目的でMsgBoxを使うことが多いですが、For文の中で多用すると動作が極端に遅くなったり、操作を妨げる原因になります。
具体的には、以下の通りです。
- ループ回数が多いと毎回ポップアップが表示されて手作業が止まる
- ユーザーが都度閉じないと次の処理に進めない
- デバッグのつもりが逆に無限ループのように感じられる
- 業務中の自動処理で画面操作を妨げてしまう
そのため、デバッグにはDebug.Printを使い、必要最低限の確認に留めるようにしましょう。大量のループでは、非表示で処理を進め、結果のみを一度に表示するような工夫が重要です。
可読性・保守性を意識してFor文を書く
VBAコードは一度書いたら終わりではなく、後から修正・保守するケースが多くあります。For文も可読性を高めることで、将来的なメンテナンス性が向上するでしょう。
具体的には、以下の通りです。
- 意味のある変数名を使う(例:i → rowIndex)
- インデントを整えて構造を視覚的に分かりやすくする
- コメントを適切に記述する
- ネストが深くなる場合は処理をサブルーチンに分割する
- ループの終了条件や意図を明確にしておく
こうした工夫をすることで、他人だけでなく自分が後から見たときにも理解しやすくなります。特に実務では「読めるコード」「直せるコード」が重視されるため、正確性と同じくらい見やすさにも意識を向けることが大切です。
実務で使えるおすすめのExcelマクロ・VBAセミナー
VBAの基礎から実務で使えるスキルまでを短期間で習得したい方には、「Excelマクロ・VBAセミナー」の受講がおすすめです。
講座はで、マクロの記録や編集から始まり、ファイル操作、データ整形、帳票作成、グラフ作成、ユーザーフォームの構築など、現場で役立つ内容が実践形式で学べます。講師は現場経験豊富で、初心者でも安心して学べるサポート体制が整っている点も魅力です。
特にFor文を活用した繰り返し処理や条件付きの自動化処理など、本記事で学んだ内容を実際に手を動かしながら定着させる絶好の機会です。
セミナー名 Excelマクロ・VBAセミナー 運営元 GETT Proskill(ゲット プロスキル) 価格(税込) 27,500円〜 開催期間 2日間 受講形式 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング
VBAのFor文のまとめ
VBAのFor文は、業務効率化に直結する機能であり、基本から応用までを理解することで、Excel作業の幅が大きく広がります。
本記事で紹介した内容をもとに、まずは簡単な繰り返し処理から実践を重ね、自分の業務にどう活かせるかを考えてみてください。また、より実践的にスキルを習得したい方は、プロの指導と実務例を通じて学べるセミナーの活用も効果的です。
着実にVBAスキルを高め、日々の業務をよりスマートにこなしていきましょう。
