/ / Excel VBA-afhankelijke keuzelijsten met invoervak

Excel VBA-afhankelijke keuzelijsten met invoervak

Hieronder zullen we een programma bekijken in Excel VBA die een Userform maakt die bevat afhankelijke keuzelijsten met invoervak. Het Userform dat we gaan maken ziet er als volgt uit:

De gebruiker selecteert Dieren in een vervolgkeuzelijst. Als gevolg hiervan kan de gebruiker een dier selecteren uit een tweede vervolgkeuzelijst.

Afhankelijke keuzelijsten met invoervak ​​in Excel VBA

De gebruiker selecteert Sport in een vervolgkeuzelijst. Als gevolg hiervan kan de gebruiker een sport selecteren uit een tweede vervolgkeuzelijst.

Afhankelijke keuzelijsten met invoervak ​​in Excel VBA

Om dit gebruikersformulier aan te maken, voert u de volgende stappen uit.

1. Open de Visual Basic-editor. Als de Projectverkenner niet zichtbaar is, klikt u op Beeld, Projectverkenner.

2. Klik op Invoegen, Gebruikersformulier. Als de Toolbox niet automatisch verschijnt, klikt u op Beeld, Werkset. Uw scherm moet worden ingesteld zoals hieronder.

Gebruikersformulier Scherminstellingen in Excel VBA

3. Voeg de keuzelijsten toe (eerst aan de linkerkant, de tweede aan de rechterkant) en de opdrachtknop. Zodra dit is voltooid, moet het resultaat consistent zijn met de afbeelding van het eerder weergegeven gebruikersformulier. Maak bijvoorbeeld een keuzelijst met invoervak ​​door in de werkset op ComboBox te klikken. Vervolgens kunt u een keuzelijst met invoervak ​​op het gebruikersformulier slepen.

4. U kunt de namen en bijschriften van de bedieningselementen wijzigen. Namen worden gebruikt in de Excel VBA-code. Onderschriften zijn diegene die op je scherm verschijnen. Het is een goede gewoonte om de namen van de besturingselementen te wijzigen, maar dit is hier niet nodig, omdat we in dit voorbeeld slechts enkele besturingselementen gebruiken. Om het bijschrift van de Gebruikersvorm en de opdrachtknop te wijzigen, klikt u op Beeld, Eigenschappenvenster en klikt u op elk besturingselement.

5. Om het gebruikersformulier weer te geven, plaatst u een opdrachtknop op uw werkblad en voegt u de volgende coderegel toe:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

We gaan nu de Sub UserForm_Initialize maken. Wanneer u de methode Show voor het Userform gebruikt, wordt deze sub automatisch uitgevoerd.

6. Open de Visual Basic-editor.

7. Klik in de projectverkenner met de rechtermuisknop op UserForm1 en klik vervolgens op Code weergeven.

8. Kies Userform in de linker vervolgkeuzelijst. Kies Initialiseren in de vervolgkeuzelijst.

9. Voeg de volgende coderegels toe:

Private Sub UserForm_Initialize()

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

End Sub

Uitleg: Deze coderegels vullen de eerste keuzelijst met invoervak.

We hebben nu het eerste deel van het gebruikersformulier gemaakt. Hoewel het er al goed uitziet, zal er nog niets gebeuren als we een item uit de eerste keuzelijst selecteren.

10. Dubbelklik in de projectverkenner op UserForm1.

11. Dubbelklik op de eerste keuzelijst met invoervak.

12. Voeg de volgende coderegels toe:

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

Uitleg: Excel VBA gebruikt de waarde van de variabele index om elke volgende Case-opdracht te testen om te zien met welke items de tweede keuzelijst met invoervak ​​moet worden gevuld. Bekijk ons ​​Select Case-programma voor meer informatie over de Select Case-structuur.

13. Dubbelklik op de knop Importeren.

14. Voeg de volgende coderegel toe:

Private Sub CommandButton1_Click()

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

End Sub

Resultaat:

Afhankelijke keuzelijsten met invoervak ​​in Excel VBA

Lees ook: