2013-08-01 50 views
0

使用案例:传统下拉框的值更改后,如何更新标签?

  1. 用户更改旧的下拉型窗体域,从一件事到另一个值。 (实际上,他将某个优先级分配给某个事物,并且我们有低,中,高或紧急...,每个都有一个非常明确和清晰的定义。)
  2. priorityDefinitionLabel(标签位于下拉菜单的右侧)下拉框)被更新以显示所做选择的定义,以便让用户通过阅读定义并确定它是否适用于他的问题来确保他做出正确的选择。

我的问题是,我似乎无法做一些基本的这样:

Private Sub priorityDropDownBox_Changed() 
    updatePriorityLabel() 
End Sub 

看来,如果它在VBA是一个“传统型窗体域”我不能访问任何形式的场代码...但是,如果我在页面上抛出一个ActiveX内容控件,我可以在代码中访问它。

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

谢谢!

回答

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不上选择或更改,下拉项目,但Tab键从控制离开时运行。

关于这些传统控件有一些MS information here