【问题标题】:How can I update a label after a legacy drop-down box value is changed?更改旧下拉框值后如何更新标签?
【发布时间】:2013-08-02 06:32:26
【问题描述】:

用例:

  1. 用户将旧式下拉表单字段的值从一件事更改为另一件事。 (实际上,他为某事分配了优先级,我们有低、中、高或紧急......每个都有一个非常具体和独特的定义。)
  2. priorityDefinitionLabel(下拉框右侧的标签)已更新以显示所做选择的定义,让用户通过阅读定义并查看它是否适用于来确保他做出正确的选择他的问题。

我的问题是我似乎无法做这样基本的事情:

Private Sub priorityDropDownBox_Changed()
    updatePriorityLabel()
End Sub

如果它是 VBA 代码中的“旧版表单域”,我似乎无法访问任何表单域......但是,如果我在页面上抛出一个 ActiveX 内容控件,我可以在代码中访问它。

有什么方法可以访问/寻址该下拉框吗?我的整个 Word 表单使用旧版表单字段和下拉列表,所以我希望答案是肯定的,否则我可能需要将所有字段和下拉列表切换到 ActiveX 内容控件。

谢谢!

【问题讨论】:

    标签: vba ms-word word-2010


    【解决方案1】:

    旧版控件是 Selection.FormFields 集合的成员。没有事件,最接近的等价物是 EntryMacroExitMacro 属性。

    Sub Macro2()
        Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormDropDown
        Selection.PreviousField.Select
        With Selection.FormFields(1)
            .Name = "Dropdown1"
            .EntryMacro = "Macro1"
            .ExitMacro = "Macro2"
            .Enabled = True
            .OwnHelp = False
            .HelpText = ""
            .OwnStatus = False
            .StatusText = ""
        End With
        Selection.FormFields("Dropdown1").DropDown.ListEntries.Clear
    End Sub
    

    ExitMacro 不会在选择或更改下拉项目时运行,而是在离开控件时运行。

    有一些关于这些旧控件的 MS information here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多