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)

问题可能出在声明中,因为(在您的情况下)您的类不允许您访问库的子例程。这就是您需要声明“作为新报告库”的原因。
祝你好运 !

于 2013-03-24T18:58:21.323 回答
0

Dim object As NEW Reportlibrary然后就使用那个对象。

于 2016-12-22T18:24:17.743 回答