読むのにかかる時間: 1未満

For Each文を使って、セルやデータを1つずつ順番に処理してみよう

VBAでExcelの作業を自動化していると

「指定した範囲のセルを1つずつ確認したい」「表のデータを順番に処理したい」

という場面があります。

そんなときに便利なのが、For Each文です。
For Each文を使うと、指定した範囲のセルなどを1つずつ取り出しながら、同じ処理を繰り返すことができます。

練習用ファイルを準備していますので、実際にやってみましょう!

マクロを動かすための重要なお願い

ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!

💡練習用ファイルを使う前の準備

For Each文で条件に合うものに処理をしていく

指定した範囲のセルを1つずつ確認し、空白セルがあった場合に「未入力」と入力してみます。
For Each文を使うことで、対象範囲のセルを順番に処理することができます。

今回は動作確認用に【音・テロップなし】の動画を準備しました。
コードを1行ずつ実行しながら、セルが順番に処理されていく様子を確認してみましょう。

For Each文の動作を動画で確認する
For Each動作確認用

For Each文のコード

Sub ForEachSample()
    Dim cell As Range
    
    For Each cell In Range("B2:B10")
        If cell.Value = "" Then
            cell.Value = "未入力"
        End If
    Next cell
End Sub

コードの解説

STEP1
For Each文でセルを1つずつ取り出す

For Each cell In Range(“B2:B10”) で、B2~B10のセルを1つずつ順番に取り出して処理します。
取り出したセルは、変数「cell」に格納されます。

STEP2
セルが空白か確認する

If cell.Value = “” Then で、取り出したセルの値が空白かどうかを確認します。
セルが空白の場合は、次の処理を実行します。

STEP3
空白セルに「未入力」と入力する

cell.Value = “未入力” によって、空白だったセルに「未入力」と入力します。
空白ではないセルの場合は、この処理を行わず次のセルへ進みます。

STEP4
次のセルへ進んで処理を繰り返す

Next cell で次のセルへ進み、同じ処理を繰り返します。
B2~B10までのすべてのセルを確認すると、マクロの処理が終了します。

まとめ

For Each文を使うと、指定した範囲のセルを1つずつ取り出しながら、同じ処理を繰り返すことができます。

今回は、For Each文とIf文を組み合わせて、B2~B10のセルを順番に確認し、空白セルに「未入力」と入力しました。

セルやデータを1つずつ確認しながら処理したい場合に便利なので、ぜひ実際にコードを書いて動かしてみてください。

If文の基本は【こちら