/ / Excel VBA Dependent Combo Boxes

Excel VBA Dependent Combo Boxes

Nedenfor ser vi på et program i Excel VBA som skaper en brukerform som inneholder avhengige kombinasjonsbokser. Brukerformen vi skal lage, ser ut som følger:

Brukeren velger Dyr fra en rullegardinliste. Som et resultat kan brukeren velge et dyr fra en andre rullegardinliste.

Avhengige kombinasjonsbokser i Excel VBA

Brukeren velger Sport fra en rullegardinliste. Som et resultat kan brukeren velge en sport fra en andre rullegardinliste.

Avhengige kombinasjonsbokser i Excel VBA

For å opprette denne brukerformen, utfør følgende trinn.

1. Åpne Visual Basic Editor. Hvis Project Explorer ikke er synlig, klikker du på Vis, Project Explorer.

2. Klikk på Sett inn, Brukerform. Hvis Verktøykassen ikke vises automatisk, klikker du på Vis, Verktøykasse. Skjermen din bør settes opp som nedenfor.

Userform Screen Setup i Excel VBA

3. Legg til kombinasjonsboksene (først til venstre, det andre til høyre) og kommandoknappen. Når dette er fullført, bør resultatet være i tråd med bildet av brukerformen som ble vist tidligere. For eksempel, opprett en kombinasjonsbokskontroll ved å klikke på ComboBox fra Verktøykassen. Deretter kan du dra en kombinasjonsboks på brukerformen.

4. Du kan endre navnene og bildeteksten til kontrollene. Navnene brukes i Excel VBA-koden. Undertekster er de som vises på skjermen. Det er god praksis å endre navnene på kontrollene, men det er ikke nødvendig her fordi vi bare har noen få kontroller i dette eksemplet. For å endre bildeteksten til Userform og kommandoknappen, klikk Vis, Egenskaper Vindu og klikk på hver kontroll.

5. For å vise brukerformatet, legg en kommandoknapp på regnearket og legg til følgende kodelinje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi skal nå lage Sub UserForm_Initialize. Når du bruker Show-metoden for brukerformularen, blir denne delen automatisk utført.

6. Åpne Visual Basic Editor.

7. I Project Explorer, høyreklikk på UserForm1 og klikk deretter Vis kode.

8. Velg Brukerform fra den venstre rullegardinlisten. Velg Initialize fra den høyre rullegardinlisten.

9. Legg til følgende kodelinjer:

Private Sub UserForm_Initialize()

With ComboBox1
    .AddItem "Animals"
    .AddItem "Sports"
    .AddItem "Food"
End With

End Sub

Forklaring: Disse kodelinjene fyller den første kombinasjonsboksen.

Vi har nå opprettet den første delen av brukerformen. Selv om det ser pent ut, vil ingenting skje enda når vi velger et element fra den første kombinasjonsboksen.

10. Dobbeltklikk på UserForm1 i Project Explorer.

11. Dobbeltklikk på den første kombinasjonsboksen.

12. Legg til følgende kodelinjer:

Private Sub ComboBox1_Change()

Dim index As Integer
index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index
    Case Is = 0
        With ComboBox2
            .AddItem "Dog"
            .AddItem "Cat"
            .AddItem "Horse"
        End With
    Case Is = 1
        With ComboBox2
            .AddItem "Tennis"
            .AddItem "Swimming"
            .AddItem "Basketball"
        End With
    Case Is = 2
        With ComboBox2
            .AddItem "Pancakes"
            .AddItem "Pizza"
            .AddItem "Chinese"
        End With
End Select

End Sub

Forklaring: Excel VBA bruker verdien av variabelindeksen til å teste hver påfølgende Case-setning for å se med hvilke elementer den andre kombinasjonsboksen skal fylles. Gå gjennom vårt Select Case-program for å lære mer om Select Case-strukturen.

13. Dobbeltklikk på Importer-knappen.

14. Legg til følgende kodelinje:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Resultat:

Avhengige kombinasjonsbokser i Excel VBA

Les også: