For Each文を使って、セルやデータを1つずつ順番に処理してみよう
VBAでExcelの作業を自動化していると
「指定した範囲のセルを1つずつ確認したい」「表のデータを順番に処理したい」
という場面があります。
そんなときに便利なのが、For Each文です。
For Each文を使うと、指定した範囲のセルなどを1つずつ取り出しながら、同じ処理を繰り返すことができます。
練習用ファイルを準備していますので、実際にやってみましょう!
ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!
💡練習用ファイルを使う前の準備
- ファイルをダウンロードして開く
- マクロ有効ブック(.xlsm)形式で保存し直す
For Each文で条件に合うものに処理をしていく
指定した範囲のセルを1つずつ確認し、空白セルがあった場合に「未入力」と入力してみます。
For Each文を使うことで、対象範囲のセルを順番に処理することができます。
今回は動作確認用に【音・テロップなし】の動画を準備しました。
コードを1行ずつ実行しながら、セルが順番に処理されていく様子を確認してみましょう。
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コードの解説
For Each cell In Range(“B2:B10”) で、B2~B10のセルを1つずつ順番に取り出して処理します。
取り出したセルは、変数「cell」に格納されます。
If cell.Value = “” Then で、取り出したセルの値が空白かどうかを確認します。
セルが空白の場合は、次の処理を実行します。
cell.Value = “未入力” によって、空白だったセルに「未入力」と入力します。
空白ではないセルの場合は、この処理を行わず次のセルへ進みます。
Next cell で次のセルへ進み、同じ処理を繰り返します。
B2~B10までのすべてのセルを確認すると、マクロの処理が終了します。
まとめ
For Each文を使うと、指定した範囲のセルを1つずつ取り出しながら、同じ処理を繰り返すことができます。
今回は、For Each文とIf文を組み合わせて、B2~B10のセルを順番に確認し、空白セルに「未入力」と入力しました。
セルやデータを1つずつ確認しながら処理したい場合に便利なので、ぜひ実際にコードを書いて動かしてみてください。

If文の基本は【こちら】




