ใช้/ปรับปรุง relational dropdowns

0

คำถาม

ฉันกำลังพยายามตั้ dropdown นั่นต้องขึ้นอยู่กับเลือกของก่อนหน้านี้ dropdown ในคำใช้ VBA-รหัส ฉันดูเป็นกลุ่มของวีดีโอและอ่าน forums แต่ฉันไม่สามารถทำให้มันทำงานแล้ว ฉันใช้คำพูดมรดกตกทอด dropdowns และ labelled พวกเขาอย่างถูกต้องแล้วฉันเป็นคนเขียนตามกฎอยู่ใน 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

สมมติฐานที่คุณมีคำเอกสารกับสองคน dropdown เนื้อหาควบคุม สำหรับทั้งสองคนชื่อของป้ายกำกับเป็นตั้ง:ccType และ ccSelection.

enter image description here

ในชั้นเรียนของศูนย์ควบคุม kde ในโมดูล 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 ที่ dropdown รายการถูกเตรียมไว้ตามที่เลือกไว้แบบนั้น

2021-11-25 14:06:12

สวัสดี Ike ขอบคุณสำหรับความช่วยเหลือ โชคร้ายที่ฉันไม่สามารถทำให้มันทำงานแล้ว ฉันตั้งสองคนควบคุมเนื้อหา dropdowns และมีป้ายกำกับพวกเขาอย่างที่คุณพูด ฉันใส่รหัสเข้าไปในศูนย์ควบคุม kde ในโมดูลและมันก็ยังไม่ทำงาน ฉันพลาดอะไรไปรึเปล่า? ฉันต้องผูกสองคน dropdowns ด้วยกันในรูปแบบดังนั้นพวกเขาสื่อสารกัน? ดีที่สุด,J
Jakob R.

คุณวางกฎอยู่ใน ThisDocument ศูนย์ควบคุม kde ในโมดูล(ขั้นตอนที่ 1)? หากคุณคลิกที่ Document_ContentControlOnExit ย่อย(ขั้นที่ 2)คุณควรจะเห็นสิ่งที่ถูกกำหน 3 และ 4 ในภาพหน้าจอที่จับได้: i.imgur.com/Ug9zPPX.png
Ike

ขอบคุณ นั่นแก้วแรกปัญหา ตอนนี้ผมเป็นไปเวลาเกิดข้อผิดพลาด 6124 นั่นดูเหมือนจะ originate จากรหัสสายผมสามารถบอกได้นะข้อความ=vbNullString
Jakob R.

ฉันแค่ต้องเป็นภาษาเยอรมันแต่ได้โปรดตรวจสอบสำหรับ ccSelection ถ้าการเน้นสีตัวเลือก ภาคไม่สมประกอบ: i.imgur.com/Fx77qbn.png
Ike

มันคือภาคไม่สมประกอบแต่ข้อผิดพลาดยังบอกฉันว่าฉันไม่สามารถแก้ไขเพราะมันเป็นเรื่องได้รับการคุ้มครอง ฉันจะต้องได้อย่างใกล้ชิดดูการตั้งค่าทั่วไป
Jakob R.

ตอนที่ฉันเอาออกจาก".ผมสามารถบอกได้นะข้อความ=vbNullString"มันทำงานสบายดีทุกอย่างมันแค่ไม่ปรับปรุงที่ labelling ข้อความ แต่ฉันสบายดีฉันสบายดีกับเรื่องนั้น ขอบคุณมากครับ!
Jakob R.

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่