【VBA】VBAで繰り返し処理を実装する。ループの基礎から応用まで!


今回は、VBAでForやWhileを使ってループさせる方法を学んでいきます。
プログラミングの世界では、単純な操作を何度も繰り返すことは当たり前です。しかし、それを手作業で行うのは時間の無駄ですし、ヒューマンエラーの可能性も高まります。
そこで活躍するのが「ループ」です。ループは一連の指示を何度も実行することを可能にし、複雑な処理をシンプルに、効率的に実現します。
この記事では、VBAのループ処理の基本から応用までを解説します。ループの理解と使いこなせる技術を身につけることで、あなたのプログラミングスキルは新たなレベルへと飛躍します。
それでは、一緒に見ていきましょう!
VBAでの基本的なループ構造
VBAではいくつかのループ構造が提供されています。最も基本的なものはFor...Next
とDo...Loop
です。
For…Next
For...Next
ループは、決まった回数だけ繰り返し処理を行う際に使用します。以下は基本的な使い方です。
上記コードを実行することで、1から10までの数字を出力されます。
Do…Loop
一方、Do...Loop
は条件に応じてループを続ける、または終了するために使用します。
i = 1
Do While i <= 10
Debug.Print i
i = i + 1
Loop
このコードも1から10までの数字を出力しますが、ループの終了条件はDo While
の後の式によって決定されます。
ループの中断とスキップ
ループの中断
Exit For
またはExit Do
を使うと、ループの途中でループを終了させることができます。
例えば、次のコードは1から10までの数値を表示しますが、5に達した時点でループを終了します。
For i = 1 To 10
If i = 5 Then Exit For
Debug.Print i
Next i
Do…Loopの場合はExit Doを使います。
ループのスキップ
VBAには他言語のContinueなどのスキップ機能を持った構文はありませんが、GoTo
ステートメントとラベルを組み合わせることで同じ効果を得ることができます。
次のコードは1から10までの数値を表示しますが、5のときだけ出力をスキップします。
For i = 1 To 10
If i = 5 Then GoTo Skip
Debug.Print i
Skip:
Next i
3. VBAにおける高度なループの利用
ループ処理は、Excelシート内のセルを走査したり、配列の要素を操作したりする際に特に便利です。
また、ループ内で条件分岐を使用することで、より複雑な処理を行うことも可能です。
Dim rng As Range
Dim cell As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
For Each cell In rng
If cell.Value > 5 Then
cell.Interior.Color = RGB(255, 0, 0) ' 赤色にする
End If
Next cell
このコードは、Sheet1のA1からA10までのセルを走査し、セルの値が5より大きい場合にセルの背景色を赤色に変更します。
これらはVBAのループに関する基本的な知識ですが、練習と試行錯誤を重ねることで、より複雑で効率的なコードを書くことができるようになります。どんな作業も自動化することが可能なので、是非ともチャレンジしてみてください。

VBAを体系的に学びたい場合、本で学ぶことをお勧めしています。
kindle unlimited(キンドルアンリミテッド)であれば、いくつかのVBA関係の本を無料で読むこともできますよ。