4

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

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

ここに画像の説明を入力

示されているコードでは、「ReportLibrary」は、文字列 strReportProcedure に名前が含まれるパブリック サブルーチンを含むモジュールです。これにより、次のエラー ヘルパーが生成されます。

ここに画像の説明を入力

ヘルプには、ObjectRef パラメータについて次のように記載されています。

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

CallByName を使用してモジュールからルーチンを呼び出すことができないのですか?

4

3 に答える 3

2

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

于 2012-04-23T00:36:18.563 に答える
1

うーん、問題は別の場所にあると思います。次のような変数を宣言していないと思います:

Dim RL as NEW Reportlibrary

そしてそれを宣言した後、これを使用します:

CallByName(RL, strReportProcedure , CallType.Method , blnPreview)

(あなたの場合) クラスがライブラリのサブルーチンにアクセスできないため、おそらく問題は宣言にありました。そのため、「as New ReportLibrary」と宣言する必要があります。
幸運を !

于 2013-03-24T18:58:21.323 に答える