Note: The other languages of the website are Google-translated. Back to English

Jak tworzyć zależne listy rozwijane w dokumencie programu Word?


Jak pokazano na lewym zrzucie ekranu, musisz ograniczyć wybór na drugiej liście rozwijanej w oparciu o opcję z pierwszego menu rozwijanego, jak możesz to zrobić? W tym artykule pokażemy metodę tworzenia zależnych list rozwijanych w dokumencie programu Word.

Utwórz zależne listy rozwijane w programie Word z kodem VBA


Utwórz zależne listy rozwijane w programie Word z kodem VBA

Poniższy kod VBA może pomóc w utworzeniu zależnej listy rozwijanej w dokumencie programu Word. Postępuj zgodnie z instrukcjami krok po kroku.

1. Po pierwsze, musisz wstawić dwie listy rozwijane w dokumencie programu Word. Kliknij Deweloper > Starsze formularze > Rozwijane pole formularza. Zobacz zrzut ekranu:

2. Prawym przyciskiem myszy kliknij pierwszą listę rozwijaną (powinna to być lista nadrzędna) i kliknij Nieruchomości. Zobacz zrzut ekranu:

3. W otwarciu Rozwijane opcje pól formularza w oknie dialogowym, musisz:

3.1 Wprowadź kategorię do Element rozwijany a następnie kliknij Dodaj przycisk, powtarzaj operację, aż wszystkie kategorie zostaną dodane do listy rozwijanej Elementy w.

3.2 Wejdź ddjedzenie do Zakładka pudełko.

3.3 Kliknij OK przycisk. Zobacz zrzut ekranu:

4. Kliknij prawym przyciskiem drugą listę rozwijaną, kliknij Właściwości otworzyć Rozwijane opcje pól formularza iw oknie dialogowym wprowadź ddKategoria do Zakładka i kliknij OK przycisk. Zobacz zrzut ekranu:

5. wciśnij inny + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

6. w Microsoft Visual Basic for Applications okno, kliknij wstawka > Moduł, następnie skopiuj poniższy kod VBA do okna modułu.

Kod VBA: Utwórz zależną listę rozwijaną w programie Word

Sub Populateddfood()
'Update by Extendoffice 2018/10/25
    Dim xDirection As FormField
    Dim xState As FormField
    On Error Resume Next
    Set xDirection = ActiveDocument.FormFields("ddfood")
    Set xState = ActiveDocument.FormFields("ddCategory")
    If ((xDirection Is Nothing) Or (xState Is Nothing)) Then Exit Sub
    With xState.DropDown.ListEntries
        .Clear
        Select Case xDirection.Result
            Case "Fruit"
                .Add "Apple"
                .Add "Banana"
                .Add "Peach"
                .Add "Lychee"
                .Add "Watermelon"
            Case "Vegetable"
                .Add "Cabbage"
                .Add "Onion"
            Case "Meat"
                .Add "Pork"
                .Add "Beef"
                .Add "Mutton"
        End Select
    End With
End Sub

Uwagi:

1. W kodzie zmień pozycje w każdym przypadku według potrzeb.

2. ddjedzenie i ddKategoria powinien pasować do opcji zakładek, które zostały wprowadzone w dwóch powyższych Rozwijane opcje pól formularza okna dialogowe.

7. Zapisz kod i wróć do dokumentu.

8. Kliknij prawym przyciskiem pierwszą listę rozwijaną i kliknij Właściwości otworzyć Rozwijane opcje pól formularza Okno dialogowe. W oknie dialogowym wybierz powyższą nazwę makra (tutaj jest Popoleddfood) z pliku Wyjście listę rozwijaną, a następnie kliknij plik OK przycisk.

9. Teraz kliknij Deweloper > Ogranicz edycję jak pokazano na poniższym zrzucie ekranu.

10. w Ogranicz edycję okienko, musisz:

10.1) Sprawdź Zezwalaj tylko na ten typ edycji w dokumencie pudełko;

10.2) Wybierz Wypełnianie formularzy opcja z listy rozwijanej;

10.3) Kliknij Tak, uruchom Wymuszanie ochrony przycisk;

10.4) W Rozpocznij wymuszanie ochrony wprowadź hasło i kliknij OK przycisk. Zobacz zrzut ekranu:

Teraz tworzona jest zależna lista rozwijana. Wybierając Owoce z pierwszej listy rozwijanej, w drugiej można wybrać tylko kategorie owoców.


Zalecane narzędzia zwiększające produktywność programu Word

 

Kutools dla programu Word — ponad 100 zaawansowanych funkcji programu Word, oszczędzaj 50% czasu

  • Skomplikowane i powtarzalne operacje można wykonać jednorazowo w ciągu kilku sekund.
  • Wstaw wiele obrazów w folderach do dokumentu programu Word jednocześnie.
  • Scalaj i łącz wiele plików programu Word w folderach w jeden z żądaną kolejnością.
  • Podziel bieżący dokument na oddzielne dokumenty według nagłówka, podziału sekcji lub innych kryteriów.
  • Konwertuj pliki między Doc i Docx, Docx i PDF, zbiór narzędzi do typowych konwersji i zaznaczania, i tak dalej ...
