Script事業案内エクセル以外トップマクロVBAVBAクラス入門クラスとCallByNameとポリモーフィズム(多態性)最終更新日:2019-04-06クラスとCallByNameとポリモーフィズム(多態性)VBAの使い方が進んでいくとクラスを使うようになっていきます。クラスを使うようになるとオブジェクト指向という言葉に出会い、オブジェクト指向を学んでいくとポリモーフィズム(多態性)という言葉に出会います。オブジェクト指向における多態性の説明としては、メソッドの呼び出し時に、メソッドが属するオブジェクト(クラス)の種類によって呼び出し先の実装コードが選択され、処理内容が変化する性質。このように説明されます。多態性と言った場合は、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質。今回はオブジェクト指向の多態性に進む前段階として、そもそも多態性とはどのようなものかを、VBAで理解することを目的とした記事になります。そこで、関数に多態性を持たせた多態性関数について取り上げてみました。VBAで多態性関数が使えるわけではなく、多態性関数のような動きを作って多態性についての理解を深めていこうという主旨になります。今回は、CallByName関数を使いどのような動きになるかを説明していきます。CallByName関数のヘルプでの説明は以下のように書かれています。「オブジェクトのメソッドを実行するか、オブジェクトのプロパティを設定するか返します。何に使うものなのか、意味も良く分からない、、、ですよね。CallByName関数は、変数内にある文字列としてのプロシージャー(メソッドやプロパティ)を起動することができます。動的(実行時)に実行するプロシージャーを切り替えられるということです。VBAにおけるCallByName関数は、コールバックやリフレクションを実現するための関数とも言えます。今回はCallByName関数の文法から入り、多態性関数へと進めていきます。CallByName関数CallByName関数は、実行時に指定したオブジェクトのプロパティの設定と取得、およびメソッドの実行を行います。バリアント型およびオブジェクト型のいずれかを指定できます。この関数の実行対象となるオブジェクトの名前を指定します。バリアント型および文字列型のいずれかを指定できます。オブジェクトのプロパティ名およびメソッド名を含む文字列式を指定します。