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

アクティブセルを表すRangeオブジェクトを取得する-ActiveCellプロパティ

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

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

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

[スポンサードリンク]

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

結論からいえば、ActiveCellプロパティを使えば、名前のとおりアクティブセルを表すRangeオブジェクトを取得できます。


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

オブジェクトブラウザーを使って完全一致で「activecell」を検索すればわかるとおり、ActiveCellはApplicationオブジェクトとWindowオブジェクトに用意されているプロパティですから、

オブジェクトブラウザー: activecellの検索

上記の、
  Set rng = ActiveCell
は、
  Set rng = Application.ActiveCell
あるいは、
  Set rng = ActiveWindow.ActiveCell
などといった書き方もできます。

しかしActiveCellプロパティは、上位のオブジェクト式を省略して書けるグローバルメンバーですから、

オブジェクトブラウザー: グローバル-ActiveCell

上記プロシージャのとおり、上位のオブジェクトを取得する式を省略して、
  Set rng = ActiveCell
と書けばOKです。

本当に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プロパティを使いましょう。

[スポンサードリンク]

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

TrackBack:0

TrackBack URL
[スポンサードリンク]

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

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

検索

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

.