Skrzynki Combo zezwól użytkownikom na wybór opcji z listy rozwijanej. ComboBoxes można tworzyć w VBA UserForms lub za pomocą arkusza Excel. W tym samouczku dowiesz się, jak tworzyć i manipulować ComboBoxami w VBA i arkuszach Excel.
Jeśli chcesz dowiedzieć się, jak utworzyć Listbox, kliknij tutaj: VBA Listbox
Jeśli chcesz dowiedzieć się, jak utworzyć pole wyboru, kliknij tutaj: VBA Checkbox
Utwórz ComboBox w arkuszu programu Excel
Aby wstawić ComboBox do arkusza roboczego, musisz przejść do Karta programisty, Kliknij Wstawić i pod kontrolkami ActiveX wybierz Pole kombi:
Obraz 1. Wstaw ComboBox do arkusza roboczego
Po wybraniu wstawionego ComboBoxu możesz kliknąć Nieruchomości pod Karta programisty:
Obraz 2. Zmień właściwości ComboBox
Tutaj możesz ustawić różne właściwości ComboBox. Na początek zmieniliśmy atrybut Nazwa do cmbComboBox. Teraz możemy użyć ComboBox o tej nazwie w kodzie VBA.
Wypełnij ComboBox w kodzie VBA
Najpierw musimy wypełnić ComboBox wartościami. W większości przypadków ComboBox musi być wypełniony po otwarciu skoroszytu. Z tego powodu musimy umieścić kod do wypełnienia ComboBox w obiekcie zeszyt ćwiczeń, procedura Otwarty. Ta procedura jest wykonywana za każdym razem, gdy użytkownik otwiera skoroszyt. Oto kod:
123456789 | Z Sheet1.cmbComboBox.AddItem "Jan".Dodaj pozycję "Michael".Dodaj pozycję "Jennifer".AddItem "Lilly".AddItem "Robert"Kończyć z |
Po kliknięciu menu rozwijanego otrzymasz 5 imion do wyboru (John, Michael, Jennifer, Lilly i Robert):
Obraz 3. Wypełnij ComboBox w VBA
Wypełnij ComboBox z zakresu komórek
Innym możliwym sposobem wypełnienia ComboBoxu jest pozwolenie użytkownikowi na zrobienie tego. ComboBox można połączyć z zakresem komórek. W tym podejściu za każdym razem, gdy użytkownik wprowadzi nową wartość w zakresie komórek, ComboBox zaktualizuje się o tę wartość.
Jeśli chcesz to włączyć, musisz przejść do Nieruchomości ComboBox i ustaw atrybut ListaWypełnij Zakres do zakresu komórek (w naszym przypadku E2:E5):
Obraz 4. Wypełnij ComboBox z zakresu komórek
Połączyliśmy nasz ComboBox z zakresem E2:E5, gdzie umieszczamy żądane nazwy (Nathan, Harry, George, Roberta). W rezultacie ComboBox jest teraz wypełniony tymi nazwami:
Rysunek 5. Wypełniony ComboBox z zakresu komórek
Uzyskaj wybrany element ComboBox w VBA
Celem ComboBox jest wybór użytkownika. Aby pobrać wybór użytkownika, musisz użyć tego kodu:
123 | Dim strSelectedItem As VariantstrSelectedItem = Arkusz1.cmbComboBox.Value |
Wybór użytkowników znajduje się w atrybucie Wartość z Arkusz1.cmbPole Combo obiekt. Ta wartość jest przypisana do zmiennej strSelectedItem:
Obraz 6. Uzyskaj wybraną wartość z ComboBox w VBA
Wybraliśmy Julia w ComboBox i wykonał procedurę. Jak widać na obrazku 5, wartość strSelectedItem jest Julia, czyli wybrana przez nas wartość. Teraz możesz dalej przetwarzać tę zmienną w kodzie.
Wyczyść ComboBox
Jeśli chcesz wyczyścić ComboBox w VBA, musisz użyć Jasne metoda Arkusz1.lstComboBox obiekt. Usunie wszystkie elementy z ComboBox. Oto kod:
1 | Arkusz1.cmbComboBox.Wyczyść |
Kiedy wykonujemy kod, otrzymujemy pusty ComboBox:
Obraz 7. Wyczyść ComboBox
Użyj ComboBox w formularzu użytkownika
Jak wspomnieliśmy, Combobox jest najczęściej używany w Userforms. Aby wyjaśnić, jak możesz to zrobić, najpierw wstawimy formularz użytkownika. W edytorze VBA kliknij prawym przyciskiem myszy nazwę modułu, kliknij Wstawić i wybierz Formularz użytkownika:
Obraz 8. Wstaw formularz użytkownika
Aby wyświetlić kontrolki do wstawiania, musisz włączyć Przybornik. Aby to zrobić, kliknijPrzybornik na pasku narzędzi. Następnie otrzymasz okna ze wszystkimi dostępnymi kontrolkami. Możesz kliknąć ComboBox aby utworzyć go w formularzu użytkownika.
Obraz 9. Wstaw ComboBox w Userform
Nazwiemy ComboBox cmbComboBox. Aby wypełnić go wartościami, musimy umieścić w metodzie następujący kod: Zainicjuj obiektu Formularz użytkownika:
12345678910111213 | Prywatna Sub UserForm_Initialize()Z UserForm1.cmbComboBox.AddItem "Jan".Dodaj pozycję "Michael".Dodaj pozycję "Jennifer".AddItem "Lilly".AddItem "Robert"Kończyć zNapis końcowy |
Ten kod jest wyzwalany za każdym razem, gdy użytkownik uruchamia formularz użytkownika i wypełnia pole Combobox tymi 5 nazwami:
Obraz 10. ComboBox z wartościami w Userform
Jeśli chcesz uzyskać wybraną wartość z ComboBox, musisz użyć tej samej logiki dla Combobox w arkuszu, co wyjaśniono wcześniej w artykule.