【发布时间】:2018-06-29 02:02:30
【问题描述】:
我正在使用 VBA 用户表单随机生成要发送到 Word 文档中的值,以提供关于各种数学主题的随机问题(针对我的学生)。
这似乎工作得很好,除了当我退出用户窗体 (me.hide) 并发送值并且焦点回到文档中时,每次移动鼠标时之前的值仍然短暂可见。
这只会发生一瞬间。如果没有发生鼠标(或窗口滑块)活动,则会显示正确发送的值。如果我查看另一个应用程序并在那里进行一些活动,然后返回到 Word 文档,则显示也很好。
值的翻转在视觉上很烦人。有没有人遇到过类似的问题?
复制:
创建一个带有 ActiveX 文本框和按钮的 Word 文档。该按钮激活一个用户窗体,该用户窗体还包含一个文本框和一个按钮,用于将文本框值发送回文档中的文本框。
在我的情况下,当单击文档中的按钮时,表单打开并且值确实返回到 Word 文档,但是当滚动鼠标或移动窗口边缘的滑块时,文本中的前一个值框短暂地闪烁到视野中。以下是文档按钮的代码:
Private Sub cmdOk_Click()
ThisDocument.TextBox1.Value = TextBox1.Value
Me.Hide
End Sub
我使用的是 Word 2016 和 Windows 10。
我尝试使用“新”Word 文本框,但我不知道如何通过用户窗体与它们进行通信。使用“旧”文本框非常简单。
【问题讨论】:
-
根据您提供的重现步骤(我已将其集成到您的问题中),我看不到您报告的内容。如果您包含有关调用用户窗体的代码以及所涉及的 Windows 和 Word 版本的信息,我很乐意再试一次。
-
几点说明: 1) ActiveX 控件是为用户窗体设计的,只是偶尔为文档表面启用。由于这个事实,他们的行为有时可能是“奇怪的”。表单域或内容控件是为 Word 设计的,并且会更加稳定。 2)Word对显卡驱动要求很高。有时,更新驱动程序或关闭驱动程序的硬件加速会影响屏幕渲染质量。
-
我正在使用 Word 2016 和 Windows 10。我尝试使用“新”Word 文本框,但我不知道如何从用户窗体与它们进行通信。使用“旧”文本框非常简单。
-
你是说内容控件?
-
你好辛迪。是的,开发人员选项卡上的内容控件。我无法弄清楚如何与这些控件进行通信,所以我使用了 activeX 解决方案。有没有更好的办法?谢谢。