2012-04-23 23 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

我會試試看。謝謝! – 2012-04-23 02:23:39

+0

不是最佳方式。在我的情況下,我無法移動它們,因爲它後面會出現混亂;) – Searush 2013-03-24 20:51:25

1

嗯,我認爲問題在別的地方。 我想你還沒有宣佈這樣的變量:

Dim RL as NEW Reportlibrary 

,並宣佈它後,使用此:

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

也許問題是在聲明,因爲(在你的情況下)類不允許你訪問你的庫的子程序。這就是爲什麼你需要聲明「爲新的ReportLibrary」。
祝你好運!

0

Dim object As NEW Reportlibrary然後只是使用該對象。

相關問題