0

我正在尝试使用用户表单自动化 Word 文件。

我想在 Word 文件中有一些变量,并在功能区中放置一个按钮,打开一个用户表单来输入这些值。

我遵循了一些我在网上找到的教程,当我在用户窗体上按 OK 时,我有以下代码:

Private Sub cmdOK_Click()

Set oVars = ActiveDocument.Variables
Hide

oVars(RfQ).Value = TextBox1.Value
oVars(SFDC).Value = TextBox2.Value
ActiveDocument.Fields.Update
Unload.Me

End Sub

我得到错误

“编译错误,未定义变量”。

在我的文字中,我有以下内容:{DOCVARIABLE SFDC * MERGEFORMAT}

我的目标是用我在用户表单中输入的值填充变量。

除此之外,我希望每次从功能区打开用户表单时,我都会预先填写变量中的信息,并且我可以更改/更新它们。

4

1 回答 1

0

第一次您必须添加变量,如下所示:

oVars.Add "RfQ", TextBox1.Value

创建后,您可以像这样更改它:

oVars("RfQ") = TextBox1.Value

在评论中的问题后更新在
您编写的示例中oVars(RfQ).Value。这意味着“使用存储在 vba 变量 RfQ 中的名称获取文档变量”。我猜那不是你想要的。
我的猜测是文档变量被命名为 RfQ 并且您想将其用作变量的硬编码名称。在这种情况下,为文档变量名称添加引号,如下所示:

oVars("RfQ").Value = TextBox1.Value

由于您没有引号,因此您引入了一个名为 RfQ 的新隐式 vba 变量,没有任何值。这产生了您尝试读取具有空名称的文档变量的效果。如果您放在Option Explicit模块的顶部,您将免受此类问题的影响。

于 2020-03-18T10:55:19.250 回答