2013-06-03 25 views
0

如果您查看我的歷史記錄,將會看到我一直通過方法調用調用工作表參考。一個這樣的方法的工作示例:VBA:從動態模塊參考中調用Subrountine

'In module GlobalRefs 

Function W_ExampleWS() As Worksheet 
    Set W_ExampleWS = ActiveWorkbook.Worksheets("ExampleWS") 
End Function 

所以,當我做正常的工作有關的電話,他們的工作:

... 
GlobalRefs.W_ExamplesWS.Range("A1").Value = 42 'works 
... 

然而,在工作表ExampleWS有一個名爲「DesignGraph」子程序。我希望能夠通過像這樣的方法調用來調用該子例程。

'In module AnotherRandomModule 

... 
GlobalRefs.W_ExampleWS.DesignGraph arg1 arg2 
... 

我不斷收到類似錯誤的方法是不確定的,即使VBA編輯器的智能感知承認子程序的存在,因爲它糾正DesignGraph的資本化,如果拼寫錯誤套管。我正在給它正確的論據。

這是怎麼發生的?

+0

是否存在或者你錯過了'arg1'和'arg2'之間的逗號? –

+1

@JosieP有答案(和一個建議)。一種不同的方法可能是將工作表對象「包裝」到作爲方法公開'DesignGraph'(和任何其他例程)的自定義類中。如果你想建立一個特定的工作表「類型」,其中可能有很多實例,這是一個很好的方法:它也避免了在該類型的每個實例中複製代碼。 –

+0

@KazJaw對不起,這是一個錯誤的問題。 :s – user1275094

回答

1

工作表類沒有DesignGraph方法 - 只有您的特定工作表。假設DesignGraph是一個公共子集,如果您更改該函數以返回一個對象,那麼您應該沒有問題。

+0

我決定走不同的方向,但你的知識點幫助我理解了我所面臨的問題。 – user1275094