如何显示用户表单并等待代码 运行,同时仍然能够访问其他文档

How can I show a userform and wait for code to run, while still being able to access other documents

在 Word VBA 中,我希望能够在文本框和复选框中显示用户表单和输入信息。但是,我希望能够访问和滚动其他 word 文档。所以,我想要弹出一个用户窗体,插入文本并单击复选框,能够在其他文档中滚动,然后按命令按钮隐藏用户窗体并执行其余代码。

我尝试使用用户窗体功能 ShowModal 并将其设置为 False,这有助于我访问其他文档并能够在其中滚动。但是,我的代码将继续执行,因此我无法使用用户表单中文本框和复选框中的信息,甚至无法让用户将信息插入文本框。

A 已经制作了一个简单的脚本来展示这个概念。

Sub testing()

UserForm1.Show

MsgBox ("Hello, " + UserForm1.TextBox1.Value)

Unload UserForm1

End Sub

用户表单如下所示。

Image of userform

我想打开用户窗体,插入一个名称,同时可以在另一个 word 文档中单击,然后单击“确定”按钮。如果我将其更改为 Userform1.Show vbModeless,消息框将输出“你好”,然后关闭用户窗体。

我还没有找到解决这个问题的另一个问题,所以希望你能指导我解决这个问题。

您需要将 testing 分成两个子项 - 第一个仅以非模态方式显示表单然后退出,第二个在您的用户准备好继续时从用户表单调用。用户表单中的代码将任何必需的参数(或对自身的引用,以便被调用的代码可以从表单访问任何必需的信息)传递给第二个子。

例如:

在模块 1 中:

Sub ShowForm()
    Dim frm As New UserForm1
    frm.Show False
End Sub

Sub ProcessForm(frm As UserForm1)
    MsgBox frm.TextBox1.Text
    Unload frm
End Sub

形式为:

Private Sub CommandButton1_Click()
    Application.Run "Module1.ProcessForm", Me
End Sub