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

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

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

「vba 選択セル 取得」
「excel vba 選択中のセル 取得」
「vba 選択されている全てのセルを取得」
といった検索キーワードをキッカケに、Window.RangeSelectionプロパティで、選択されているセルを表すRangeオブジェクトを取得できることをご紹介しました。

Window.RangeSelectionプロパティよりも、選択されているセルへの参照を取得するのに、もっと使われるプロパティがあります。

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

Selectionプロパティです。

[スポンサードリンク]

選択されているセルを取得するサンプルマクロ

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


Sub 選択されている全てのセルを取得する()
 If TypeName(Selection) <> "Range" Then Exit Sub
 MsgBox Selection.Address(False, False)
End Sub

Selectionプロパティは、選択されているものを表すオブジェクトを返すプロパティです。

何が返されるかは、実行してみない限りはわかりません。

例えば、図形が選択されているときに、
 MsgBox Selection.Address(False, False)
が実行されると、実行時エラーが発生してしまいます。
これを避けるために、TypeName関数を使って選択されているものがRangeオブジェクトであることを事前に確認する、
 If TypeName(Selection) <> "Range" Then Exit Sub
が入っています。

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

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

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


Sub 選択されている全てのセルを取得して順番に処理する()
 Dim rng As Range

 If TypeName(Selection) <> "Range" Then Exit Sub
 For Each rng In Selection
  MsgBox rng.Address(False, False)
 Next rng
End Sub

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

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

「vba 選択セル範囲を for each で取得する」
という検索をなさった方には、このプロシージャが参考になるでしょう。

関連語句
Visual Basic for Applications
[スポンサードリンク]

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

TrackBack:0

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

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

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

検索

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

.