参照元:【VBA】Rangeで取得したセル範囲をループする【For Eachを使います】
https://daitaideit.com/vba-range-for-each/
ポイントとなるVBAコード
初めに、ポイントとなるVBAコードについて、記載しておきます。
VBAコードだけ確認したい場合に、ご活用ください。
Dim A
'セル範囲を全てループ
For Each A In Range("A1:C3")
'セルの値をイミディエイト画面に出力
Debug.Print A.Value
Next
Rangeでセル範囲を取得
Sub TEST1()
'セル範囲を選択
Range("A1:A4").Select
End Sub
For Eachを使ってセル範囲でループ
セル範囲を全てループするには、『For Each』を使います。
セル範囲を全てループして、セルの値を取得する。というのをやってみます。
Sub TEST2()
Dim A
'セル範囲を全てループ
For Each A In Range("A1:A4")
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
For Eachのイメージ
複数行と複数列でループ
Sub TEST3()
Dim A
'セル範囲をすべてループ
For Each A In Range("A1:C3")
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
For Eachのループする方向
CurrentRegionでセル範囲を取得
CurrentRegionは、同じ表だとみなしたセル範囲を、一発で取得できるVBA関数です。
セルの範囲を、いちいち指定する必要がなくなるので、かなり楽になります。
セルに、値が入力されている範囲を取得して、選択してみます。
Sub TEST4()
'認識できる表のセル範囲を選択
Range("A1").CurrentRegion.Select
End Sub
CurrentRegionでセル範囲を取得
- For Eachを使ってセル範囲でループ
セル範囲を『CurrentRegion』で取得して、『For Each』を使って全てのセルをループします。
Sub TEST5()
Dim A
'セル範囲を全てループ
For Each A In Range("A1").CurrentRegion
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
Selectionで選択したセル範囲をループ
For Eachを使ってセル範囲をループ
Selectionで選択したセル範囲から、『For Each』を使って、値を取得する。というのを作ってみます。
Sub TEST6()
Dim A
'選択したセル範囲を全てループ
For Each A In Selection
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
選択するセル範囲を変えてみる
Selectionを使えば、選択するセル範囲を変えると、簡単にループする範囲を変えることができます。
特定の範囲だけループさせたい、といった場合に、Selection使えます。