大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAでRangeで取得したセル範囲を、全てループする方法についてご紹介します。使うVBA関数は、『For Each』です。For Eachを使えば、セル範囲の大きさを調べずに、全てのセルをループできるので、便利です。

はじめに

この記事では、取得したセル範囲を、全てループする方法についてご紹介します。

セル範囲を全てループするには、『For Each』を使うとできます。

セル範囲の大きさとかを調べずに、全てループできるので、『For Each』便利です。

では、セル範囲を、全てループする方法について解説していきます。

この記事で紹介すること

  • セル範囲を全てループする方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードについて、記載しておきます。

VBAコードだけ確認したい場合に、ご活用ください。

'セル範囲を全てループ
For Each a In ActiveSheet.Range("A1:C3")
    'セルの値をイミディエイト画面に出力
    Debug.Print a.Value
Next

では、解説していきます。

VBAでセル範囲をループする

セル範囲を取得して、その範囲の全てをループする方法について、解説します。

『For Each』を使えば、簡単にセル範囲をループできるようになるので、便利です。

Rangeでセル範囲を取得

まず、セル範囲を取得するには、Rangeを使います。

セル範囲を取得して、選択してみます。

Sub TEST1()
    
    'セル範囲を選択
    ActiveSheet.Range("A1:A4").Select
    
End Sub

実行してみます。

Rangeを使ってセル範囲を取得

Rangeを使ってセル範囲を取得する

セル範囲を取得して、セルを選択できました。

これで、セル範囲を取得できます。

次は、セル範囲をループする方法です。

For Eachを使ってセル範囲でループ

セル範囲を全てループするには、『For Each』を使います。

セル範囲を全てループして、セルの値を取得する。というのをやってみます。

Sub TEST2()
    
    'セル範囲を全てループ
    For Each a In ActiveSheet.Range("A1:A4")
        'セルの値をイミディエイト画面へ出力
        Debug.Print a.Value
    Next
        
End Sub

『In』のあとに記載した『.Range("A1:A4")』のセル範囲でループすることになります。

取得したセル範囲は、変数『a』にオブジェクトとして入力されます。

イメージはこんな感じです。

For Eachのイメージ

For Eachを使ってセル範囲を全てループするイメージ

実行してみます。

For Eachでセル範囲を全てループ

For Eachを使ってセル範囲を全てループして値を取得する

セルに入力された値を、一つずつ全て取得することができました。

『For Each』、便利です。

複数行と複数列でループ

次は、複数行と複数列のセル範囲を取得して、『For Each』でループしてみます。

結果は、複数行や列でも、同じようにすべてのセル範囲をループすることができます。

やってみます。

Sub TEST3()
    
    'セル範囲をすべてループ
    For Each a In ActiveSheet.Range("A1:C3")
        'セルの値をイミディエイト画面へ出力
        Debug.Print a.Value
    Next
    
End Sub

複数行で複数列のセル範囲を取得して、ループします。

複数行と複数列でループ

For Eachで複数行と複数列のセル範囲を全てループした結果

全てセルから、値を取得することができました。

取得された数字を見ると、ループする順番としては、左→右の順で、ループしていることがわかります。

つまり、『For Each』を使うと、こんな感じで、ループします。

For Eachのループする方向

For Eachを使ってループする方向

ループする順番も必要となってくる場合には、覚えておくといいです。

セル範囲の取得はCurrentRegionが便利

セル範囲を取得する際には、『CurrentRegion』を使うと便利なので、これについても、『For Each』を使ってみます。

CurrentRegionでセル範囲を取得

CurrentRegionは、同じ表だとみなしたセル範囲を、一発で取得できるVBA関数です。

セルの範囲を、いちいち指定する必要がなくなるので、かなり楽になります。

ちょっとやってみます。

セルに、値が入力されている範囲を取得して、選択してみます。

Sub TEST4()
    
    '認識できる表のセル範囲を選択
    ActiveSheet.Range("A1").CurrentRegion.Select
    
End Sub

実行してみます。

CurrentRegionでセル範囲を取得

CurrrentRegionでセル範囲を取得した結果

セルが入力されているセル範囲を取得できました。

本題は、次です。

CurrentRegionでも、同じように『For Each』が使えるのかを確かめてみます。

For Eachを使ってセル範囲でループ

セル範囲を『CurrentRegion』で取得して、『For Each』を使って全てのセルをループします。

Sub TEST5()
    
    'セル範囲を全てループ
    For Each a In ActiveSheet.Range("A1").CurrentRegion
        'セルの値をイミディエイト画面へ出力
        Debug.Print a.Value
    Next
    
End Sub

実行してみます。

CurrentRegionのセル範囲を全てループ

CurrentRegionとFor Eachを使ってすべてのセルをループした結果

全てのセルをループすることができました。

『CurrentRegion』でも同じように、『For Each』を使えます。

Selectionで選択したセル範囲をループ

『Selection』でも同じように、『For Each』が使えます。

Selectionは、現在選択しているセル範囲を、取得することができる、VBA関数です。

For Eachを使ってセル範囲をループ

Selectionで選択したセル範囲から、『For Each』を使って、値を取得する。というのを作ってみます。

Sub TEST6()
    
    '選択したセル範囲を全てループ
    For Each a In Selection
        'セルの値をイミディエイト画面へ出力
        Debug.Print a.Value
    Next
    
End Sub

では、全てのセルを取得できるか、実行してみます。

Selectionのセル範囲を全てループ

Selectionで選択したセル範囲から、For Eachを使って、値を取得した結果

結果は、選択したセル範囲を、全てループすることができました。

簡単ですね。

選択するセル範囲を変えてみる

Selectionを使えば、選択するセル範囲を変えると、簡単にループする範囲を変えることができます。

表の一部を選択して、その範囲を全てループする。というのをやってみます。

Sub TEST7()
    '選択したセル範囲を全てループ
    For Each a In Selection
        'セルの値をイミディエイト画面へ出力
        Debug.Print a.Value
    Next
    
End Sub

実行してみます。

表の一部だけループ

Selectionを使って表の一部を選択してすべてループした結果

結果は、選択したセル範囲のみループできています。

特定の範囲だけループさせたい、といった場合に、Selection使えます。

おわりに

この記事では、取得したセル範囲を、全てループする方法についてご紹介しました。

セル範囲を全てループするには、『For Each』を使うとできます。

セル範囲の取得には、『Range』や『CurrentRegion』、『Selection』などがあります。

他にもいろいろあって、セル範囲さえ取得できれば、『For Each』を使って全てループできます。

セル範囲の大きさとかを調べずに、全てループできるので、『For Each』便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す