カテゴリ: Excel VBA 更新日: 2026/02/15

Excel VBAのFor Eachを完全解説!初心者でもわかるセル範囲・コレクションの繰り返し処理

For Eachを使いこなそう!コレクション・セル範囲の処理が簡単になる
For Eachを使いこなそう!コレクション・セル範囲の処理が簡単になる

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

生徒

「Excel VBAで同じ処理を何回もやる方法ってありますか?セルがたくさんあって大変で……」

先生

「ありますよ。VBAでは For Each を使うと、セルやデータの集まりを順番に処理できます。」

生徒

「パソコンもあまり触ったことがないんですが、それでも使えますか?」

先生

「大丈夫です。買い物かごを一つずつ確認する感覚で考えると、とてもわかりやすいですよ。」

1. For Eachとは?Excel VBAで繰り返し処理を簡単にする仕組み

1. For Eachとは?Excel VBAで繰り返し処理を簡単にする仕組み
1. For Eachとは?Excel VBAで繰り返し処理を簡単にする仕組み

Excel VBAの For Each は、たくさんあるものを一つずつ順番に処理するための文法です。 プログラミングでは、同じ作業を何度も行うことを 繰り返し処理 と呼びます。 For Eachは、その中でも特に初心者にやさしく、Excelのセル範囲やシート、ブックなどを扱うときに大活躍します。

たとえば、学校で配られたプリントを一枚ずつ確認する場面を想像してください。 「次のプリントを取って、名前を書く」という作業を、全員分くり返しますよね。 For Eachは、この「一つずつ取り出して同じことをする」という考え方とまったく同じです。

2. コレクションとは?For Eachでよく使う言葉をやさしく解説

2. コレクションとは?For Eachでよく使う言葉をやさしく解説
2. コレクションとは?For Eachでよく使う言葉をやさしく解説

For Eachを理解するうえで欠かせない言葉が コレクション です。 コレクションとは、「同じ種類のものが集まったグループ」のことです。 難しく聞こえますが、Excelではとても身近な存在です。

たとえば、セルの集まり、シートの集まり、ブックの集まりなどは、すべてコレクションです。 お弁当箱の中に、おにぎりやおかずが入っているイメージをするとわかりやすいでしょう。 For Eachは、そのお弁当箱の中身を一つずつ取り出して確認する役割を持っています。

3. For Eachの基本構文を覚えよう【Excel VBA初心者向け】

3. For Eachの基本構文を覚えよう【Excel VBA初心者向け】
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で処理するメリット

4. セル範囲をFor Eachで処理するメリット
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. 数字が入っているセルだけを処理してみよう

5. 数字が入っているセルだけを処理してみよう
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で順番に処理する

6. シートの集まりをFor Eachで順番に処理する
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を正しく使おう

7. For文との違いを知ってFor Eachを正しく使おう
7. For文との違いを知ってFor Eachを正しく使おう

繰り返し処理には For 文もありますが、For Eachは考え方が少し違います。 For文は「回数」を指定し、For Eachは「中身」を順番に取り出します。

初心者のうちは、セルやシートを扱う場合はFor Eachを使う、と覚えておくと混乱しにくくなります。 コードも短くなり、読みやすくなるため、Excel VBAの学習にも向いています。

8. For Eachでエラーを減らし安全にExcelを自動化する

8. For Eachでエラーを減らし安全にExcelを自動化する
8. For Eachでエラーを減らし安全にExcelを自動化する

Excel VBAでの自動化では、エラーが出ると不安になります。 For Eachは、存在するものだけを順番に処理するため、指定ミスによるエラーが起きにくい特徴があります。

パソコン操作に慣れていない方でも、For Eachを使えば「一つずつ確実に処理する」プログラムが作れます。 Excel VBAの基本文法として、変数やIf文とあわせて、ぜひしっかり身につけておきたい考え方です。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法