I VBA kan du oprette en Listbox hvor en bruger kan vælge en af de angivne muligheder. Listbox bruges ofte i brugerformularer, men kan også bruges i et regneark. I denne vejledning lærer du, hvordan du opretter, udfylder og sletter en listeboks. Du vil også se, hvordan du får et brugervalg i VBA og bruger det i kode.
Hvis du vil lære at oprette en ComboBox, skal du klikke her: VBA ComboBox
Hvis du vil lære at oprette en afkrydsningsfelt, skal du klikke her: VBA -afkrydsningsfelt
Opret en listeboks
For at indsætte en listeboks i regnearket skal du gå til Fanen Udvikler, klik Indsæt og vælg under ActiveX Controls Listeboks:
Billede 1. Indsæt en listeboks i regnearket
Når du vælger den listeboks, du har indsat, kan du klikke på Ejendomme under Fanen Udvikler:
Billede 2. Skift Listeboksegenskaber
Her kan du indstille forskellige egenskaber for Listbox. I begyndelsen ændrede vi attributten Navn til lstListBox. Nu kan vi bruge Listbox med dette navn i VBA -kode.
Befolk en Listbox i VBA -kode
Først skal vi udfylde Listbox med værdier. I de fleste tilfælde skal en listeboks udfyldes, når projektmappen åbnes. På grund af dette skal vi sætte en kode til at udfylde Listbox i objektet Arbejdsbog, procedure Åben. Denne procedure udføres hver gang en bruger åbner projektmappen. Her er koden:
123456789 | Med Sheet1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Afslut med |
Som du kan se på billede 3, udfyldte vi vores Listbox med 5 navne (John, Michael, Jennifer, Lilly og Robert):
Billede 3. Populer Listbox i VBA
Befolk en listeboks fra et celleområde
En anden mulig måde at udfylde en Listbox på er at lade en bruger gøre det. En listeboks kan forbindes til cellernes rækkevidde. Hver gang en bruger indtaster en ny værdi i celleområdet, opdateres Listbox med denne værdi.
Hvis du vil aktivere dette, skal du gå til Ejendomme i ListBox og indstil attributten ListFillRange:
Billede 4. Udfyld listeboksen fra cellerne
Vi forbandt vores Listbox med serien E2: E5, hvor vi satte navne, vi ønsker (Nathan, Harry, George, Roberta). Som et resultat er Listbox nu udfyldt med disse navne.
Få et valgt element i en listeboks i VBA
Formålet med en Listbox er at få brugernes valg. For at hente en værdi, der er valgt af en bruger, skal du bruge denne kode:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value |
Brugervalget er i attributten Værdi af Sheet1.lstListbox objekt. Denne værdi tildeles variablen strSelectedItem:
Billede 5. Hent en valgt værdi fra Listbox i VBA
Vi valgte Harry i listeboksen og udførte proceduren. Som du kan se på billede 5, er værdien af strSelectedItem er Harry, som er den værdi, vi valgte. Desuden kan du behandle denne variabel i koden.
Ryd en listeboks
For at rydde en Listbox i VBA skal du bruge Klar metode til Sheet1.lstListBox objekt. Det sletter alle elementerne fra listeboksen. Her er koden:
1 | Sheet1.lstListBox.Clear |
Når vi udfører koden, får vi den tomme Listbox:
Billede 6. Ryd listeboksen
Brug en listeboks i en brugerform
Som vi nævnte, bruges Listbox oftest i brugerformer. For at forklare, hvordan du kan gøre det, indsætter vi først en brugerformular. I VBA-editor, højreklik på modulnavn, klik på Indsæt og vælg UserForm:
Billede 7. Indsæt en brugerformular
For at få vist kontrolelementer til indsættelse skal du aktivere Værktøjskasse. For at gøre dette skal du klikke påVærktøjskasse ikon på værktøjslinjen. Derefter får du vinduerne med alle tilgængelige kontrolelementer. Du kan klikke på ListBox for at oprette den i brugerformularen.
Billede 8. Indsæt en listeboks i brugerformularen
Vi vil navngive ComboBox cmbComboBox. For at udfylde det med værdier skal vi indsætte følgende kode i metoden Initialiser af objektet UserForm:
12345678910111213 | Privat underbrugerForm_Initialize ()Med UserForm1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Afslut medAfslut Sub |
Denne kode udløses hver gang en bruger kører brugerformularen og udfylder Listbox med disse 5 navne:
Billede 9. Listeboksen med værdier i brugerformularen
Hvis du vil have valgt værdi fra ComboBox, skal du bruge den samme logik for Combobox i et regneark, som er forklaret tidligere i artiklen.