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.