目次
何を返す?
今回の投稿では、 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」セルを選択して上記のマクロを実行してみます。
そうするとイミディエイトウィンドウに「結果 = "Range"」と出力されました。セルのオブジェクトの種類は「Range」のようです。
続けて、色々な種類のオブジェクトを対象にして、上記のマクロを実行してみます。
クリップアート
クリップアートの結果は、「Picture」になりました。
ワードアート
ワードアートの結果は「Rectangle」になりました。
jpg画像
jpg画像の結果は「Picture」になりました。
グラフ
グラフの結果は「ChartArea」になりました。
オートシェイプ(楕円)
オートシェイプ(楕円)の結果は「Oval」になりました。
オートシェイプ(三角形)
オートシェイプ(三角形)の結果は「Rectangle」になりました。
オートシェイプ(四角形)
オートシェイプ(四角形)の結果は「Rectangle」になりました。
オートシェイプ(矢印)
オートシェイプ(矢印)の結果は「Line」になりました。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
普段、 Selection プロパティはセル範囲を選択している前提でのみ使用していましたが、選択中のオブジェクトによってマクロの動作が違ってきそうですね。
以上閲覧ありがとうございました。