Excel VBAのFor Eachを完全解説!初心者でもわかるセル範囲・コレクションの繰り返し処理
生徒
「Excel VBAで同じ処理を何回もやる方法ってありますか?セルがたくさんあって大変で……」
先生
「ありますよ。VBAでは For Each を使うと、セルやデータの集まりを順番に処理できます。」
生徒
「パソコンもあまり触ったことがないんですが、それでも使えますか?」
先生
「大丈夫です。買い物かごを一つずつ確認する感覚で考えると、とてもわかりやすいですよ。」
1. For Eachとは?Excel VBAで繰り返し処理を簡単にする仕組み
Excel VBAの For Each は、たくさんあるものを一つずつ順番に処理するための文法です。 プログラミングでは、同じ作業を何度も行うことを 繰り返し処理 と呼びます。 For Eachは、その中でも特に初心者にやさしく、Excelのセル範囲やシート、ブックなどを扱うときに大活躍します。
たとえば、学校で配られたプリントを一枚ずつ確認する場面を想像してください。 「次のプリントを取って、名前を書く」という作業を、全員分くり返しますよね。 For Eachは、この「一つずつ取り出して同じことをする」という考え方とまったく同じです。
2. コレクションとは?For Eachでよく使う言葉をやさしく解説
For Eachを理解するうえで欠かせない言葉が コレクション です。 コレクションとは、「同じ種類のものが集まったグループ」のことです。 難しく聞こえますが、Excelではとても身近な存在です。
たとえば、セルの集まり、シートの集まり、ブックの集まりなどは、すべてコレクションです。 お弁当箱の中に、おにぎりやおかずが入っているイメージをするとわかりやすいでしょう。 For Eachは、そのお弁当箱の中身を一つずつ取り出して確認する役割を持っています。
3. For Eachの基本構文を覚えよう【Excel VBA初心者向け】
ここでは、For Eachの基本的な書き方を紹介します。 プログラミング未経験の方でも、形を覚えるだけで使えるようになります。
Dim c As Range
For Each c In Range("A1:A5")
MsgBox c.Value
Next c
このプログラムでは、A1からA5までのセルを一つずつ取り出して、その中身を画面に表示しています。 Dim は「入れ物を用意する」という意味で、Range はセルを表す言葉です。 MsgBoxは、メッセージを画面に表示する命令です。
4. セル範囲をFor Eachで処理するメリット
Excel VBAでセルを操作するとき、For Eachを使うとコードがとても読みやすくなります。 行番号を数えたり、何行あるかを考えたりする必要がありません。
たとえば、すべてのセルの文字を赤くしたい場合でも、For Eachなら簡単です。
Dim cell As Range
For Each cell In Range("B1:B5")
cell.Font.Color = vbRed
Next cell
このように、セルを一つずつ自動で選んで処理してくれるため、ミスが減り、初心者でも安心して使えます。
5. 数字が入っているセルだけを処理してみよう
For Eachは、条件分岐と組み合わせることで、さらに便利になります。 ここでは、「数字が入っているセルだけ」を処理する例を見てみましょう。
Dim c As Range
For Each c In Range("C1:C5")
If IsNumeric(c.Value) Then
c.Value = c.Value * 2
End If
Next c
IsNumeric は、「それが数字かどうか」を調べる命令です。 数字の場合だけ処理することで、文字が入っていてもエラーにならず、安全に動きます。
6. シートの集まりをFor Eachで順番に処理する
For Eachは、セルだけでなく、シートの集まりにも使えます。 Excelファイルに複数のシートがある場合、一つずつ同じ処理を行いたいときに便利です。
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("A1").Value = "確認済み"
Next ws
このプログラムでは、すべてのシートのA1セルに同じ文字を入力しています。 Worksheetsは「シートのコレクション」を意味します。
7. For文との違いを知ってFor Eachを正しく使おう
繰り返し処理には For 文もありますが、For Eachは考え方が少し違います。 For文は「回数」を指定し、For Eachは「中身」を順番に取り出します。
初心者のうちは、セルやシートを扱う場合はFor Eachを使う、と覚えておくと混乱しにくくなります。 コードも短くなり、読みやすくなるため、Excel VBAの学習にも向いています。
8. For Eachでエラーを減らし安全にExcelを自動化する
Excel VBAでの自動化では、エラーが出ると不安になります。 For Eachは、存在するものだけを順番に処理するため、指定ミスによるエラーが起きにくい特徴があります。
パソコン操作に慣れていない方でも、For Eachを使えば「一つずつ確実に処理する」プログラムが作れます。 Excel VBAの基本文法として、変数やIf文とあわせて、ぜひしっかり身につけておきたい考え方です。