2011-03-28 238 views
1

是否可以在VBA中導入名稱空間?我正在寫Word宏,我想把所有的功能放入模塊或類中。但是一旦我這樣做了,我就會發現我無法輕鬆地訪問VBA表單中的控件。我必須首先包含表單的名稱,然後訪問該表單中的控件。我不能只是去VBA - 導入命名空間?

TextBox1.Caption 

我必須去

Form1.TextBox1.Caption 

有沒有辦法來解決這個問題?

回答

4

你不應該如此緊密地耦合你的類/模塊。工作模塊不需要知道Form1類,因爲它不能在另一個項目中單獨使用。

而是,您可能希望將幫助類中的函數傳遞給參數,並在其上執行工作,然後返回結果(如果需要)。作爲一個完全無用的,簡單的例子:

Public Sub SetLabelText(ByVal lbl As Label, ByVal caption As String) 
    lbl.Caption = caption 
End Sub 

你會說它是從表單類中,像這樣:

MyHelpers.SetLabelText(Label1, "New Label Caption") 

這樣的話,你可以在輔助類使用功能的任何形式的


但是,至於你的實際問題,沒有。 VBA沒有任何「命名空間」的概念。你可以做的最好的是With聲明,但是如上所述,經常這樣做更可能是設計缺陷的表現。