VBA Listbox

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.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave