カテゴリ: Excel VBA 更新日: 2026/04/11

Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化

Excel VBAのループ処理For/Doの基本!繰り返し処理の書き方と使いどころを紹介
Excel VBAのループ処理For/Doの基本!繰り返し処理の書き方と使いどころを紹介

先生と生徒の会話形式で理解しよう

生徒

「先生、名簿の100人分に同じ挨拶を入力したいんですが、一つずつ書くのが大変です。もっと楽にできる方法はありますか?」

先生

「それこそVBAの得意分野ですよ。ループ処理を使えば、何百行あっても一瞬で終わります。」

生徒

「ループ処理…?同じことを何度も繰り返してくれるってことですか?」

先生

「その通りです!回数を決めて回す方法や、条件に合うまで続ける方法など、基本の書き方をマスターしましょう!」

1. ループ処理とは?繰り返し作業の自動化

1. ループ処理とは?繰り返し作業の自動化
1. ループ処理とは?繰り返し作業の自動化

Excel VBAにおけるループ処理とは、特定の命令を何度も繰り返し実行する仕組みのことです。プログラミングにおいて、同じ作業をコピーして貼り付けるのは非効率的です。例えば、1行目から10行目まで色を塗るという作業を、10回命令を書くのではなく、「10回繰り返してね」と1回命令するのがループの考え方です。

ループを覚えると、データ集計や大量のファイル作成、名簿の整理といった「手作業では時間がかかる退屈な作業」をコンピューターに丸投げできるようになります。VBAには主に For...Next 文と Do...Loop 文の2種類があります。これらを使いこなすことが、エクセル自動化の第一歩です。

2. 回数を指定して繰り返す「For Next文」

2. 回数を指定して繰り返す「For Next文」
2. 回数を指定して繰り返す「For Next文」

For Next(フォー・ネクスト)文は、「1回目から10回目まで」というように、あらかじめ繰り返す回数が決まっているときに使います。一番よく使われるループの形です。カウンターとなる「変数(へんすう:値を入れておく箱)」を一つ用意して、その数字を増やしながら処理を進めていきます。

例えば、1行目から5行目のA列に数字を入れるコードは次のようになります。


Sub ForNextSample()
    Dim i As Integer
    
    ' 変数iが1から5になるまで繰り返します
    For i = 1 To 5
        Cells(i, 1).Value = i & "行目です"
    Next i
End Sub

この i はカウンターの役割です。最初は1が入り、Next i に到達すると2になり、5が終わるまでぐるぐる回ります。結果は以下のようになります。


1行目です
2行目です
3行目です
4行目です
5行目です

3. 条件が満たされている間続ける「Do While文」

3. 条件が満たされている間続ける「Do While文」
3. 条件が満たされている間続ける「Do While文」

Do While(ドゥー・ホワイル)文は、回数は決まっていないけれど「条件が満たされている間はずっと繰り返す」というときに使います。「While」は「〜の間」という意味です。例えば、「セルの中身が空っぽになるまで、ずっと下の行を見ていく」という処理にぴったりです。


Sub DoWhileSample()
    Dim rowNum As Integer
    rowNum = 1
    
    ' A列のセルが空("")ではない間、処理を続けます
    Do While Cells(rowNum, 1).Value <> ""
        ' セルの背景色を黄色にします
        Cells(rowNum, 1).Interior.Color = vbYellow
        ' 次の行へ進むために数字を1増やします
        rowNum = rowNum + 1
    Loop
End Sub

この rowNum = rowNum + 1 という記述は非常に重要です。これを忘れると、ずっと同じ行をチェックし続けてしまい、Excelが止まってしまう「無限ループ」という状態になるので注意しましょう。

4. 条件に当てはまるまで繰り返す「Do Until文」

4. 条件に当てはまるまで繰り返す「Do Until文」
4. 条件に当てはまるまで繰り返す「Do Until文」

Do Whileと似ていますが、Do Until(ドゥー・アンティル)文という書き方もあります。「Until」は「〜まで」という意味です。つまり「条件が正しくなるまで続ける(=条件が間違っている間は回す)」という逆の考え方です。

「テストで100点を取るまで勉強を続ける」というようなイメージですね。どちらを使っても同じ結果を出せることが多いですが、日本語として自然な方を選ぶと、後でコードを読み返したときに理解しやすくなります。


Sub DoUntilSample()
    Dim n As Integer
    n = 1
    
    ' nが10より大きくなるまで繰り返す
    Do Until n > 10
        Cells(n, 2).Value = "データ" & n
        n = n + 1
    Loop
End Sub

5. ループを途中で抜ける「Exit For / Exit Do」

5. ループを途中で抜ける「Exit For / Exit Do」
5. ループを途中で抜ける「Exit For / Exit Do」

ループの途中で「あ、もう目的のものが見つかったから終わりたい!」という場合があります。そんなときに使う魔法の言葉が Exit(エグジット) です。If 文(条件分岐)と組み合わせて使うのが一般的です。

例えば、100行目まで探す予定だったけれど、途中で「エラー」という文字を見つけたらそこで中止する、といった動きができます。


Sub ExitSample()
    Dim i As Integer
    
    For i = 1 To 100
        If Cells(i, 1).Value = "エラー" Then
            MsgBox i & "行目でエラーを発見したので中止します"
            ' ループを強制終了して外に出る
            Exit For
        End If
    Next i
End Sub

6. ループ処理を速くするコツ!画面更新の停止

6. ループ処理を速くするコツ!画面更新の停止
6. ループ処理を速くするコツ!画面更新の停止

大量のループを回すと、Excelの画面がチカチカ動いて動作が重くなることがあります。これは、一回一回の処理を律儀に画面に表示しようとするからです。プログラミング未経験の方が最初に覚えるべき高速化テクニックが画面更新の停止です。

Application.ScreenUpdating = False という呪文を最初に書くと、裏側でこっそり計算してくれるので、スピードが劇的に上がります。処理が終わった後に True に戻すのをセットで覚えましょう。


Sub FastLoop()
    ' 画面の動きを止めます
    Application.ScreenUpdating = False
    
    Dim i As Long
    For i = 1 To 10000
        Cells(i, 3).Value = "高速処理"
    Next i
    
    ' 画面の動きを元に戻します
    Application.ScreenUpdating = True
    MsgBox "完了しました!"
End Sub

7. ループが止まらない!「無限ループ」の対処法

7. ループが止まらない!「無限ループ」の対処法
7. ループが止まらない!「無限ループ」の対処法

もし間違えて Do Loop の条件をずっと満たすように書いてしまうと、Excelが砂時計(あるいはぐるぐるマーク)のまま固まってしまうことがあります。これが無限ループです。パソコンを初めて触る方はパニックになるかもしれませんが、焦る必要はありません。

もし止まらなくなったら、キーボードの Ctrlキー を押しながら Breakキー(または Escキー) を何度か叩いてください。プログラムを強制的に中断させることができます。中断した後は、なぜ条件が終わりを迎えなかったのか、コードを見直してみましょう。

8. ForとDoどっちを使えばいい?使い分けの基準

8. ForとDoどっちを使えばいい?使い分けの基準
8. ForとDoどっちを使えばいい?使い分けの基準

最後に、どっちのループを使うべきか迷ったときの基準を紹介します。基本的には「終わりが最初から見えているか」で判断します。

種類 向いているケース 例え話
For Next 回数が決まっている時、セルの範囲が決まっている時 グラウンドを5周走る
Do Loop 回数は不明だが、特定の条件まで続けたい時 雨が降るまで外で遊ぶ

初心者の方は、まずは For Next から使い始めるのがおすすめです。理由は、回数を指定するので無限ループになりにくく、安全に練習できるからです。慣れてきたら、データの量に合わせて柔軟に動く Do Loop に挑戦してみましょう!

まとめ

まとめ
まとめ

ループ処理の重要ポイントを総復習

Excel VBAにおけるループ処理は、繰り返し作業を効率化するための最重要テクニックのひとつです。特に業務でよく発生する「大量データの処理」「同じ操作の繰り返し」「条件に応じた処理の分岐」などを自動化できるため、実務レベルで必須のスキルといえます。今回解説したFor文やDo Loop文を理解することで、手作業では数十分かかる作業も数秒で完了させることが可能になります。

For Next文は、繰り返す回数があらかじめ決まっている場合に非常に有効で、初心者にも扱いやすい構文です。一方、Do While文やDo Until文は、条件に応じて処理を継続するため、より柔軟な制御が可能になります。これらを適切に使い分けることが、VBAプログラミングの理解を一段と深めるポイントです。

