3

我正在为 80 位左右的用户开发 Word VBA 宏应用程序。该办公室的员工流动率很高,因此培训受到影响,因此该项目的自我要求之一是全面、友好的文档。然而,为了补充这一点,并且为了让新手在尝试新事物时不得不打开一个 100 页的文档,我希望每个用户窗体(有五个)上都有一个状态栏,以提供上下文帮助。我发现工具提示很烦人。

我没有太多经验,所以我想

本质上,我有一个包含每个状态字符串的文件。(这目前是一个文本文件,但我想知道我是否应该使用电子表格或 csv 以便将来其他工作人员进行编辑。)每个控件都有一个 MouseMove 事件,它引用一个函数:getStatus(cID) 打开文件,抓取该行并将其显示在状态标签中。它还从文件的同一行中获取一些参数,例如标签是否可点击(链接到帮助文件中的页面),以及标签应该是什么颜色。

所以真的有几个问题:

如果用户窗体不断引用文件,应用程序会变慢吗?这对我来说感觉很好,但我已经参与其中太久了,而且我是唯一访问该文件的用户。将有 80 个不断访问它。

MouseMove 在控件上是最好的方法吗?我应该改用坐标吗?

最重要的是(就我必须做尽可能少的工作而言)是否有某种方法可以做到这一点,这样我就不必在每个控件上都有一个 MouseMove 事件?我有几百个左右的控件,每个控件都有自己的标识符(嗯,还没有,但如果这是唯一的方法,他们会这样做)。也许当表单加载时,我可以加载所有可能的状态行,这样它们就可以在鼠标悬停时准备好。但是,也许加载时间可以忽略不计?

欣赏任何想法或想法 - 特别是如果 VBA 已经有一系列功能可以做到这一点,而我只是想重新发明轮子。我不能使用应用程序状态栏,因为用户很少看到应用程序本身。

谢谢!

编辑:

它适用于数据输入、点击和一些文档生成。

这是一个受控的环境,所以宏观安全问题对我来说不是一个大问题——如果出现问题,那是别人的错或问题 :)

4

2 回答 2

2

这是数据输入应用程序还是他们只是点击内容?因为通常具有焦点的字段与鼠标悬停的项目不同,这可能会引起很多混乱。

不断地从文件中读取是对时间和资源的巨大浪费——最好在加载表单时只将它们加载到数组或集合中一次。

在 MouseMouse 事件上比坐标更好,因为您可以在不担心的情况下移动东西。这是很多代码,但如果您有一个控件名称列表,您应该能够生成大部分代码,因为代码应该是相同的。

IE

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub
于 2009-01-06T22:09:44.827 回答
1

对于这种帮助,我会考虑控件的 StatusText 属性和 ControlTipText 属性。

StatusText 此示例为名为“Age”的表单域设置状态栏帮助文本。

With ActiveDocument.FormFields("Age")
    .OwnStatus = True
    .StatusText = "Type your current age."
End With

ControlTipText 这可以从控件的属性表中指定。

Private Sub UserForm_Initialize()
    MultiPage1.Page1.ControlTipText = "Here in page 1"
    MultiPage1.Page2.ControlTipText = "Now in page 2"

    CommandButton1.ControlTipText = "And now here's"
    CommandButton2.ControlTipText = "a tip from"
    CommandButton3.ControlTipText = "your controls!"
End Sub
于 2009-01-06T22:19:57.130 回答