目次

何を返す?

今回の投稿では、 ExcelVBA の Selection プロパティが返すオブジェクトの種類を調べてみることにしました。セル、グラフ、写真 .. など種類の異なるオブジェクトを対象にして、 TypeName 関数で情報を取得するマクロを作成してみました。

ワークシート内にオートシェイプ、画像などを挿入してみました。
ワークシート内にオートシェイプ、画像などを挿入してみました。

目次まで戻る

マクロ

早速、以下のようなマクロを作成してみました。変数「s」は色々な種類のデータを格納可能なバリアント型にしています。Selection プロパティと TypeName 関数を使用しています。 TypeName 関数は、変数のデータ型の情報を文字列の形式で取得できます。

Sub Selectionプロパティテスト()

Dim s As Variant 'バリアント型の変数を宣言している。

Set s = Selection '現在選択中の何かのオブジェクトへの参照がセットされる。
t = TypeName(s) 'TypeName 関数で変数「s」の情報を取得している。

Debug.Print "結果 = " & """" & t & """"

Set s = Nothing '参照解除

End Sub

セル

まずは、通常のセルを対象にして調べてみることにします。「A1」セルを選択して上記のマクロを実行してみます。

「A1」セルを選択してマクロを実行してみます。
「A1」セルを選択してマクロを実行してみます。

そうするとイミディエイトウィンドウに「結果 = "Range"」と出力されました。セルのオブジェクトの種類は「Range」のようです。

イミディエイトウィンドウに「結果 = "Range"」と出力されました。
イミディエイトウィンドウに「結果 = "Range"」と出力されました。

続けて、色々な種類のオブジェクトを対象にして、上記のマクロを実行してみます。

クリップアート

クリップアートの結果は、「Picture」になりました。

クリップアートの typename 関数の結果は Picture になりました。
クリップアートの typename 関数の結果は Picture になりました。

ワードアート

ワードアートの結果は「Rectangle」になりました。

ワードアートを選択しています。
ワードアートを選択しています。

jpg画像

jpg画像の結果は「Picture」になりました。

jpg画像を選択しています。
jpg画像を選択しています。

グラフ

グラフの結果は「ChartArea」になりました。

埋め込みグラフを選択しています。
埋め込みグラフを選択しています。

オートシェイプ(楕円)

オートシェイプ(楕円)の結果は「Oval」になりました。

オートシェイプの楕円を選択しています。
オートシェイプの楕円を選択しています。

オートシェイプ(三角形)

オートシェイプ(三角形)の結果は「Rectangle」になりました。

オートシェイプの三角形を選択しています。
オートシェイプの三角形を選択しています。

オートシェイプ(四角形)

オートシェイプ(四角形)の結果は「Rectangle」になりました。

オートシェイプの四角形を選択しています。
オートシェイプの四角形を選択しています。

オートシェイプ(矢印)

オートシェイプ(矢印)の結果は「Line」になりました。

オートシェイプの矢印を選択しています。
オートシェイプの矢印を選択しています。

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

普段、 Selection プロパティはセル範囲を選択している前提でのみ使用していましたが、選択中のオブジェクトによってマクロの動作が違ってきそうですね。

以上閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