Jak stworzyć zależny Combobox w VBA Excel?

Spisie treści:

Anonim

Wiemy, jak utworzyć kaskadowe menu rozwijane w arkuszu za pomocą walidacji danych. Ale jak stworzyć rozwijane menu rozwijane kaskadowe na formularzu użytkownika VBA. To jedna z podstawowych potrzeb.

W tym artykule dowiemy się, jak stworzyć zależny combobox w VBA.

Logika dla zależnego Combobox w VBA

Aby utworzyć zależny combobox w VBA, musimy zainicjować combobox w zdarzeniu elementu źródłowego. Na przykład, jeśli pole combobox zależy od grupy przycisków opcji, kod do załadowania zależnej listy combobox powinien zostać uruchomiony natychmiast po wybraniu przez kogoś przycisku opcji. Lub jeśli combobox zależy od innego combobox, to w zależności od combobox powinien ładować się za każdym razem, gdy zmienia się wartość w combobox.

Dość teorii. Przejdźmy do przykładu, aby zobaczyć, jak to działa.

ComboBox w zależności od innego Combobox

Utwórz dwa comboboxy. Najpierw należy wymienić kilka nazw krajów. Druga powinna zawierać nazwy stanów wybranego kraju. Jeśli użytkownik zmieni kraj w pierwszym comboboxie, należy zmienić listę drugiego comboboxa.

Utwórzmy formularz, który ma dwa pola kombi z etykietami krajów i stanów oraz przycisk polecenia do przesłania danych wejściowych.

Pierwszy combobox powinien zawierać nazwy krajów i nie zależy od żadnej wartości. Więc załadujemy go w zdarzeniu form_intialize, tak jak to robimy w przypadku podstawowej inicjalizacji combobox.

Kliknij dwukrotnie formularz użytkownika. Otworzy obszar kodowania w obiekcie UserForm. Teraz z lewego menu rozwijanego wybierz formularz użytkownika. Następnie z prawego menu rozwijanego wybierz inicjalizuj.

Zostanie wstawiona pusta nazwa podrzędna UserForm_Initialize(). Wszystko napisane w tej podsekcji zostanie wykonane przed pojawieniem się formularza użytkownika.

Więc piszemy tutaj kod inicjalizacji dla combobox.

Private Sub UserForm_Initialize() countries = Array("Indie", "Nepal", "Bhutan", "Shree Lanka") UserForm1.ComboBox1.List = states End Sub 

Zainicjowaliśmy nasz pierwszy combobox. Za każdym razem, gdy załadujesz formularz użytkownika, pierwszy combox będzie gotowy z nazwami krajów.

Teraz, aby załadować drugie combobox, musimy sprawdzić, jaka wartość jest wybrana w pierwszym combobox1 i uruchamiać kod za każdym razem, gdy combobox1 zmienia swoje wartości. W tym celu użyjemy zdarzenia Combobox_AfterUpdate.

Z lewego menu wybierz combobox1. Z prawego menu rozwijanego wybierz AfterUpdate. Możemy również użyć zdarzenia Change, ale w artykule pozostaniemy przy AfterUpdate.

Teraz napisz poniższy kod:

Private Sub ComboBox1_AfterUpdate() Select Case ComboBox1.Value Case "India": states = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": states = Array("Arun" Kshetra”, „Janakpur Kshetra”, „Kathmandu Kshetra”,_ „Gandak Kshetra”, „Kapilavastu Kshetra”) Sprawa „Bhutan”: stany = Array („Bumthang”, „Trongsa”, „Punakha”, „Thimphu”, „ Paro") Case "Shree Lanka": states = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna") End Select ComboBox2.List = states End Sub 

Tutaj użyliśmy instrukcji select case. Instrukcja select case jest dobra, gdy chcemy zobaczyć, jaka wartość została wybrana spośród wielu wartości. Wyjaśniłem to szczegółowo tutaj.

Aby zapisać wartość wstawioną przez użytkownika, użyj przycisku Prześlij. Wpisz poniższy kod w przycisku polecenia Prześlij, aby zapisać kraj i stan wybrany przez użytkownika w arkuszu.

Private Sub CommandButton1_Click() country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets("sheet1").Range("G1") = country ThisWorkbook.Worksheets("sheet1").Range("H1") = State Unload Mnie Koniec Sub 