実務で役立つループ処理の活用例

例えば、顧客リストの全件に対してメール文を作成したり、売上データを一括で集計したり、特定の条件に一致するデータだけを抽出するなど、ループ処理はさまざまな業務に応用できます。さらに、Exit文を組み合わせることで処理の途中終了も可能になり、無駄な処理を省くことができます。

また、画面更新の停止(Application.ScreenUpdating = False)を利用することで、処理速度を大幅に向上させることができるため、大量データを扱う場合には必ず意識しておきたいポイントです。

サンプルプログラムで理解を定着させる


Sub LoopSummarySample()

    Application.ScreenUpdating = False

    Dim i As Integer

    ' 1から10まで繰り返し
    For i = 1 To 10

        ' 5で処理を終了
        If i = 5 Then
            MsgBox "5に到達したので終了します"
            Exit For
        End If

        Cells(i, 1).Value = "処理中:" & i

    Next i

    Application.ScreenUpdating = True

    MsgBox "ループ処理が完了しました"

End Sub

このコードでは、For文による繰り返し処理、条件分岐、Exitによる途中終了、そして高速化テクニックまでをまとめて確認できます。実際に動かしてみることで、ループ処理の流れが直感的に理解できるでしょう。

無限ループを防ぐための注意点

Do Loopを使う際は、必ずループを終了させる条件を意識することが重要です。条件が変化しないままだと無限ループに陥り、Excelがフリーズしてしまう可能性があります。特に「変数を更新する処理」を忘れないことが大切です。

万が一止まらなくなった場合でも、CtrlキーとBreakキー、またはEscキーで強制停止できるため、落ち着いて対処しましょう。

For文とDo Loopの使い分けまとめ

VBAのループ処理を理解する上で最も大切なのは、「どの場面でどの構文を使うべきか」を判断できることです。回数が決まっている場合はFor文、条件で判断する場合はDo Loopを使うという基本をしっかり押さえておきましょう。この考え方を身につけることで、コードの可読性も向上し、後から見直したときにも理解しやすくなります。

繰り返し処理はVBAの基礎でありながら応用範囲が非常に広く、データ処理の効率化や自動化に直結する重要なスキルです。今回の内容を何度も実践し、自然に書けるようになるまで繰り返し練習することが、上達への近道です。

先生と生徒の振り返り会話

生徒

「ループ処理って、同じことを繰り返すだけだと思っていましたが、条件によって使い分けるのが大事なんですね。」

先生

「その通りです。For文とDo Loopの違いを理解することで、より柔軟なプログラムが書けるようになります。」

生徒

「Exitで途中終了できるのも便利ですね。無駄な処理を減らせそうです。」

先生

「実務ではとても重要な考え方です。処理を効率化する意識を持つと、より良いコードになりますよ。」

生徒

「画面更新を止めるだけで速くなるのも驚きました!」

先生

「細かい工夫の積み重ねが、大きな差になります。これからも実践しながら身につけていきましょう。」

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office ScriptsとPower Automateの接続準備をやさしく解説!Excel自動化をはじめる第一歩
New2
Office Scripts
Office Scriptsで作る動的テーブル構造!Excel自動更新テーブル(ListObject)完全ガイド
New3
Office Scripts
Office Scriptsの開発環境をやさしく解説!スクリプト共有とチーム開発で進めるExcel自動化の基本
New4
Office Scripts
Office Scriptsの開発環境を理解しよう!OneDrive・SharePointと連携するExcel自動化の仕組み
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAで列の追加・行の削除を自動化!InsertとDeleteの使い方を初心者向けに徹底解説
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsで別ブックを開いてデータ取得する方法|OneDrive・SharePoint連携でExcel自動化
No.3
Java&Spring記事人気No3
Office Scripts
Office Scriptsで外部API連携!fetchとBearer Tokenで認証付きAPIを使う方法【Excel自動化×HTTP通信入門】
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAでセルに数式を入力!FormulaとFormulaR1C1の違いを徹底解説
No.5
Java&Spring記事人気No5
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBA参照設定エラー「参照が見つかりません」を完全解説!初心者でも原因と対処法がわかる
No.7
Java&Spring記事人気No7
Office Scripts
Office Scriptsでセル値を一括変換!Excel自動化でトリム・置換・整形をする方法
No.8
Java&Spring記事人気No8
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成