「excel vba アクティブセルのrangeオブジェクトを取得する」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
アクティブなセルを表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していらしたのでしょうか。
アクティブセルを表すRangeオブジェクトを取得するサンプルマクロ
結論からいえば、拙著『いちばんやさしいExcel VBAの教本』の、「Lesson 59 Rangeオブジェクトを取得するプロパティについて学習しましょう」でもお伝えしている、ActiveCellプロパティを使えば、名前のとおりアクティブセルを表すRangeオブジェクトを取得できます。
入門書である拙著では扱っていないオブジェクト変数を使った以下のようなコードで、アクティブセルを表すRangeオブジェクトを取得することを確認できます。
Dim rng As Range
Set rng = ActiveCell
End Sub
本当にRangeオブジェクトを取得したかったのか
「excel vba アクティブセルのrangeオブジェクトを取得する」
という検索キーワードが、本当は、アクティブセルを表すRangeオブジェクトを取得したかったのではなかった可能性もあると考えています。
アクティブセルのアドレス・行番号・列番号を取得したかった可能性も高いと考えています。
アドレス・行番号・列番号を取得したかったのであれば、以下のようにRangeオブジェクトのAddress・Row・Columnプロパティを使いましょう。
Dim rng As Range
Set rng = ActiveCell
MsgBox rng.Address(False, False)
MsgBox rng.Row
MsgBox rng.Column
End Sub
アクティブセルと選択セル
「excel vba アクティブセルのrangeオブジェクトを取得する」
を検索なさった方が、アクティブセルと選択セルの区別がついていない可能性も考えられます。
上図のように、A1:C3セルが選択されて、A1セルがアクティブなときに、ActiveCellプロパティで取得できるのは、A1セルだけを表すRangeオブジェクトです。
選択されているセルを表すRangeオブジェクトを取得したいのなら、WindowオブジェクトのRangeSelectionプロパティや、Selectionプロパティを使いましょう。
アクティブセルとアクティブセル領域
「excel vba アクティブセルのrangeオブジェクトを取得する」
を検索なさった方が、アクティブセルとアクティブセル領域の区別がついていない可能性も考えられます。
これは英語の「Current region」を「アクティブセル領域」とした、翻訳の罪も大きいと考えています。
上図のような場合、A1セルがアクティブセルで、A1:C3セルがアクティブセル領域です。
アクティブセル領域を表すRangeオブジェクトを取得したいのなら、RangeオブジェクトのCurrentRegionプロパティを使いましょう。
最終更新日時:2020-09-10 19:52
Home » Excel VBA Rangeオブジェクト » アクティブセルを表すRangeを取得する-ActiveCell