Teraz, aby wyświetlić formularz użytkownika, wstaw przycisk w arkuszu i napisz poniższy kod. Możesz też użyć prostego modułu, aby wyświetlić formularz użytkownika.

Sub load_userform() UserForm1.Show End Sub 

Teraz uruchom kod load_userform.

Jak to działa?

Po uruchomieniu sub, który ma kod userform.show, VBA uruchamia zdarzenia userform_initialize natychmiast po uruchomieniu polecenia userform.show. W zdarzeniu userform_intialize zainicjowaliśmy pierwszy combobox z listą krajów. Następnie formularz jest pokazywany użytkownikowi.

Teraz, gdy użytkownik wybierze dowolną wartość z pierwszego pola kombi, zostanie uruchomione zdarzenie combobox1_AfterUpdate. To zdarzenie zawiera kod do sprawdzenia, jaka wartość została wybrana przez użytkownika w combobox1 i na podstawie tej wartości ustawia tablicę stanów i inicjalizuje wartości combobox2 z tablicą stanów.

Więc tak, w ten sposób tworzysz kaskadowe combobox w formularzu użytkownika VBA. Mam nadzieję, że byłam wystarczająco wytłumaczona, a artykuł spełnił swoje zadanie. Jeśli masz jakiekolwiek wątpliwości dotyczące tego artykułu lub jakiegokolwiek tematu VBA, zapytaj mnie w sekcji komentarzy poniżej.

Pierwsze kroki z formularzami użytkownika Excel VBA| Wyjaśnię, jak stworzyć formularz w Excelu, jak korzystać z przybornika VBA, jak obsługiwać dane wejściowe użytkownika i wreszcie jak przechowywać dane wejściowe użytkownika. Przejrzymy te tematy na jednym przykładzie i przewodniku krok po kroku.

Zmienne VBA w Excelu| VBA oznacza Visual Basic for Applications. Jest to język programowania firmy Microsoft. Jest używany z aplikacjami Microsoft Office, takimi jak MSExcel, MS-Word i MS-Access, podczas gdy zmienne VBA są specyficznymi słowami kluczowymi.

Zakres zmiennych Excel VBA| We wszystkich językach programowania mamy specyfikatory dostępu do zmiennych, które definiują, skąd można uzyskać dostęp do zdefiniowanej zmiennej. Excel VBA nie jest wyjątkiem. VBA również ma specyfikatory zakresu.

Argumenty ByRef i ByVal | Gdy argument jest przekazywany jako argument ByRef do innej podrzędnej lub funkcji, wysyłane jest odwołanie do rzeczywistej zmiennej. Wszelkie zmiany wprowadzone w kopii zmiennej zostaną odzwierciedlone w oryginalnym argumencie.

Usuń arkusze bez monitów o potwierdzenie za pomocą VBA w programie Microsoft Excel | Ponieważ usuwasz arkusze za pomocą VBA, wiesz, co robisz. Chcesz powiedzieć programowi Excel, aby nie wyświetlał tego ostrzeżenia i usuwał ten cholerny arkusz.

Dodaj i zapisz nowy skoroszyt za pomocą VBA w programie Microsoft Excel 2016| W tym kodzie najpierw utworzyliśmy odwołanie do obiektu skoroszytu. A następnie zainicjalizowaliśmy go nowym obiektem skoroszytu. Zaletą tego podejścia jest to, że możesz łatwo wykonywać operacje na tym nowym skoroszycie. Jak zapisywanie, zamykanie, usuwanie itp.

Wyświetl komunikat na pasku stanu Excel VBA| Pasek stanu w programie Excel może być używany jako monitor kodu. Gdy twój kod VBA jest długi i wykonujesz kilka zadań za pomocą VBA, często wyłączasz aktualizację ekranu, aby nie widzieć migotania ekranu.

Wyłącz komunikaty ostrzegawcze za pomocą VBA w programie Microsoft Excel 2016| Ten kod nie tylko wyłącza alerty VBA, ale także zwiększa wydajność czasową kodu. Zobaczmy jak.

Popularne artykuły:

50 skrótów Excela, które zwiększą Twoją produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.

Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

LICZ.JEŻELI w Excelu 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby zliczyć określone wartości. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.

Jak korzystać z funkcji SUMIF w programie Excel | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.