連絡先 Hikwareホーム
Hikware.Tech
自分用の覚え書きをそのまま公開。参考程度にどうぞ。

VBAでオブジェクトの型を判定

公開日 2024/03/04
最終更新 2024/03/04
  • Selection で選択中のセルなどを取得できたのはいいけど、選択されているのがセルなのかそれ以外なのかはどうやって判定すればいいのよ?

オブジェクトの型名を文字列で判定、が正解なのかな?

 TypeName() を使えば変数の中身の型が文字列で返るので、特定の型のオブジェクトにのみ処理を行いたいならそれで判定すればよさそう。

 もしオブジェクトのクラス名が変わったら正常動作しなくなるのでちょっと気持ち悪いけど、システム定義のクラスでそんな事はまずないだろうし、他にもっとスマートな方法も見つけられなかったのでまあいいか。

'現在選択しているのがセル(Range)の場合のみ何らかの処理を行う
If TypeName(Selection) = "Range" Then
    Debug.Print "セルを選択中:"; Selection.Address
Else
    Debug.Print "セルじゃない:"; TypeName(Selection)
End If

値型の型も判定できるけど

 TypeName() に整数などの値型を渡した場合も、"Integer" などが返るので判定できるけど、それとは別に VarType() というのもあって、文字列ではなく定数で判定できるらしい。

 でもオブジェクト型が何のクラスなのかは判定したいけど、値型の型を判定して何かしたいというケースはあまり思い浮かばないので使わない気はする。一応紹介だけ。