動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2207 ビルド15427.20210 Microsoft Store)
「currentregionで取得した レンジ範囲を変数に入れる」
といった検索でアクセスがありました。
Excel VBAのRange.CurrentRegionプロパティで取得したRangeオブジェクトを、
変数に代入するにはどのようなコードを書けばいいのか調べていた方による検索です。
[スポンサードリンク]
以下のようなコードを書いてみたものの
Dim rng As Range rng = ActiveCell.CurrentRegion
「実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません。」
エラーになってしまったのかもしれません。
CurrentRegionの戻り値を変数に代入するサンプルマクロ
以下のExcelマクロを参考にしてください。
Sub CurrentRegionsで取得したRangeを代入し確認する()
Dim rng As Range
Set rng = ActiveCell.CurrentRegion
rng.Select
MsgBox rng.Address(False, False)
End Sub
Dim rng As Range
Set rng = ActiveCell.CurrentRegion
rng.Select
MsgBox rng.Address(False, False)
End Sub
実行すると、「ActiveCell.CurrentRegion」で取得したアクティブセル領域が選択され、そのセル番地がメッセージボックスに表示されます。
ポイントは、
Set rng = ActiveCell.CurrentRegion
の「Set」です。
VBAではオブジェクト変数への代入にSetが必要
VBAの場合、単なるデータを変数に代入する場合は、キーワードを使わず
変数 = 単なるデータを取得する式
といった書き方ができますが、オブジェクトの場合には
Set オブジェクト変数 = オブジェクトを取得する式
とSetキーワードを使う必要があります。
この仕様はExcel VBAのRangeオブジェクトに限らず、Access VBAでもWord VBAでもPowerPoint VBAでも、ありとあらゆるオブジェクトで共通するVBAの仕様です。
[スポンサードリンク]
Home » Excel VBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの戻り値を変数に代入する