VBA状态栏

问题描述:

我正在为80个左右的用户使用Word VBA宏应用程序。该办公室人员流动率很高,因此培训受到影响,因此对该项目的自我要求之一是全面,友好的文件。然而,为了补充这一点,并且为了节省新手在他们想要尝试新事物时必须打开100页文档,我需要在每个用户窗体(有五个)上提供状态栏来提供上下文帮助。我发现工具提示令人讨厌。VBA状态栏

我没有很多的经验,所以我想

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

所以有几个问题真的:

应用程序是否会很慢,如果一个窗体不断指到一个文件?对我来说感觉很好,但我一直在这里太久,而且我是唯一访问该文件的用户。将有80个不断访问它。

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

最重要的是(在我不得不尽可能少的工作方面)有没有办法做到这一点,以便我不必每个控件都有一个MouseMove事件?我有好几百个左右的控件,每个控件都有自己的标识符(当然,还没有,但是如果这是唯一的方法,他们会这样做)。也许当表单加载时,我可以加载所有可能的状态行,以便每当控件被隐藏时就准备好。但是,也许加载时间可以忽略不计?

欣赏任何想法或想法 - 尤其是如果VBA已经有一个完整的功能来做到这一点,我只是想重新发明轮子。我无法使用应用程序状态栏,因为用户很少看到应用程序本身。

谢谢!

编辑:

这是一个为数据输入,点击左右,有点文档生成的。

这是一个受控环境,宏观的安全问题是不是我的大问题 - 如果出现问题是别人的过错或问题:)

这是数据录入应用程序,还是他们只需点击的东西?因为焦点领域通常与鼠标悬停在其上的项目不同,这可能会导致很多混淆。

不断读取文件是时间和资源的巨大浪费 - 当表单加载时,只将它们加载到数组或集合中会好得多。

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

Sub Control_MouseMove() 
    DisplayStatus(Control) 
End sub 
+0

是的,我有点决定在字段中的keydown会改变状态来反映该字段的帮助文本。所以徘徊仍然会改变状态。我希望大多数人不会同时打字和鼠标左右! :) – user51498 2009-01-06 22:50:00

我会考虑控件的状态文本属性和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