Selection
で選択中のセルなどを取得できたのはいいけど、選択されているのがセルなのかそれ以外なのかはどうやって判定すればいいのよ?
オブジェクトの型名を文字列で判定、が正解なのかな?
TypeName()
を使えば変数の中身の型が文字列で返るので、特定の型のオブジェクトにのみ処理を行いたいならそれで判定すればよさそう。
もしオブジェクトのクラス名が変わったら正常動作しなくなるのでちょっと気持ち悪いけど、システム定義のクラスでそんな事はまずないだろうし、他にもっとスマートな方法も見つけられなかったのでまあいいか。
'現在選択しているのがセル(Range)の場合のみ何らかの処理を行う
If TypeName(Selection) = "Range" Then
Debug.Print "セルを選択中:"; Selection.Address
Else
Debug.Print "セルじゃない:"; TypeName(Selection)
End If
値型の型も判定できるけど
TypeName()
に整数などの値型を渡した場合も、"Integer"
などが返るので判定できるけど、それとは別に VarType()
というのもあって、文字列ではなく定数で判定できるらしい。
でもオブジェクト型が何のクラスなのかは判定したいけど、値型の型を判定して何かしたいというケースはあまり思い浮かばないので使わない気はする。一応紹介だけ。