Pomocou/Refresh relačnej rolovacom menu

0

Otázka

Snažím sa nastaviť rozbaľovací zoznam, ktorý je závislý na výber predchádzajúceho rozbaľovacej ponuky v programe Word pomocou VBA-Kód. Sledovala som videokaziet a čítať prostredníctvom fóra, ale nemôžem, aby to fungovalo. Použil som Slovo Legacy rolovacom menu a označiť ich správnym spôsobom, potom som napísal nasledujúci kód 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

Problém je, že toto riešenie funguje len niekedy, a nie dôsledne. To pripadá ako je to možné výbery nie sú aktualizované dostatočne rýchly a môžem vybrať list, aj keď len čísla by mali byť k dispozícii (niekedy nie som schopný vyberte vôbec nič).

Ja som to v Office 365.

Spätná väzba je veľmi vítané

Vopred ďakujeme!

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

Najlepšiu odpoveď

0

Predpoklad: máte dokument programu word s dvoma rozbaľovacej obsah kontroly. Pre obe značky nastavíte meno: ccType a ccSelection.

enter image description here

V triede modul ThisDocument vložíte nasledujúci kód:

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

Vždy, keď zmeníte hodnotu prvého obsah kontroly (ccType) a ukončiť to ContentControlOnExit je vyhodený.

Ak si "ľavé" ccType (a nie ccSelection) fillccSelection sa nazýva absolvovanie hodnota zvolená v ccType.

Ak tento typ nie je zatiaľ nastavený pre ccSelection, rozbaľovacej záznamy sú nastavené podľa vybraného typu.

2021-11-25 14:06:12

Dobrý deň, Ike, Ďakujeme vám za vašu pomoc. Bohužiaľ nie som schopný, aby to fungovalo. Som nastaviť dve obsah kontroly rolovacom menu a označia ich ako vám povedal. Som vložte kód do modulu a to stále nefunguje. Som niečo chýba? Mám tie dve dropdowns spolu v akejkoľvek forme tak, aby sa komunikovať? Najlepšie, J
Jakob R.

Vedeli ste, vložte kód do ThisDocument modul (krok 1)? Ak kliknete v Document_ContentControlOnExit sub (krok 2) mali by ste vidieť to, čo je označené 3 a 4 v tomto obrázku: i.imgur.com/Ug9zPPX.png
Ike

Ďakujem. Ktorý vyriešil prvý problém. Teraz sa mi Run-Time Error 6124, že sa zdá, že pochádzajú z kód linky .Rozsah.Text = vbNullString
Jakob R.

Mám iba nemecké Slovo - ale prosím skontrolujte, pre ccSelection ak zvýraznené políčko je začiarknuté: i.imgur.com/Fx77qbn.png
Ike

To nie je začiarknuté, ale chyba stále mi hovorí, že sa nedá upraviť, pretože je chránený. Budem sa bližšie pozrieť na všeobecné nastavenia
Jakob R.

Keď som sa ".Rozsah.Text = vbNullString" funguje to úplne v poriadku, to len neaktualizuje označovanie textu. Však ja som v pohode s to. Ďakujem vám veľmi pekne!
Jakob R.

V iných jazykoch

Táto stránka je v iných jazykoch

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