使用/刷新关系下拉菜单

0

的问题

我想设置一下拉就是依赖于所选择的一个前的下拉菜单词的使用VBA码。 我看了一堆的视频和一读通过的论坛,但我不能让它工作。 我使用这个词的遗留下拉菜单,并标明它们正确,然后我写下代码在VBA:

    Dim xDirection As FormField
    Dim xState As FormField
    On Error Resume Next
    Set xDirection = ActiveDocument.FormFields("ddType")
    Set xState = ActiveDocument.FormFields("ddSelection")
    If ((xDirection Is Nothing) Or (xState Is Nothing)) Then Exit Sub
    With xState.DropDown.ListEntries
    .Clear
        Select Case xDirection.Result
            Case "Numbers"
                .Add "1"
                .Add "2"
                .Add "3"
                .Add "4"
                .Add "5"
                .Add "6"
            Case "Letters"
                .Add "A"
                .Add "B"
                .Add "C"
            Case "None"
                .Add "Not applicable"
    End Select
    End With
End Sub

问题是,这种解决方案只能作有时并不一致。 这感觉可能的选择都没有更新速度不够快,我可以选择的一封信,即使只有数字应当提供(有时我是不能够选择任何所有)。

我这样做是在办公室365.

反馈意见,将高度赞赏

谢谢你提前!

ms-word office365 vba
2021-11-23 08:57:31
1

最好的答案

0

假设:你有一个字的文件有两个拉内容的控制。 对于这两种标记的名字是集:ccType和ccSelection.

enter image description here

在类模块的 ThisDocument 你把下列代码:

Option Explicit

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
If ContentControl.Tag = "ccType" Then
    fillccSelection ContentControl.Range.Text
End If
End Sub

Private Sub fillccSelection(valueType As String)

Dim cc As ContentControl
Set cc = ThisDocument.SelectContentControlsByTag("ccSelection")(1)

If cc.Title <> valueType Then
    With cc
        .Title = valueType  'set title to current type so that we now if coming here next time
        .Range.Text = vbNullString  'clear content as it has to change with new values
        With .DropdownListEntries
            .Clear
            Select Case valueType
                Case "Numbers"
                    cc.SetPlaceholderText Text:="Please select a number"
                    .Add "1"
                    .Add "2"
                    .Add "3"

                Case "Letters"
                    cc.SetPlaceholderText Text:="Please select a letter"
                    .Add "A"
                    .Add "B"
                    .Add "C"
            End Select
        End With
    End With
End If
End Sub

只要你改变价值的第一内容的控制(ccType)和 退出 它的ContentControlOnExit被解雇。

如果你的"左边"ccType(而不ccSelection)fillccSelection是所谓的通过传递的价值选择在ccType.

如果这种类型的尚未设置ccSelection,拉的条目都是根据所选择的类型。

2021-11-25 14:06:12

你好艾克,谢谢你的帮助。 不幸的是,我不能够做其工作。 我设置了两个内容的控制下拉菜单,并标记他们如你所说。 我把代码成一个模块,它仍然不起作用。 我失去了一些东西? 我必须要打两下拉菜单在一起在任何形式使他们沟通? 好,J
Jakob R.

你有没有代码贴在ThisDocument模块(步骤1)? 如果你击Document_ContentControlOnExit子(步骤2),你应该看到的是什么标3和4在这一截图: i.imgur.com/Ug9zPPX.png
Ike

谢谢你。 解决第一个问题。 现在我得到一个运行的时间错误6124,似乎来源于代码线。范围。Text=vbNullString
Jakob R.

我只有一个德语词,但请检查 ccSelection 如果突出显示复选 未经检查: i.imgur.com/Fx77qbn.png
Ike

它被选中,但误差还告诉我,我无法编辑的,因为它是受到保护。 我会仔细看看一般的设置
Jakob R.

当我拿出"。范围。Text=vbNullString"它的工作完全正常的,这只是没有更新贴标签的案文。 但是我现这一点。 非常感谢你!
Jakob R.

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................