是否可以在VBA中导入名称空间?我正在编写Word宏,我想将所有函数放在模块或类中。但是,一旦我这样做,我发现我无法轻易达到VBA形式的控件。我必须首先包含表单的名称,然后访问该表单中的控件。我不能只去
TextBox1.Caption
我得走了
Form1.TextBox1.Caption
有没有办法解决这个问题?
答案 0 :(得分: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
声明,但是我不得不经常这样做更可能表明存在设计缺陷,正如我上面所讨论的那样。