Home » ExcelVBA Rangeオブジェクト » アクティブセルを表すRangeを取得する-ActiveCell

アクティブセルを表すRangeを取得する-ActiveCell

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「excel vba アクティブセルのrangeオブジェクトを取得する」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

アクティブなセルを表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していらしたのでしょうか。

[スポンサードリンク]

アクティブセルを表すRangeオブジェクトを取得するサンプルマクロ

結論からいえば、拙著『いちばんやさしいExcel VBAの教本』の、「Lesson 59 Rangeオブジェクトを取得するプロパティについて学習しましょう」でもお伝えしている、ActiveCellプロパティを使えば、名前のとおりアクティブセルを表すRangeオブジェクトを取得できます。

入門書である拙著では扱っていないオブジェクト変数を使った以下のようなコードで、アクティブセルを表すRangeオブジェクトを取得することを確認できます。

Sub アクティブセルを取得する()
 Dim rng As Range
 Set rng = ActiveCell
End Sub

本当にRangeオブジェクトを取得したかったのか

「excel vba アクティブセルのrangeオブジェクトを取得する」
という検索キーワードが、本当は、アクティブセルを表すRangeオブジェクトを取得したかったのではなかった可能性もあると考えています。

アクティブセルのアドレス・行番号・列番号を取得したかった可能性も高いと考えています。

アドレス・行番号・列番号を取得したかったのであれば、以下のようにRangeオブジェクトのAddress・Row・Columnプロパティを使いましょう。

Sub アクティブセルのアドレス等を取得する()
 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 » ExcelVBA Rangeオブジェクト » アクティブセルを表すRangeを取得する-ActiveCell

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.