Vba Word中的Userform可更改变量

Vba Word中的Userform可更改变量,vba,ms-word,userform,docvariable,Vba,Ms Word,Userform,Docvariable,我正在尝试使用userform自动生成Word文件 我想在Word文件中有一些变量,并在功能区中放置一个按钮,打开一个userform来输入这些值 我遵循了我在网上找到的一些教程,当我在userform上按OK时,我有以下代码: Private Sub cmdOK_Click() Set oVars = ActiveDocument.Variables Hide oVars(RfQ).Value = TextBox1.Value oVars(SFDC).Value = TextBox2.Va

我正在尝试使用userform自动生成Word文件

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

我遵循了我在网上找到的一些教程,当我在userform上按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}

我的目标是用我在userform中输入的值填充变量


除此之外,我希望每次从功能区打开userform时,我都会预先填充变量中的信息,并且我可以更改/更新这些信息。

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

oVars.Add "RfQ", TextBox1.Value
oVars("RfQ") = TextBox1.Value
oVars("RfQ").Value = TextBox1.Value
创建后,您可以按如下方式对其进行更改:

oVars.Add "RfQ", TextBox1.Value
oVars("RfQ") = TextBox1.Value
oVars("RfQ").Value = TextBox1.Value
评论中的问题后更新
在您的示例中,您编写了
oVars(RfQ).Value
。这意味着“使用存储在vba变量RfQ中的名称获取文档变量”。我猜那不是你想要的。
我猜文档变量名为RfQ,您希望将其用作变量的硬编码名称。在本例中,向文档变量名添加引号,如下所示:

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

因为没有引号,所以引入了一个新的隐式vba变量,名为RfQ,没有值。这样做的效果是,您试图读取一个名称为空的文档变量。如果您将
Option Explicit
放在模块顶部,您将免受类似问题的影响。

Hello@Davide,如果您共享您所遵循的教程的网站url,那将非常好。如果我现在在我得到的链接“编译错误:参数非可选”中遵循上述示例,谢谢。第一次和一次创建是什么意思?我已经在word文件中找到了变量RfQ。。脚本似乎无法从word文件中获取它们。如果已经有了,请跳过第一步。在你的问题中,你写了
(RfQ)
,而我写了
(“RfQ”)
。如果您有一个名为RfQ的变量,它包含什么?我是一个新手,可能不了解所有内容。我为此道歉。假设我第一次打开文件时,RfQ DocVariable文本将是RfQ,在第一次使用用户表单后,它可能是从用户表单输入的任何数字。之后,我希望当我按下OK时,变量会在我的word文件中更新,如果我想更改它,我可以再次打开用户表单并更改它。感谢您的解释。现在我还有一个问题。当我运行它时,它会打开用户窗体,输入值,然后当我单击ok时,我会得到编译错误:参数非可选“哪一行突出显示?”?