【EXCEL VBA | CurrentRegionプロパティ】見えてるセルだけ対象にする

スポンサーリンク

CurrentRegionプロパティ

Rangeオブジェクトで指定されているセルの、「アクティブセル領域」を取得出来ます。

ワークシート上のショートカットで言うところの、「Ctrl + Shift + *」ですね。


アクティブセル領域とは、アクティブ セルを含み、空白の行と列で囲まれているデータ領域


フィルターかけた表全体をコピーする場合に、絞り込んだあとの見えてるところだけコピーしたい場合に便利に使えます。

構文

Rangeオブジェクト.CurrentRegion

これで、アクティブセルのあるところの、アクティブセル領域を取得出来ます。

使い方

次のような表があった場合、アクティブセル領域を選択してみましょう。

Sub sample()

    ActiveSheet.Range("A4").CurrentRegion.Select
    
End Sub

ここでは、セルをA4にしていますが、表の中ならどこでもOKです。

実行すると次のように、A4セルのアクティブセル領域が選択されます。

データが追加で入力されるシートなど、選択範囲が変わる表を指定するときに便利に使えます(^o^)

そして、フィルターで絞った表の見えてるところをコピーする場合も便利です。

次の表で、A列が”ひらちんの部屋”のものをAutoFilterで絞り込んで、絞り込んだものをコピーして、D列に貼り付けてみます。

コードはこちらです。 ※AutoFilterが分からないかたは先にこちら

Sub sample()

    With ActiveSheet

        'A列を”ひらちんの部屋”で絞り込む
        .Range("A1").AutoFilter 1, "ひらちんの部屋"
        
        'アクティブセル領域の指定
         .Range("A1").CurrentRegion.Copy .Range("D1")
         
        'フィルターの解除
        .Range("A1").AutoFilter 1
    
    End With

End Sub

オートフィルターで絞り込んだ後、CurrentRegionプロパティでA1セルアクティブ領域をコピーして、D1セルに貼り付ける処理を書いています。

最後に、フィルターで絞り込まれているところを解除しています。

分かりやすいように、動画でステップ実行の様子をみてみましょう!

このように、フィルターに対してCurrentRegionを実行すると、見えてるところだけコピーすることが出来ます(^o^)