旧版下拉框值更改后如何更新标签?

时间:2013-08-01 22:10:16

标签: vba word-vba word-2010

用例:

  1. 用户将旧版下拉表单字段的值从一个更改为另一个。 (实际上,他将优先级分配给某些东西,我们有低,中,高或紧急......每个都有一个非常具体和独特的定义。)
  2. priorityDefinitionLabel(下拉框右侧的标签)会更新,以显示所做选择的定义,让用户通过阅读定义并查看它是否适用于确定他做出了正确的选择他的问题。
  3. 我的问题是,我似乎无法像这样做基本的事情:

    Private Sub priorityDropDownBox_Changed()
        updatePriorityLabel()
    End Sub
    

    如果它是VBA代码中的“Legacy Form Field”,我似乎无法访问任何表单字段...但是,如果我在页面上抛出ActiveX Content Control,我可以在代码中访问它。

    有没有办法访问/解决该下拉框?我的整个Word表单使用遗留的表单字段和下拉列表,所以我希望答案是肯定的,否则我可能需要将所有字段和下拉列表切换到ActiveX内容控件。

    谢谢!

1 个答案:

答案 0 :(得分: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