Sortuj komentarze według
Komentarze (27)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy istnieje podobny kod, który wykonuje prawie to samo, z wyjątkiem tego, że pole formularza tekstowego jest automatycznie wypełniane w zależności od wyboru rozwijanego? Na przykład wybranie konkretnej firmy z listy rozwijanej i automatyczne wypełnienie pola tekstowego z miastem, w którym znajduje się firma?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Przepraszam, może ci w tym pomóc. Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy możesz dodać to do wielu obszarów na jednej stronie składającej się z wielu sekcji? Udało mi się pomyślnie ukończyć proces w jednej sekcji mojego dokumentu, ale kiedy próbuję ukończyć ten sam proces na tej samej stronie, ale w innej sekcji mojego dokumentu i z nowymi opcjami rozwijanymi, tylko moje pierwsze dodane pola działają, a nie te z drugiej sekcji..
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Ingridzie,
Przypuśćmy, że w swoim dokumencie masz trzy grupy zależnych list rozwijanych. Jeśli chcesz, aby wszystkie zależne listy rozwijane zaczęły obowiązywać, zastosuj poniższy kod VBA i wykonaj poniższe ustawienia:

W kroku 4 i 5, o którym wspomnieliśmy w artykule, musisz teraz wprowadzić następujące zmiany:
1. Dla pierwszej grupy zależnych list rozwijanych, przejdź do okna Właściwości każdej listy rozwijanej i określ zakładkę jako ddfood1 i ddCategory1 osobno;
2. Dla drugiej grupy zależnych list rozwijanych, przejdź do okna Właściwości każdej listy rozwijanej i określ zakładkę jako ddfood2 i ddCategory2 oddzielnie;
2. Dla trzeciej grupy zależnych list rozwijanych, przejdź do okna Właściwości każdej listy rozwijanej i określ zakładkę jako ddfood3 i ddCategory3 oddzielnie;

Następnie kontynuuj dokładnie tak, jak podaliśmy w artykule, aby zakończyć wszystkie ustawienia.

Kod VBA:
Sub-zaludnionejedzenie()
'Aktualizuj do Extendoffice 2019 / 03 / 18
Dim xDirection jako FormField
Dim xState jako FormField
Dim xRng jako zakres
Dim xFoodBM, xCategoryBM jako ciąg
Ustaw xRng = Wybór.Zakres
On Error Resume Next
Dla i = 1 Do ActiveDocument.FormFields.Count
xFoodBM = "ddfood" i i
xCategoryBM = "ddCategory" & i
Ustaw xDirection = ActiveDocument.FormFields(xFoodBM)
Ustaw xState = ActiveDocument.FormFields(xCategoryBM)
If (Not (xState Is Nothing)) I (Not (xDirection Is Nothing)) Wtedy
Z xState.DropDown.ListEntries
.Jasny
Wybierz przypadek xDirection.Result
Sprawa "Owoce"
.Dodaj "Jabłko"
.Dodaj "Banan"
.Dodaj "Brzoskwinia"
.Dodaj „liczi”
.Dodaj "Arbuz"
Sprawa "Warzywo"
.Dodaj "Kapusta"
.Dodaj "Cebula"
Sprawa "Mięso"
.Dodaj "Wieprzowina"
.Dodaj "Wołowina"
.Dodaj "Baranina"
End Select
Kończyć z
End If
Ustaw xDirection = Nic
Ustaw xState = Nic
Dalej
xRng.Wybierz
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
czy można to zrobić w starszych wersjach programu Word lub trzeba je zapisać jako określony typ dokumentu?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Mary,
Którą wersję masz na myśli?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,
czy istnieją ograniczenia dotyczące nazwy w polu (np. 2 słowa lub użycie specjalnych znaków)?
Like Pole A (Nazwa firmy) Pole B (Nazwa dyrektora, jak Jack Black).
Dzięki!
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi Marc,
Tak, istnieją ograniczenia z nazwą w polu.
W przypadku wielu słów ze spacjami musisz zastąpić spacje podkreśleniami, takimi jak Nazwa_firmy.
A nazwa zakładki nie może zawierać żadnych znaków specjalnych, takich jak / \ : * ? " < > |
Dzięki za komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Jak zawijamy tekst? Podążyłem za krokiem i działa dobrze, z wyjątkiem tego, że gdy druga lista jest zbyt długa, wychodzi poza stronę. Czy jest sposób na automatyczne zawijanie?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Paul,
Przepraszamy, nie mogę ci jeszcze w tym pomóc. Dzięki za komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
HI Mam zrzuty do pracy. mam pytanie
Kiedy dokonuję wyboru dla pierwszego menu rozwijanego, czy jest jakiś sposób na zautomatyzowanie wyborów koordynujących i powiązanych z kolejnymi listami rozwijanymi? Na przykład. Mam pełnomocnika z listy rozwijanej dla rodziców, dwie listy rozwijane dla dzieci to odpowiednio Tytuł i Numer telefonu. Po wybraniu imienia i nazwiska adwokata chciałbym, aby powiązane listy rozwijane podrzędne automatycznie wypełniały tytuł i numer telefonu. Jak miałabym to zrobić?

