/ / Excel VBA Dependent Combo Boxes

Excel VBA Dependent Combo Boxes

Nedan ser vi på ett program i Excel VBA vilket skapar en användarform som innehåller beroende kombinationsrutor. Användarformen vi ska skapa ser ut som följer:

Användaren väljer Djur från en rullgardinsmeny. Som ett resultat kan användaren välja ett djur från en andra listrutan.

Beroende på kombinationsboxar i Excel VBA

Användaren väljer Sport från en rullgardinslista. Som ett resultat kan användaren välja en sport från en andra listrutan.

Beroende på kombinationsboxar i Excel VBA

För att skapa detta användarformulär, utför följande steg.

1. Öppna Visual Basic Editor. Om Project Explorer inte är synligt klickar du på Visa, Project Explorer.

2. Klicka på Insert, Userform. Om Verktygslådan inte visas automatiskt klickar du på Visa, Verktygslåda. Din skärm bör ställas in enligt nedan.

Userform Screen Setup i Excel VBA

3. Lägg till kombinationsrutorna (först till vänster, den andra till höger) och kommandoknappen. När detta har slutförts ska resultatet överensstämma med bilden av användarformen som visats tidigare. Skapa till exempel en kombinationsfältkontroll genom att klicka på ComboBox från Verktygslådan. Därefter kan du dra en kombinationsfält i användarformen.

4. Du kan ändra namn och bildtexter på kontrollerna. Namnen används i Excel VBA-koden. Bildtext är de som visas på din skärm. Det är bra att ändra namnen på kontrollerna, men det är inte nödvändigt här eftersom vi bara har några kontroller i det här exemplet. För att ändra bildtexten i användarformat och kommandoknappen, klicka på Visa, Egenskaper fönstret och klicka på varje kontroll.

5. För att visa användarformen, placera en kommandoknapp på ditt arbetsblad och lägg till följande kodrad:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Vi ska nu skapa Sub UserForm_Initialize. När du använder Visa-metoden för användarformuläret utförs denna del automatiskt.

6. Öppna Visual Basic Editor.

7. I Project Explorer högerklickar du på UserForm1 och klickar sedan på Visa kod.

8. Välj Användarformulär i den nedrullningsbara listrutan. Välj Initialize från den högra rullgardinsmenyn.

9. Lägg till följande kodlinjer:

Private Sub UserForm_Initialize()

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

End Sub

Förklaring: Dessa kodrader fyller i den första kombinationsrutan.

Vi har nu skapat den första delen av Userform. Även om det ser snyggt ut, kommer ingenting att hända ännu när vi väljer ett objekt från den första kombinationsrutan.

10. Dubbelklicka på UserForm1 i Project Explorer.

11. Dubbelklicka på den första kombinationsrutan.

12. Lägg till följande kodlinjer:

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

Förklaring: Excel VBA använder värdet av variabelindex för att testa varje efterföljande fallutdrag för att se med vilka föremål den andra kombinationsrutan ska fyllas. Gå igenom vårt Select Case-program för att lära dig mer om Select Case-strukturen.

13. Dubbelklicka på knappen Importera.

14. Lägg till följande kodrad:

Private Sub CommandButton1_Click()

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

End Sub

Resultat:

Beroende på kombinationsboxar i Excel VBA

Läs också: