大体でIT
大体でIT
Excel VBAでRangeで取得したセル範囲を、全てループする方法についてご紹介します。使うVBA関数は、『For Each』です。For Eachを使えば、セル範囲の大きさを調べずに、全てのセルをループできるので、便利です。
この記事では、取得したセル範囲を、全てループする方法についてご紹介します。
セル範囲を全てループするには、『For Each』を使うとできます。
セル範囲の大きさとかを調べずに、全てループできるので、『For Each』便利です。
では、セル範囲を、全てループする方法について解説していきます。
初めに、ポイントとなるVBAコードについて、記載しておきます。
VBAコードだけ確認したい場合に、ご活用ください。
Dim A
'セル範囲を全てループ
For Each A In Range("A1:C3")
'セルの値をイミディエイト画面に出力
Debug.Print A.Value
Next
セル範囲を取得して、その範囲の全てをループする方法について、解説します。
『For Each』を使えば、簡単にセル範囲をループできるようになるので、便利です。
まず、セル範囲を取得するには、Rangeを使います。
Sub TEST1()
'セル範囲を選択
Range("A1:A4").Select
End Sub
Rangeを使ってセル範囲を取得
セル範囲を全てループするには、『For Each』を使います。
セル範囲を全てループして、セルの値を取得する。というのをやってみます。
Sub TEST2()
Dim A
'セル範囲を全てループ
For Each A In Range("A1:A4")
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
『In』のあとに記載した『.Range("A1:A4")』のセル範囲でループすることになります。
取得したセル範囲は、変数『a』にオブジェクトとして入力されます。
For Eachのイメージ
For Eachでセル範囲を全てループ
セルに入力された値を、一つずつ全て取得することができました。
次は、複数行と複数列のセル範囲を取得して、『For Each』でループしてみます。
結果は、複数行や列でも、同じようにすべてのセル範囲をループすることができます。
Sub TEST3()
Dim A
'セル範囲をすべてループ
For Each A In Range("A1:C3")
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
複数行で複数列のセル範囲を取得して、ループします。
複数行と複数列でループ
取得された数字を見ると、ループする順番としては、左→右の順で、ループしていることがわかります。
つまり、『For Each』を使うと、こんな感じで、ループします。
For Eachのループする方向
ループする順番も必要となってくる場合には、覚えておくといいです。
セル範囲を取得する際には、『CurrentRegion』を使うと便利なので、これについても、『For Each』を使ってみます。
CurrentRegionは、同じ表だとみなしたセル範囲を、一発で取得できるVBA関数です。
セルの範囲を、いちいち指定する必要がなくなるので、かなり楽になります。
セルに、値が入力されている範囲を取得して、選択してみます。
Sub TEST4()
'認識できる表のセル範囲を選択
Range("A1").CurrentRegion.Select
End Sub
CurrentRegionでセル範囲を取得
CurrentRegionでも、同じように『For Each』が使えるのかを確かめてみます。
セル範囲を『CurrentRegion』で取得して、『For Each』を使って全てのセルをループします。
Sub TEST5()
Dim A
'セル範囲を全てループ
For Each A In Range("A1").CurrentRegion
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
CurrentRegionのセル範囲を全てループ
『CurrentRegion』でも同じように、『For Each』を使えます。
『Selection』でも同じように、『For Each』が使えます。
Selectionは、現在選択しているセル範囲を、取得することができる、VBA関数です。
Selectionで選択したセル範囲から、『For Each』を使って、値を取得する。というのを作ってみます。
Sub TEST6()
Dim A
'選択したセル範囲を全てループ
For Each A In Selection
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
Selectionのセル範囲を全てループ
結果は、選択したセル範囲を、全てループすることができました。
Selectionを使えば、選択するセル範囲を変えると、簡単にループする範囲を変えることができます。
表の一部を選択して、その範囲を全てループする。というのをやってみます。
Sub TEST7()
Dim A
'選択したセル範囲を全てループ
For Each A In Selection
'セルの値をイミディエイト画面へ出力
Debug.Print A.Value
Next
End Sub
表の一部だけループ
特定の範囲だけループさせたい、といった場合に、Selection使えます。
この記事では、取得したセル範囲を、全てループする方法についてご紹介しました。
セル範囲を全てループするには、『For Each』を使うとできます。
セル範囲の取得には、『Range』や『CurrentRegion』、『Selection』などがあります。
他にもいろいろあって、セル範囲さえ取得できれば、『For Each』を使って全てループできます。
セル範囲の大きさとかを調べずに、全てループできるので、『For Each』便利です。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。