VBA ComboBox

Kombinasjonsbokser la brukerne velge et alternativ fra en rullegardinmenyliste. Kombinasjonsbokser kan opprettes i VBA UserForms eller med et Excel -regneark. I denne opplæringen lærer du hvordan du oppretter og manipulerer kombinasjonsbokser i VBA og i Excel -regneark.

Hvis du vil lære å lage en Listbox, klikker du her: VBA Listbox

Hvis du vil lære å lage en avkrysningsboks, klikker du her: VBA -avkrysningsboks

Lag en kombinasjonsboks i Excel -regneark

For å sette inn en kombinasjonsboks i regnearket, må du gå til Kategorien Utvikler, klikk Sett inn og velg under ActiveX -kontroller Kombinasjonsboks:

Bilde 1. Sett inn en kombinasjonsboks i regnearket

Når du velger kombinasjonsboksen du satte inn, kan du klikke på Egenskaper under Kategorien Utvikler:

Bilde 2. Endre kombinasjonsbokseigenskaper

Her kan du angi forskjellige egenskaper til ComboBox. For å starte endret vi attributtet Navn til cmbComboBox. Nå kan vi bruke ComboBox med dette navnet i VBA -kode.

Fyll ut en kombinasjonsboks i VBA -kode

Først må vi fylle ut kombinasjonsboksen med verdier. I de fleste tilfeller må en kombinasjonsboks fylles ut når arbeidsboken åpnes. På grunn av dette må vi sette en kode for å fylle ut kombinasjonsboksen i objektet Arbeidsbok, fremgangsmåte Åpen. Denne prosedyren utføres hver gang en bruker åpner arbeidsboken. Her er koden:

123456789 Med Sheet1.cmbComboBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Slutt med

Når du klikker på rullegardinmenyen, får du 5 navn å velge mellom (John, Michael, Jennifer, Lilly og Robert):

Bilde 3. Fyll ut kombinasjonsboksen i VBA

Fyll ut en kombinasjonsboks fra et celleområde

En annen mulig måte å fylle ut en kombinasjonsboks er å la en bruker gjøre det. En ComboBox kan kobles til celleområdet. I denne tilnærmingen, hver gang en bruker angir en ny verdi i celleområdet, vil ComboBox oppdateres med den verdien.

Hvis du vil aktivere dette, må du gå til Egenskaper i kombinasjonsboksen og angi attributtet ListFillRange til celleområdet (i vårt tilfelle E2: E5):

Bilde 4. Fyll ut kombinasjonsboksen fra cellene

Vi koblet vår ComboBox til serien E2: E5, der vi legger navn vi ønsker (Nathan, Harry, George, Roberta). Som et resultat er ComboBox nå fylt med disse navnene:

Bilde 5. Populated ComboBox fra cellene

Få et valgt element i en kombinasjonsboks i VBA

Formålet med en kombinasjonsboks er å få brukernes valg. For å hente et brukervalg, må du bruke denne koden:

123 Dim strSelectedItem As VariantstrSelectedItem = Sheet1.cmbComboBox.Value

Brukervalget er i attributtet Verdi av Sheet1.cmbComboBox gjenstand. Denne verdien er tilordnet variabelen strSelectedItem:

Bilde 6. Få en valgt verdi fra kombinasjonsboksen i VBA

Vi valgte Julia i ComboBox og utførte prosedyren. Som du kan se på Bilde 5, er verdien av strSelectedItem er Julia, som er verdien vi valgte. Nå kan du behandle denne variabelen videre i koden.

Fjern en kombinasjonsboks

Hvis du vil slette en kombinasjonsboks i VBA, må du bruke Klar Metode av Sheet1.lstComboBox gjenstand. Det sletter alle elementene fra kombinasjonsboksen. Her er koden:

1 Sheet1.cmbComboBox.Clear

Når vi kjører koden, får vi den tomme ComboBox:

Bilde 7. Fjern ComboBox

Bruk en kombinasjonsboks i en brukerform

Som vi nevnte, er Combobox 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 8. 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å ComboBox for å opprette den i brukerskjemaet.

Bilde 9. Sett inn en kombinasjonsboks 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.cmbComboBox.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 kombinasjonsboksen med disse fem navnene:

Bilde 10. Kombinasjonsboksen 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.

wave wave wave wave wave