【问题标题】:VBA Status BarVBA 状态栏
【发布时间】:2009-01-06 21:48:10
【问题描述】:

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

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

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

真的有几个问题:

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

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

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

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

谢谢!

编辑:

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

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

【问题讨论】:

    标签: vba ms-word ms-office status statusbar


    【解决方案1】:

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

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

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

    Sub Control_MouseMove()
      DisplayStatus(Control)
    End sub
    

    【讨论】:

    • 是的,我有点决定字段中的按键会改变状态以反映该字段的帮助文本。所以鼠标移动仍然会改变状态。我希望大多数人不会同时打字和鼠标移动! :)
    【解决方案2】:

    我会考虑控件的 StatusText 属性和 ControlTipText 属性以获得这种帮助。

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

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

    控制提示文本 这可以从控件的属性表中分配。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      相关资源
      最近更新 更多