VBA - 导入命名空间?

时间:2011-03-28 05:53:21

标签: vba namespaces module

是否可以在VBA中导入名称空间?我正在编写Word宏,我想将所有函数放在模块或类中。但是,一旦我这样做,我发现我无法轻易达到VBA形式的控件。我必须首先包含表单的名称,然后访问该表单中的控件。我不能只去

TextBox1.Caption

我得走了

Form1.TextBox1.Caption

有没有办法解决这个问题?

1 个答案:

答案 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声明,但是我不得不经常这样做更可能表明存在设计缺陷,正如我上面所讨论的那样。

相关问题