Z góry dziękuję.

Sylvia
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Przepraszamy, nie mogę ci jeszcze w tym pomóc. Dzięki za komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy istnieje sposób na dodanie wielu pól kategorii na podstawie jednego wyboru? na przykład muszę powiedzieć Wybierz "Wino", ale muszę być w stanie wybrać 5 opcji (owocowy, czerwony, mocny itp.) Z 10 możliwych opcji na drugiej liście rozwijanej. Postępowałem zgodnie z powyższymi instrukcjami i działa dobrze tylko na jednym polu z jednym innym polem zależnym. Ale potrzebuję 5 pól zależnych, a wszystko to wyzwalane przez jedno pole w tym przypadku „wino”. Duplikuję pole rozwijane, nie działa, próbuję dodać drugie pole do kodu, ale nie wiem jak: ActiveDocument.FormFields("ddCategory") i ("ddCategory2")
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Ed,
Przepraszam, nie mogę ci w tym pomóc. Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, Jak mogę powielić pole kategorii? Użyłem powyższego kodu i działa dobrze, ale tylko dla jednego pudełka. Co mam zrobić w kodzie, jeśli na przykład muszę wybrać maksymalnie 3 owoce po wybraniu grupy Owoce? Duplikuję pole, które stworzyłem, ale działa tylko jedno.
---------------------
Wybierz
OWOC: banan
jabłko
"Wybierz przedmiot"


----------------------------------
Wybierz
Warzywa: Kapusta
cebula
"Wybierz przedmiot"
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję za ten bardzo przydatny zasób.

Czy w formularzu można wielokrotnie powtarzać to samo zależne menu rozwijane?

Potrzebuję wypełniacza formularza, aby przypisać kategorię do każdego nowego wiersza (ale za każdym razem z tymi samymi opcjami). Udało mi się utworzyć listy rozwijane, ale kiedy ograniczam edycję do testowania, wydają się resetować podczas pracy w dół wierszy.

Podziękowania
Amy
Ten komentarz został zminimalizowany przez moderatora na stronie
Używam tego samego kodu, jednak tekst, który zastępuję ddcategory, ma 100 słów plus. Czy mimo to należy zawijać tekst, aby nie znikał ze strony i nie znikał?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem!! :0
Ten komentarz został zminimalizowany przez moderatora na stronie
سلام من همه مراحل رو رفتم ولی درآخر وقتی Twojej
ار باید بکنم؟
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, z jakiegoś powodu nie mogę modyfikować niczego innego w pliku słownym, jeśli lista rozwijana jest aktywna. Czy jest sposób, aby tego uniknąć?

Dziękuję Ci
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem, czy ktoś był w stanie pomóc w tym
Ten komentarz został zminimalizowany przez moderatora na stronie
To było niezwykle pomocne, dziękuję.
Mam pytanie, czy jest sposób na modyfikację kodu tak, aby jak wybiorę nową pozycję z pierwszej listy rozwijanej, ta zależna się wyczyściła?
Ten komentarz został zminimalizowany przez moderatora na stronie
Przepraszamy za spóźnioną odpowiedź, dopiero dziś natknąłem się na tę stronę :-)
Już to robi. Pierwsza instrukcja w konstrukcji Select case ... End select czyści drugą listę. Jeśli żadne z kryteriów nie jest spełnione, nic nie jest dodawane.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, dzięki za szczegółowy samouczek, ale mam pytanie, ponieważ szablon słów jest do użytku innych, 
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, wielkie dzięki za szczegółowy samouczek, ale mam pytanie, ponieważ szablon słów jest przeznaczony do użytku przez innych. Wspomniałeś o trybie ochronnym i hasło jest koniecznością, można to zrobić, jeśli powiem im hasło, wtedy jest konflikt: są inne puste pola, które należy wypełnić, nie można tego zrobić tylko wtedy, gdy tryb ochrony jest wyłączony. Co powinienem zrobić? Czy jest jakaś metoda na zaspokojenie obu 2 potrzeb?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,

ist das ganze auch unter Outlook möglich. Leider bekomme ich das so nicht hin da die Eigenschaften des Dropdown Menüs ganz anders aussehen.

Ich wollte unter Aufgaben einen Reparaturauftrag ersstellen wo man Gebäude,Bereich und dan Zimmernummer oder Bezeichnung auwählen kann.

Ist das möglich w Outlook/Aufgaben?



Dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Możesz utworzyć listę rozwijaną z niestandardowym polem w oknie Zadania programu Outlook, wykonując czynności opisane w tym artykule:
Jak dodać listę rozwijaną z niestandardowym plikiem w oknie zadań programu Outlook?
https://www.extendoffice.com/documents/outlook/4453-outlook-custom-fields-tasks-drop-down.html
Lub utwórz listę rozwijaną w słowie, a następnie skopiuj ją i wklej do okna zadań, jak potrzebujesz.
Ale jeśli chcesz tworzyć zależne listy rozwijane w Zadaniu Outlooka, nie znaleziono jeszcze żadnej metody.
Przepraszam za to.
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL