【VBA】Rangeで取得したセル範囲をループする【For Eachを使います】

嚯嚯go發表於2024-09-30

參照元:【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使えます。

相關文章