Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » 選択セルを取得する-RangeSelectionプロパティ

選択セルを取得する-RangeSelectionプロパティ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba 選択セル 取得」
「excel vba 選択中のセル 取得」
「vba 選択されている全てのセルを取得」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

Excel VBA(Visual Basic for Applications)で、選択されているすべてのセルを表すRangeオブジェクトを取得するコードを探していた方による検索です。

Window.RangeSelectionプロパティで選択セルを取得できる

Windowオブジェクトに用意されているRangeSelectionプロパティを利用するのが、

Window.RangeSelectionで選択されているセルを取得する

ひとつの方法です。

[スポンサードリンク]

Window.RangeSelectionで選択されているセルを取得するサンプル

以下のSubプロシージャを実行すると、選択されているセル範囲のアドレスがメッセージボックスに表示されます。

Sub 選択されている全セルを取得する()
 MsgBox _
   ActiveWindow.RangeSelection.Address(False, False)
End Sub

ActiveWindowプロパティで、アクティブなウィンドウを表すWindowオブジェクトを取得して、

Window.RangeSelectionで選択されているセルを取得する

WindowオブジェクトのRangeSelectionプロパティを使って、選択されているすべてのセルを表すRangeオブジェクトを取得して、

Window.RangeSelectionで選択されているセルを取得する

RangeオブジェクトのAddressプロパティを使って、選択されている全セルのアドレスを取得しています。

RangeSelectionプロパティはグローバルメンバーではない

RangeSelectionプロパティは、上位のオブジェクト式を省略できるグローバルメンバーではなく、Windowオブジェクトにだけ用意されているプロパティです。

ですから上記のプロシージャで利用しているActiveWindowプロパティのような、Windowオブジェクトを取得するコードに続けて記述する必要があります。

Window.RangeSelectionで選択セルを取得して順番に処理するサンプル

選択されているすべてのセルを取得して、順番に処理をしたいということであれば、以下のSubプロシージャが参考になるでしょう。

Sub 選択されている全セルを取得して順番に処理する()
 Dim rng As Range
 For Each rng In ActiveWindow.RangeSelection
  MsgBox rng.Address(False, False)
 Next rng
End Sub

上記のSubプロシージャを実行すると、選択されているセルのアドレスが、順番にメッセージボックスに表示されます。

オブジェクト式「ActiveWindow.RangeSelection」は、複数セルが選択されていれば、コレクションとしてのRangeオブジェクトを返します。コレクションとしてのRangeオブジェクトに含まれる個々のRangeオブジェクトをFor Each~Nextループで処理しているのが上記のSubプロシージャです。

最終更新日時:2019-01-21 14:49

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » 選択セルを取得する-RangeSelectionプロパティ

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

検索


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

.