Pole listy VBA - wybrany element

W tym artykule zademonstrujemy, jak pracować z wybranym elementem w polu listy w programie Excel VBA.

Pola listy są w dużej mierze używane w formularzach VBA, ale można ich również używać w arkuszu programu Excel. Pokazują użytkownikom listę opcji, z których co najmniej jeden użytkownik może wybrać.

Tworzenie pola listy w formularzu VBA

Aby utworzyć pole listy w formularzu VBA, najpierw musimy utworzyć UserForm.

Po utworzeniu formularza wybierz kontrolkę Pole listy w przyborniku, a następnie przeciągnij, aby utworzyć pole listy w formularzu.

Dodawanie wartości do listy wartości

W zdarzeniu Initialize formularza wpisz następujący kod. Pole listy pobierze wartości, które są przechowywane w zakresie komórek w arkuszu programu Excel.

123456 Prywatna Sub UserForm_Initialize()Dim rng As RangeDla każdego dzwonka w zakresie ("A1:A50")Me.lstState.AddItem rng.ValueNastępny numerNapis końcowy

Po uruchomieniu formularza zostanie wyświetlone pole listy, jak pokazano na poniższym obrazku:

Wybieranie wartości z listy wartości

Domyślnie pojedynczą wartość można wybrać w polu listy w formularzu użytkownika. Można to jednak zmienić, zmieniając właściwość Multi-Select w polu listy.

Kliknij pole listy, aby je zaznaczyć, a następnie w oknie Właściwości zmień Właściwość wielokrotnego wyboru z 0-frmMultiSelectSingle do 1-frmMultiSelectMulti.

Teraz, gdy uruchamiamy formularz, możemy wybrać więcej niż jedną opcję w polu listy.

Jeśli zmienimy opcję na być 2-frmMultiSelectExtendedoznacza to, że możemy wybrać jedną z wartości, a następnie przytrzymanie klawisza SHIFT, wybierz inną wartość w dalszej części listy, a wszystkie elementy pomiędzy 2 wybranymi wartościami również zostaną wybrane.

Programowanie VBA | Generator kodu działa dla Ciebie!

Praca z wybranymi wartościami w VBA

W zależności od typu opcji, której użyliśmy dla właściwości Multi-Select w polu listy, istnieje kilka sposobów wykorzystania wartości lub wartości wybranych w polu listy w kodzie VBA.

Przypisywanie wartości do zmiennej

Możemy użyć Po aktualizacji zdarzenie pola listy, aby przypisać wybraną wartość do zmiennej.

Najpierw utwórzmy zmienną poziomu modułu na górze modułu formularza.

Pod słowami Opcja Wyraźna, utwórz następującą zmienną ciągu.

1 Dim strState jako ciąg.

Po utworzeniu tej zmiennej możemy dwukrotnie kliknąć pole listy, aby przejść do kodu za formularzem, lub kliknąć przycisk kodu w edytorze VBE.

Zdarzenie kliknięcia w polu listy zostanie utworzone automatycznie. Wybierz Po aktualizacji Zdarzenie z listy dostępnych procedur.

W zdarzeniu After_Update wpisz następujący kod:

123 Subskrypcja prywatna lstState_AfterUpdate()strState = Me.lstStateNapis końcowy

UWAGA: Zdarzenie Click można usunąć, ponieważ nie jest ono wymagane.

Teraz, jeśli uruchomimy formularz i klikniemy w pole listy, wybrana wartość zostanie zapisana w zmiennej. Aby to przetestować, możemy umieścić w kodzie punkt BREAK.

Teraz, gdy uruchomimy formularz, jeśli klikniemy na pole listy, kod przejdzie w tryb DEBUG i zatrzyma się w naszym punkcie przerwania. Jeśli następnie naciśniemy F8 na klawiaturze, aby przejść o krok dalej w kodzie, zmienna zostanie wypełniona wybraną pozycją na liście.

Możemy zobaczyć tę wartość, umieszczając mysz na zmiennej.

LUB

Możemy zobaczyć wartość w oknie bezpośrednim.

Masz dość wyszukiwania przykładów kodu VBA? Wypróbuj Automakro!

Używanie przycisku polecenia do zwracania wartości do programu Excel

Najpierw tworzymy przycisk polecenia na formularzu, aby mieć przycisk OK, aby zwrócić wartość lub wartości wybrane w polu listy do programu Excel.

Wybierz kontrolkę Przycisk polecenia, a następnie kliknij i przeciągnij w formularzu, aby utworzyć przycisk.

W oknie Właściwości zmień nazwę przycisku na cmdOKi zmień podpis i akcelerator przycisku.

Akcelerator ma na celu umożliwienie użytkownikowi aktywowania przycisku za pomocą klawiatury, w tym przypadku Alt+O aktywowałby przycisk.

Aby przycisk polecenia działał, musimy dodać za nim kod, aby po kliknięciu przycisku kod został uruchomiony. Nazywa się to zdarzeniem Click przycisku.

Aby przejść do zdarzenia kliknięcia, kliknij dwukrotnie przycisk w widoku projektu formularza. Zdarzenie kliknięcia zostanie utworzone automatycznie, ponieważ jest to zdarzenie najczęściej używane w przypadku przycisków poleceń.

Wpisz następujący kod w zdarzeniu kliknięcia przycisku polecenia.

123 Prywatna sub cmdOK_Click()Zakres("E1") = strStateNapis końcowy

Kod pobierze zmienną, którą zadeklarowaliśmy w zdarzeniu After_Update w ListBox i zwróci wartość do Range w Excelu.

Alternatywnie możemy pobrać wartość bezpośrednio z pola listy bez użycia zmiennej.

123 Prywatna sub cmdOK_Click()Zakres("E1") = me.lstStateNapis końcowy

Po uruchomieniu formularza wybrana wartość zostanie zwrócona do Excela po kliknięciu przycisku OK.

Wybór wielu wartości

Jeśli ustawiliśmy właściwość wielokrotnego wyboru pola listy na 1 lub 2, co pozwala nam wybrać wiele wartości z listy, kod do wybierania tych wartości jest nieco inny.

ten Po aktualizacji zdarzenie nie jest już uruchamiane podczas wybierania wartości w polu listy - dlatego nie możemy użyć tego zdarzenia.

Nadal możemy użyć zdarzenia kliknięcia przycisku polecenia, ale musimy zapętlić wartości wybrane w polu listy, aby przywrócić je do programu Excel.

W przycisku polecenia Zdarzenie Click wpisz następujący kod.

12345678910 Prywatna sub cmdOK_Click()Dim x As IntegerZakres ("E1"). WybierzDla x = 0 To Me.lstState.ListCount - 1Jeśli Me.lstState.Selected(x) = Prawda, wtedyAktywna Komórka = Me.lstState.List(x)ActiveCell.Offset(1, 0).WybierzZakończ, jeśliNastępny xNapis końcowy

Teraz, gdy uruchomimy formularz, tylko wybrane wartości zostaną zwrócone do arkusza Excel.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave