0

用例:

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

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

Private Sub priorityDropDownBox_Changed()
    updatePriorityLabel()
End Sub

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

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

谢谢!

4

1 回答 1

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信息。

于 2013-08-01T22:20:31.620 回答