Folosind/Refresh relaționale dropdowns

0

Problema

Am încercat să înființeze o verticală care este dependentă de selecția anterioară vertical în Word folosind VBA-Cod. Am văzut o grămadă de clipuri video și citit prin forumuri, dar eu nu pot face să funcționeze. Am folosit Cuvântul Moștenire dropdowns și etichetate în mod corect, apoi am scris următorul cod în 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

Problema este că această soluție funcționează numai uneori, și nu în mod constant. Se simte ca este posibil selecții nu sunt actualizate destul de repede și nu pot alege o scrisoare, chiar dacă numai numere ar trebui să fie disponibile (uneori, nu sunt în măsură de a selecta nimic, la toate).

Am face acest lucru în Office 365.

Feedback-ul va fi foarte apreciat

Va multumesc anticipat!

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

Cel mai bun răspuns

0

Ipoteza: aveți un document word cu două vertical controalele de conținut. Atât pentru numele tag-ul este setat: ccType și ccSelection.

enter image description here

În modulul clasă de ThisDocument pune codul de mai jos:

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

Ori de câte ori vă schimbați valoarea primei de control al conținutului (ccType) și de ieșire - l ContentControlOnExit este concediat.

Dacă "stânga" ccType (și nu ccSelection) fillccSelection este numit prin trecerea de la valoarea selectată în ccType.

Dacă acest tip nu este încă stabilit pentru ccSelection, meniul intrări sunt stabilite în funcție de tipul selectat.

2021-11-25 14:06:12

Salut Ionut, Multumesc pentru ajutor. Din păcate eu nu sunt în măsură de a face să funcționeze. Am înființat două conținut de control dropdowns și le-a etichetat ca ai spus. Am pus cod într-un modul și în care încă nu funcționează. Îmi scapă ceva? Trebuie să legăm două dropdowns împreună, în orice formă, astfel încât acestea să comunice? Cel Mai Bun, J
Jakob R.

Ai inserați codul în Contractuale modulul (pasul 1)? Dacă faceți clic în Document_ContentControlOnExit sub (pasul 2) ar trebui să vezi ce este marcat 3 și 4 în această captură de ecran: i.imgur.com/Ug9zPPX.png
Ike

Multumesc. Care a rezolvat prima problemă. Acum primesc o Eroare Run-Time 6124 care pare să provină de la o linie de cod .Gama.Text = vbNullString
Jakob R.

Am doar un Cuvânt German - dar vă rugăm să verificați pentru ccSelection dacă subliniat casetă de selectare este bifată: i.imgur.com/Fx77qbn.png
Ike

Este debifat, dar eroarea tot imi spune ca nu pot edita, deoarece acesta este protejat. Voi avea o privire mai atentă la setările generale
Jakob R.

Atunci când voi scoate ".Gama.Text = vbNullString" funcționează foarte bine, doar nu se actualizează etichetele de text. Cu toate acestea eu sunt de acord cu asta. Vă mulțumesc foarte mult!
Jakob R.

În alte limbi

Această pagină este în alte limbi

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