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)

プロパティまたはメソッドの引数。 省略可能。

いつか役に立つことがあるかもしれないが、そんな日がこない可能性の方が高い気もする。