1. Budowa aplikacji do wprowadzania danych – Wstawianie pola listy ListBox (Formant ActiveX)
Pole listy w odróżnieniu od pola kombi umożliwia nam zaznaczenie więcej niż jednej opcji wyboru jednocześnie. Jak wstawić pole listy ListBox? Podobnie jak w przypadku poprzednich kontrolek, wchodzimy w kartę Developer. Spośród formantów ActiveX wybieramy pole listy. Osadzamy je nad kolumną „Rodzaj kontaktu”. Pole listy w Edytorze VBA obsługujemy bardzo podobnie jak pole kombi. Pole możemy zaprogramować także w sposób, by użytkownik mógł zaznaczyć tylko jedną opcję wyboru.
2. Budowa aplikacji do wprowadzania danych – Programowanie pola listy ListBox (Formant ActiveX) – pojedyncze zaznaczenie
Nasza tabela posiada już pole listy. Pole listy domyślnie ustawione jest w sposób, by można było zaznaczyć tylko jedną opcję wyboru. Samego programowania pola dokonujemy w Edytorze VBA w obiekcie „Ten_skoroszyt„. W naszym przypadku chcielibyśmy, by w polu listy pojawiły się do wyboru wartości dotyczące kontaktu: osobisty, telefoniczny, mailowy. Zapisujemy to w następujący sposób:
With Arkusz1.ListBox1 .AddItem "Osobisty" .AddItem "Telefoniczny" .AddItem "Mailowy" End With
3. Jak pobrać wartości z pola listy ListBox VBA?
W tej chwili możemy już wybrać dowolną jedną wartość z pola listy. By połączyć pole listy z naszą aplikacją do wprowadzania danych postępujemy analogicznie jak w poprzednich rozdziałach. Obiekt „Arkusz1” aktualizujemy o następującą linię kodu:
'WPROWADZANIE DANYCH Cells(sngWiersz, 8) = ListBox1
Kod naszego programu w obiekcie Ten_skoroszyt wygląda teraz następująco:
Private Sub Workbook_Open() With Arkusz1.ComboBox1 .AddItem "dolnośląskie" .AddItem "kujawsko-pomorskie" .AddItem "lubelskie" .AddItem "lubuskie" .AddItem "łódzkie" .AddItem "małopolskie" .AddItem "mazowieckie" .AddItem "opolskie" .AddItem "podkarpackie" .AddItem "podlaskie" .AddItem "pomorskie" .AddItem "śląskie" .AddItem "świętokrzyskie" .AddItem "warmińsko-mazurskie" .AddItem "wielkopolskie" .AddItem "zachodniopomorskie" End With With Arkusz1.ComboBox2 Dim intLicznikBox2 As Integer For intLicznikBox2 = 1 To 31 .AddItem intLicznikBox2 Next End With With Arkusz1.ComboBox3 Dim intLicznikBox3 As Integer intLicznikBox3 = 1 While intLicznikBox3 <= 12 .AddItem intLicznikBox3 intLicznikBox3 = intLicznikBox3 + 1 Wend End With With Arkusz1.ComboBox4 Dim intLicznikBox4 As Integer For intLicznikBox4 = 1980 To 2000 .AddItem intLicznikBox4 Next End With With Arkusz1.ListBox1 .AddItem "Osobisty" .AddItem "Telefoniczny" .AddItem "Mailowy" End With End Sub
2 komentarze “Kontrolki ActiveX – Pole listy ListBox w Excel VBA”
A wybór wielokrotny też możesz opisać? Dzięki, bardzo fajny kurs.
Ulepszyłam nieco kod o walidację, czy wszystkie pola zostały wprowadzone, zatem wrzucam 🙂