VBA状态栏
我正在为80个左右的用户使用Word VBA宏应用程序。该办公室人员流动率很高,因此培训受到影响,因此对该项目的自我要求之一是全面,友好的文件。然而,为了补充这一点,并且为了节省新手在他们想要尝试新事物时必须打开100页文档,我需要在每个用户窗体(有五个)上提供状态栏来提供上下文帮助。我发现工具提示令人讨厌。VBA状态栏
我没有很多的经验,所以我想
从本质上讲,我有一个包含每一个状态字符串的文件。 (这是目前的一个文本文件,但我想知道是否应该使用电子表格或csv以方便将来由其他人员进行编辑。)每个控件都有一个引用了函数的MouseMove事件:getStatus(cID),它打开文件抓取行并将其显示在状态标签中。它还从文件的同一行抓取一些参数,例如标签是否可点击(链接到帮助文件中的页面)以及标签应该是什么颜色。
所以有几个问题真的:
应用程序是否会很慢,如果一个窗体不断指到一个文件?对我来说感觉很好,但我一直在这里太久,而且我是唯一访问该文件的用户。将有80个不断访问它。
是MouseMove控制最好的方法吗?我应该改用坐标吗?
最重要的是(在我不得不尽可能少的工作方面)有没有办法做到这一点,以便我不必每个控件都有一个MouseMove事件?我有好几百个左右的控件,每个控件都有自己的标识符(当然,还没有,但是如果这是唯一的方法,他们会这样做)。也许当表单加载时,我可以加载所有可能的状态行,以便每当控件被隐藏时就准备好。但是,也许加载时间可以忽略不计?
欣赏任何想法或想法 - 尤其是如果VBA已经有一个完整的功能来做到这一点,我只是想重新发明轮子。我无法使用应用程序状态栏,因为用户很少看到应用程序本身。
谢谢!
编辑:
这是一个为数据输入,点击左右,有点文档生成的。
这是一个受控环境,宏观的安全问题是不是我的大问题 - 如果出现问题是别人的过错或问题:)
这是数据录入应用程序,还是他们只需点击的东西?因为焦点领域通常与鼠标悬停在其上的项目不同,这可能会导致很多混淆。
不断读取文件是时间和资源的巨大浪费 - 当表单加载时,只将它们加载到数组或集合中会好得多。
在鼠标鼠标事件比坐标好,因为你可以移动的东西而不用担心。这是很多代码,但如果你有一个控制名称列表,你应该能够生成大部分的代码,因为代码应该是相同的。
即
Sub Control_MouseMove()
DisplayStatus(Control)
End sub
我会考虑控件的状态文本属性和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
是的,我有点决定在字段中的keydown会改变状态来反映该字段的帮助文本。所以徘徊仍然会改变状态。我希望大多数人不会同时打字和鼠标左右! :) – user51498 2009-01-06 22:50:00