2012-04-23 4 views
3

サブルーチンの名前を含む文字列変数に基づいてWindowsフォームからパブリックサブルーチンを呼び出そうとしています。サブルーチンは、コードモジュール内のプロシージャであり、プロシージャ名を直接使用して呼び出すと正常に動作します。VB.Net CallByNameの "Object Ref"パラメータとしてコードモジュールを指定する方法は?

VB.net関数CallByNameは機能するはずですが、モジュール名を "Object Ref"パラメータとして指定する方法がわかりません。示すコードで

enter image description here

、「ReportLibraryは、」文字列strReportProcedureに含まれる名前のパブリックサブを含むモジュールです。これは、次のエラーヘルパーになり:

enter image description here

ヘルプは、これはobjectrefにパラメータについてこう述べています。

objectrefに
タイプ:System.Objectの
必須。オブジェクト。プロパティまたはメソッドを公開しているオブジェクトへのポインタ。

私は何が欠けているのですか、それともCallByNameを使用してモジュールからルーチンを呼び出すことができませんか?

答えて

1

CallByNameはVB.Netモジュールのコードでは機能しません。最初のパラメータにはオブジェクトが必要なためです。 CallByNameを機能させるには、メソッドをクラスに移動し、クラスのインスタンスを作成する必要があります。

+0

私はそれを試してみましょう。ありがとう! –

+0

最適な方法ではありません。私の場合、私はそれらを動かすことができません、それの後に混乱があるので); – Searush

1

ええと、問題はどこか他の場所だと思います。 私はあなたがこのような変数を宣言していないと思う:

Dim RL as NEW Reportlibrary 

そして

それを宣言した後、これを使用します。問題は、宣言であるため(あなたのケースでは)あなたのクラスだった。おそらく
CallByName(RL, strReportProcedure , CallType.Method , blnPreview) 

ライブラリのサブルーチンにアクセスすることはできません。だからあなたは "新しいReportLibraryとして"宣言する必要があります。
幸運!

0

Dim object As NEW Reportlibraryそして、そのオブジェクトを使用してください。