का उपयोग कर/ताज़ा संबंधपरक लटकता

0

सवाल

मैं कोशिश कर रहा हूँ करने के लिए सेट अप एक लटकती है कि पर निर्भर करता है का चयन पिछले एक लटकती Word में 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

समस्या यह है कि यह समाधान केवल काम करता है कभी कभी नहीं है और लगातार. यह की तरह लगता है संभव के चयन को अद्यतन नहीं कर रहे हैं काफी जल्दी है और मैं कर सकते हैं एक पत्र का चयन यहां तक कि अगर केवल संख्या उपलब्ध होना चाहिए (कभी कभी मैं कर रहा हूँ में सक्षम नहीं का चयन करने के लिए सभी में कुछ भी).

मैं यह Office 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

हैलो आइक, आपकी मदद के लिए धन्यवाद. दुर्भाग्य से मैं नहीं कर रहा हूँ में सक्षम बनाने के लिए यह काम करते हैं. मैं सेट अप दो सामग्री नियंत्रण लटकता और टैग की गईं के रूप में उन्हें आप ने कहा. मैं डाल दिया है एक मॉड्यूल में कोड और यह अभी भी काम नहीं करता है. हूँ मैं कुछ याद आ रही है? क्या मैं करने के लिए टाई दो लटकता एक साथ किसी भी रूप में इतना है कि वे संवाद? अच्छा, जम्मू
Jakob R.

क्या आप पेस्ट कोड में ThisDocument मॉड्यूल (चरण 1)? यदि आप क्लिक करें में Document_ContentControlOnExit उप (चरण 2) आप देखना चाहिए क्या है के रूप में चिह्नित 3 और 4 में इस स्क्रीनशॉट: i.imgur.com/Ug9zPPX.png
Ike

धन्यवाद । हल है कि पहली समस्या है । अब मैं एक रन-टाइम त्रुटि 6124 लगता है कि करने के लिए से उत्पन्न कोड की लाइन । रेंज.पाठ = vbNullString
Jakob R.

मैं केवल एक जर्मन शब्द है - लेकिन के लिए जाँच करें ccSelection यदि प्रकाश डाला चेकबॉक्स अचिह्नित: i.imgur.com/Fx77qbn.png
Ike

यह अनियंत्रित है, लेकिन त्रुटि अभी भी मुझसे कहता है कि मैं संपादित नहीं कर सकते, क्योंकि यह सुरक्षित है. मैं होगा पर एक करीब देखो सामान्य सेटिंग्स
Jakob R.

जब मैं बाहर ले ".रेंज.पाठ = vbNullString" यह बिल्कुल ठीक काम करता है, यह बस नहीं करता है अद्यतन लेबलिंग पाठ. हालांकि मैं ठीक हूँ । आपको बहुत बहुत धन्यवाद!
Jakob R.

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

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

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में