タイトル : Re^5: プロシージャについて 投稿日 : 2009/10/14(Wed) 18:31 投稿者 : 魔界の仮面弁士
> CallByNameのためにクラス化するには同クラスモジュールにする必要が出てしまい、 クラスモジュールの Instancing プロパティを GlobalMultiUse にすれば、 それを標準モジュールの代わりに使えます。 たとえば、Class1 に『Public Sub ABC_000()』がある場合、 通常であれば、そのクラスを利用するには Private Sub Command1_Click() Dim x As Class1 Set x = New Class1 x.ABC_000 End Sub のように、クラスのインスタンスを生成しなければなりませんが、 そのクラスモジュールを GlobalMultiUse に設定しておけば、 Private Sub Command2_Click() ABC_000 End Sub のように、あたかも標準モジュール上のプロシージャと同様に扱えます。 こうすれば、利用側のコード変更は最低限で済むかも知れません。 (もっとも、CallByName を使う場合にはクラス変数が必須になるのですが…) # なお GlobalMultiUse にするためには、そのプロジェクトを ActiveX DLL プロジェクトに # 設定し、使用側はそれを参照設定する必要があります。 |