Excel VBA(Visual Basic for Applications)で、RangeオブジェクトのCurrentRegionプロパティを使うと、
アクティブセル領域を表すRangeオブジェクトを取得できます。
このRange.CurrentRegionプロパティに関して、
「vba currentregion シートにデータが無い場合」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
ワークシート上にデータが存在しないときに、Range.CurrentRegionが何を返すのか、どうなるのかを疑問に感じた方による検索キーワードでしょうか。
CurrentRegionで返されるセル範囲を確認するサンプルマクロ
以下のようなSubプロシージャで、Range.CurrentRegionの戻りを確認することができます。
Dim rng As Range Set rng = Range("A1").CurrentRegion
MsgBox rng.Address(False, False)
End Sub
A1:G7セルに隙間なくデータが入力されているときに、上記のマクロを実行すると、メッセージボックスには
「A1:G7」
と表示されます。
A1:G7セルのデータを削除してから再度実行すると、今度は、
「A1」
と表示されます。
これが、
「vba currentregion シートにデータが無い場合」
という検索をなさった方が求めていた答えです。
データを変更したりコードを変更したりしてサンプルマクロを実行しましょう
次に、G8:G20セルだけに隙間なくデータを入力して再度マクロを実行してみましょう。
この場合もやっぱり、
「A1」
と表示されます。
上記のプロシージャのコードは、
Set rng = Range("A1").CurrentRegion
と、あくまでもA1セルのアクティブセル領域を取得するオブジェクト式になっているからです。
次に、
Set rng = Range("A1").CurrentRegion
の部分を、
Set rng = Range("G8").CurrentRegion
に変更してから実行しましょう。
今度は
「G8:G20」
と表示されます。
G8:G20セルに隙間なくデータを入力しているからです。
つづいてG8:G20セルのデータを削除して再度実行です。
今度はメッセージボックスに、
「G8」
と表示されます。
コードが、
Set rng = Range("G8").CurrentRegion
と、G8セルのアクティブセル領域を取得するコードになっているからです。
これも、
「vba currentregion シートにデータが無い場合」
という検索をなさった方が求めていた答えのはずです。
- Newer:CurrentRegionの行高を変更するには
- Older:VBAでピボットテーブルの小計を表示しないように
Home » Excel VBA Rangeオブジェクト » CurrentRegionプロパティ » データがない場合のCurrentRegionは