1
是否可以在VBA中导入名称空间?我正在写Word宏,我想把所有的功能放入模块或类中。但是一旦我这样做了,我就会发现我无法轻松地访问VBA表单中的控件。我必须首先包含表单的名称,然后访问该表单中的控件。我不能只是去VBA - 导入命名空间?
TextBox1.Caption
我必须去
Form1.TextBox1.Caption
有没有办法来解决这个问题?
是否可以在VBA中导入名称空间?我正在写Word宏,我想把所有的功能放入模块或类中。但是一旦我这样做了,我就会发现我无法轻松地访问VBA表单中的控件。我必须首先包含表单的名称,然后访问该表单中的控件。我不能只是去VBA - 导入命名空间?
TextBox1.Caption
我必须去
Form1.TextBox1.Caption
有没有办法来解决这个问题?
你不应该如此紧密地耦合你的类/模块。工作模块不需要知道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
声明,但是如上所述,经常这样做更可能是设计缺陷的表现。