VBAでReflection

薄い夕焼け。 不完全燃焼的な。
オブジェクト指向言語としては中途半端なVBAだが、実はリフレクションっぽいことができる。 オブジェクト指向として中途半端なために、これまであまり使いどころがなかったこの機能を、最近初めて使ったのだが。
無くても困らない。 有ってもあまり嬉しく無い。
とまあ身も蓋もない感想しか湧いてこなかった。 そしてコードは、こんなことができるんだよと他の人に説明した後に Select Case に置き換えてしまった。
しかしいつか役に立ちことがあるかもしれないので、中核となる関数について、忘れないように残しておく。
CallByName( object, procname, calltype, [ args() ] )
- object As Variant
-
実行するプロパティまたはメソッドを持つオブジェクト。
- procname As String
-
実行するプロパティまたはメソッドの名前。
- calltype As vbCallType
-
実行するのがプロパティかメソッドかの種類を示す定数。 取りうる値は以下の通り。 名前が十分な説明になっているので、それぞれの詳細は省略。
vbMethod / vbGet / vbLet / vbSet
- args() As Variant(Array)
-
プロパティまたはメソッドの引数。 省略可能。
いつか役に立つことがあるかもしれないが、そんな日がこない可能性の方が高い気もする。