I VBA kan du opprette en Listbox hvor en bruker kan velge ett av de listede alternativene. Listbox brukes ofte i brukerformer, men kan også brukes i et regneark. I denne opplæringen lærer du hvordan du oppretter, fyller ut og sletter en listeboks. Du vil også se hvordan du får et brukervalg i VBA og bruker det i kode.
Hvis du vil lære å lage en ComboBox, klikk her: VBA ComboBox
Hvis du vil lære å lage en avkrysningsboks, klikker du her: VBA -avkrysningsboks
Lag en listeboks
For å sette inn en listeboks i regnearket, må du gå til Kategorien Utvikler, klikk Sett inn og velg under ActiveX -kontroller Listeboks:
Bilde 1. Sett inn en listeboks i regnearket
Når du velger Listbox som du har satt inn, kan du klikke på Egenskaper under Kategorien Utvikler:
Bilde 2. Endre Listbox Properties
Her kan du angi forskjellige egenskaper for Listbox. I begynnelsen endret vi attributtet Navn til lstListBox. Nå kan vi bruke Listbox med dette navnet i VBA -kode.
Fyll ut en listeboks i VBA -kode
Først må vi fylle ut listeboksen med verdier. I de fleste tilfeller må en listeboks fylles ut når arbeidsboken åpnes. På grunn av dette må vi sette en kode for å fylle Listbox i objektet Arbeidsbok, fremgangsmåte Åpen. Denne prosedyren utføres hver gang en bruker åpner arbeidsboken. Her er koden:
123456789 | Med Sheet1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Slutt med |
Som du kan se på bilde 3, befolket vi Listbox med 5 navn (John, Michael, Jennifer, Lilly og Robert):
Bilde 3. Befolk listeboksen i VBA
Fyll ut en listeboks fra et celleområde
En annen mulig måte å fylle ut en listeboks på er å la en bruker gjøre det. En listeboks kan kobles til celleområdet. Hver gang en bruker angir en ny verdi i celleområdet, vil Listbox derfor oppdatere med denne verdien.
Hvis du vil aktivere dette, må du gå til Egenskaper i ListBox og angi attributtet ListFillRange:
Bilde 4. Fyll ut Listbox fra cellene
Vi koblet Listbox med serien E2: E5, der vi legger navn vi ønsker (Nathan, Harry, George, Roberta). Som et resultat er Listbox nå fylt med disse navnene.
Få et valgt element i en listeboks i VBA
Hensikten med en Listbox er å få brukernes valg. For å hente en verdi som er valgt av en bruker, må du bruke denne koden:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value |
Brukervalget er i attributtet Verdi av Sheet1.lstListbox gjenstand. Denne verdien er tilordnet variabelen strSelectedItem:
Bilde 5. Få en valgt verdi fra Listbox i VBA
Vi valgte Harry i listeboksen og utførte prosedyren. Som du kan se på Bilde 5, er verdien av strSelectedItem er Harry, som er verdien vi valgte. Videre kan du behandle denne variabelen i koden.
Fjern en listeboks
For å fjerne en Listbox i VBA, må du bruke Klar Metode av Sheet1.lstListBox gjenstand. Det vil slette alle elementene fra Listbox. Her er koden:
1 | Sheet1.lstListBox.Clear |
Når vi kjører koden, får vi den tomme Listbox:
Bilde 6. Fjern listeboksen
Bruk en listeboks i et brukerskjema
Som vi nevnte, er Listbox oftest brukt i brukerformer. For å forklare hvordan du kan gjøre det, setter vi først inn et brukerskjema. I VBA-editor, høyreklikk på modulnavn, klikk på Sett inn og velg UserForm:
Bilde 7. Sett inn et brukerskjema
For å vise kontroller for innsetting må du aktivere Verktøykasse. For å gjøre dette, klikk påVerktøykasse ikonet på verktøylinjen. Etter det får du vinduene med alle tilgjengelige kontroller. Du kan klikke på ListBox for å opprette den i brukerskjemaet.
Bilde 8. Sett inn en listeboks i brukerskjemaet
Vi vil gi ComboBox et navn cmbComboBox. For å fylle den med verdier, må vi sette følgende kode inn i metoden Initialiser av objektet UserForm:
12345678910111213 | Private Sub UserForm_Initialize ()Med UserForm1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Slutt medSlutt Sub |
Denne koden utløses hver gang en bruker kjører brukerskjemaet og fyller ut listeboksen med disse fem navnene:
Bilde 9. Listeboksen med verdier i brukerformen
Hvis du vil få valgt verdi fra ComboBox, må du bruke den samme logikken for Combobox i et regneark, som er forklart tidligere i artikkelen.