如何使用VBA从word内容控件中获取下拉值(不显示文本)

如何使用VBA从word内容控件中获取下拉值(不显示文本),vba,ms-word,dropdownbox,Vba,Ms Word,Dropdownbox,我的word文档中有一个下拉式内容控制元素。当我查看该内容控件的属性时,它们定义了“显示名称”和“值”。我找到了显示如何获取显示文本/名称的VBA代码,但找不到任何显示如何使用VBA获取值信息的代码 我基本上想从这里和其他几个下拉列表中提取“value”字段,通过VBA填充文本字段。试试: Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean) Dim i As Lo

我的word文档中有一个下拉式内容控制元素。当我查看该内容控件的属性时,它们定义了“显示名称”和“值”。我找到了显示如何获取显示文本/名称的VBA代码,但找不到任何显示如何使用VBA获取值信息的代码

我基本上想从这里和其他几个下拉列表中提取“value”字段,通过VBA填充文本字段。

试试:

Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
Dim i As Long, StrOut As String
With CCtrl
  For i = 1 To .DropdownListEntries.Count
    If .DropdownListEntries(i).Text = .Range.Text Then
      StrOut = .DropdownListEntries(i).Value
      Exit For
    End If
  Next
End With
MsgBox StrOut
End Sub

这是一个基于上面Paul代码的函数

Function CCValue(ccMyContentControl As ContentControl) As String
    ' Charles Kenyon 29 September 2020
    '
    ' Function based on Paul Edstein's Code
    ' https://stackoverflow.com/questions/58809271/how-to-get-dropdown-value-not-display-text-from-word-content-control-using-vba
    '
    If ccMyContentControl.Type <> wdContentControlDropdownList Then
        If ccMyContentControl.Type <> wdContentControlComboBox Then
            CCValue = ccMyContentControl.range.Text
            Exit Function
        End If
    End If
    Dim i As Long
    With ccMyContentControl
        For i = 1 To .DropdownListEntries.Count
            If .DropdownListEntries(i).Text = .range.Text Then _
                CCValue = .DropdownListEntries(i).Value
        Next i
    End With
End Function
函数CCValue(ccMyContentControl作为ContentControl)作为字符串
“查尔斯·肯扬2020年9月29日
'
基于Paul Edstein代码的函数
' https://stackoverflow.com/questions/58809271/how-to-get-dropdown-value-not-display-text-from-word-content-control-using-vba
'
如果是ccMyContentControl。请键入wdContentControlDropdownList,然后
如果是ccMyContentControl。请键入wdContentControlComboBox,然后
CCValue=ccMyContentControl.range.Text
退出功能
如果结束
如果结束
我想我会坚持多久
使用ccMyContentControl
对于i=1到.drops.Count
如果.dropDownlines(i).Text=.range.Text,则_
CCValue=.DropDownries(i).Value
接下来我
以
端函数
当提供内容控件时,它返回下拉框或组合框CC中的值以及任何其他内容控件上的文本