/ / Excel VBA Dependent Combo Boxes

Excel VBA Dependent Combo Boxes

Nedenfor vil vi se på et program i Excel VBA som skaber en brugerformular, der indeholder afhængige kombinationsbokse. Brugerformularen, vi skal oprette, ser ud som følger:

Brugeren vælger Dyr fra en rulleliste. Som et resultat kan brugeren vælge et dyr fra en anden rulleliste.

Afhængige Combo Boxes i Excel VBA

Brugeren vælger Sport fra en rulleliste. Som følge heraf kan brugeren vælge en sport fra en anden rulleliste.

Afhængige Combo Boxes i Excel VBA

For at oprette denne brugerformular, udfør følgende trin.

1. Åbn Visual Basic Editor. Hvis Project Explorer ikke er synlig, skal du klikke på Vis, Project Explorer.

2. Klik på Indsæt, Brugerformular. Hvis værktøjskassen ikke vises automatisk, skal du klikke på Vis, Værktøjskasse. Din skærm skal opsættes som nedenfor.

Brugerform Screen Setup i Excel VBA

3. Tilføj kombinationsbokse (først til venstre, andet til højre) og kommandoknappen. Når dette er gennemført, skal resultatet være i overensstemmelse med billedet af den tidligere viste brugerformular. For eksempel opret en kombinationsboks kontrol ved at klikke på ComboBox fra Toolbox. Derefter kan du trække en kombinationsboks på Brugerformularen.

4. Du kan ændre navnene og teksten på kontrollerne. Navne bruges i Excel VBA-koden. Undertekster er dem, der vises på din skærm. Det er god praksis at ændre navnene på kontrollerne, men det er ikke nødvendigt her, fordi vi kun har få kontroller i dette eksempel. Hvis du vil ændre billedteksten til brugerformularen og kommandoknappen, skal du klikke på Vis, Egenskaber Vindue og klikke på hver kontrol.

5. For at vise brugerformularen skal du placere en kommandoknap på dit regneark og tilføje følgende kode linje:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi skal nu oprette Sub UserForm_Initialize. Når du bruger visningsmetoden til brugerformularen, udføres denne under automatisk.

6. Åbn Visual Basic Editor.

7. I Project Explorer skal du højreklikke på UserForm1 og derefter klikke på View Code.

8. Vælg Brugerform fra den venstre rullemenu. Vælg Initialize fra den højre rulleliste.

9. Tilføj følgende kodelinjer:

Private Sub UserForm_Initialize()

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

End Sub

Forklaring: Disse kode linjer udfylder den første kombinationsboks.

Vi har nu oprettet den første del af brugerformularen. Selvom det ser pænt ud, sker der intet endnu, når vi vælger et emne fra den første kombinationsboks.

10. Dobbeltklik på UserForm1 i Project Explorer.

11. Dobbeltklik på den første kombinationsboks.

12. Tilføj følgende kode linjer:

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 bruger værdien af ​​variabelindekset til at teste hver efterfølgende Case-sætning for at se med hvilke elementer den anden kombinationsboks skal udfyldes. Gå igennem vores Select Case-program for at lære mere om Select Case-strukturen.

13. Dobbeltklik på knappen Importer.

14. Tilføj følgende kode linje:

Private Sub CommandButton1_Click()

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

End Sub

Resultat:

Afhængige Combo Boxes i Excel VBA

Læs også: