Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » Window.RangeSelectionで選択されているセルを取得する

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

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

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

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

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プロパティは、上位のオブジェクト式を省略できるグローバルメンバーではなく、Windowオブジェクトにだけ用意されているプロパティですから、上記のプロシージャで利用しているActiveWindowプロパティのような、Windowオブジェクトを取得するオブジェクト式に続けて記述する必要があります。

選択されているセルを取得して順番に処理するサンプルマクロ

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


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

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

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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » Window.RangeSelectionで選択されているセルを取得する

TrackBack:0

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

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » Window.RangeSelectionで選択されているセルを取得する

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

.