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

For Each文の基本コード

Dim cell As Range

    For Each cell In Range("A1:A5")
        cell = "〇"
    Next cell
解説はこちら

🛠️コードの解説

  • Dim cell As Range
    セルを入れるための変数「cell」を用意
  • For Each cell In Range(“A1:A5”)
    A1~A5のセルを1つずつ「cell」に取り出す
  • cell = “〇”
    取り出したセルに「〇」を入力

繰り返し処理というと、For文ではダメなの?という疑問が出ますよね。
実はFor文とFor Each文では、繰り返し処理の方法が少し異なります。

  • For文
    変数の値を変化させながら繰り返し処理を行います。
  • For Each文
    指定した範囲のセルなどを1つずつ取り出しながら処理を行います。

では、A1~A5のセルに「〇」を入力する場合、For文だとどうなるかコードを見てみましょう。

Sub ForSample()
    Dim i As Long

        For i = 1 To 5
            Cells(i, 1) = "〇"
        Next i

End Sub
  • Dim i As Long
    繰り返し回数を数えるための変数「i」を用意
  • For i = 1 To 5
    「i」を1~5まで変化させながら繰り返す
  • Cells(i, 1) = “〇”
    A列の「i」行目のセルに「〇」を入力

For文とFor Each文は、どちらも繰り返し処理に使えますが、何を基準に繰り返すかが異なります。

  • For文
    「何行目・何列目」という番号を使って処理したい場合に向いています。
    例えば、表の2行目から6行目までを順番に処理する場合などに使います。
  • For Each文
    処理したい範囲や対象を指定し、その中にあるセルなどを1つずつ取り出して処理したいときに向いています。
    例えば、A1~A5のセルを処理する場合、セルの行番号を1、2、3……と変化させるのではなく、A1~A5という範囲を指定して、その中のセルを順番に処理できます。

このように、行番号や列番号などの数値を変化させながら処理したい場合はFor文、指定した範囲や対象を1つずつ処理したい場合はFor Each文が使いやすいでしょう。

For Each文のコードを使う実務マクロ