2011-03-28 136 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声明,但是如上所述,经常这样做更可能是设计缺陷的表现。