Menu Sluiten

Het Gebruik van ComboBoxen in UserForms

Combobox userform vba excel

Als je al bekend bent met de basis van UserForms in Excel, wil je misschien je kennis uitbreiden naar specifieke bedieningselementen. Een daarvan is de ComboBox. Weet je niet zeker wat dat is of hoe je het moet gebruiken? Geen zorgen, we hebben het hier allemaal gedekt! In dit artikel gaan we in eenvoudige taal uitleggen hoe je ComboBoxen in UserForms kunt gebruiken.

Wat is een ComboBox?

Een ComboBox, ook wel bekend als een drop-down box, is een besturingselement dat je kunt gebruiken in je UserForms in Excel. Stel je een doos voor waarin je kunt klikken, en dan komt er een lijst met opties tevoorschijn. Dat is in feite een ComboBox. Het is handig als je wilt dat de gebruiker een optie kiest uit een vooraf gedefinieerde lijst.

Stap 1: Toevoegen van een ComboBox aan je UserForm

Laten we beginnen met het toevoegen van een ComboBox aan je UserForm.

  1. Open je UserForm in de VBA-editor (druk op Alt + F11 in Excel).
  2. Selecteer de ComboBox in de Werkset (het ziet eruit als een vierkant met een pijl naar beneden).
  3. Teken de ComboBox op je UserForm.

Nu heb je een ComboBox op je UserForm. Maar er is een probleem: er staan geen opties in!

Stap 2: Opties toevoegen aan je ComboBox

Laten we enkele opties aan de ComboBox toevoegen. We doen dit door code toe te voegen aan het UserForm.

  1. Dubbelklik op een leeg deel van het UserForm (niet op de ComboBox) om de code-editor te openen.
  2. In de code-editor, type het volgende:
Private Sub UserForm_Initialize()
    ComboBox1.AddItem "Optie 1"
    ComboBox1.AddItem "Optie 2"
    ComboBox1.AddItem "Optie 3"
End Sub

Dit voegt drie opties toe aan de ComboBox: “Optie 1”, “Optie 2” en “Optie 3”. Je kunt zoveel opties toevoegen als je wilt door de regel ‘ComboBox1.AddItem’ te kopiëren en te plakken en de tekst tussen de aanhalingstekens te wijzigen.

Stap 3: Interactie met de ComboBox

Nu je opties in je ComboBox hebt, wil je waarschijnlijk iets doen met de optie die de gebruiker kiest. Laten we een bericht laten verschijnen dat de gekozen optie toont wanneer de gebruiker een optie kiest.

  1. Dubbelklik op de ComboBox om de code-editor te openen.
  2. In de code-editor, type:
Private Sub ComboBox1_Change()
    MsgBox "Je hebt gekozen: " & ComboBox1.Value
End Sub

Stap 4: Het testen van je ComboBox

Druk op F5 in de VBA-editor om je UserForm te openen en je ComboBox te testen. Klik op de ComboBox, kies een optie en kijk of het bericht verschijnt.

Dynamisch toevoegen van opties aan je ComboBox

In het vorige gedeelte hebben we de ComboBox handmatig gevuld met opties. Maar stel dat je de opties uit een bereik in je Excel-werkblad wilt halen? Dit is hoe je dat doet:

  1. Stel dat je een lijst met opties in kolom A van ‘Werkblad1’ hebt. Je wilt deze opties in je ComboBox.
  2. In je UserForm-code, vervang je de vorige ‘UserForm_Initialize’ procedure door:
Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    Set ws = ThisWorkbook.Sheets("Werkblad1")
    Set rng = ws.Range("A1:A10") 'Als je invoer in cellen A1 tot A10 staan.
    
    For Each cell In rng
        ComboBox1.AddItem cell.Value
    Next cell
End Sub

Deze code loopt door elke cel in het bereik dat je hebt gedefinieerd (A1 tot A10 in dit voorbeeld) en voegt de waarde van elke cel toe als een optie in de ComboBox.

Dubbele waarden voorkomen in je Combobox

Laten we bij het vorige voorbeeld ervan uitgaan dat je alleen unieke waarden wilt opnemen in je combobox. Je kunt dit op meerdere manieren bereiken. Je zou ervoor kunnen kiezen om de range.find functie te gebruiken. Je kijkt dan eerst naar de range die de loop al gepasseerd is of de op te nemen waarde daarin voorkomt. 

Je kunt er ook voor kiezen om door alle items in de combobox heen te loopen of de op te nemen waarde matched met 1 van de items. Dit doe je als volgt:

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    Set ws = ThisWorkbook.Sheets("blad1")
    Set rng = ws.Range("A1:A100")
    
    For Each cell In rng
            For i = o To ComboBox1.ListCount - 1
                If ComboBox1.List(i) = cell.Value Then
                    GoTo skipInvoer
                End If
            Next i
            ComboBox1.AddItem cell.Value
skipInvoer:
    Next cell
End Sub

Reageren op de geselecteerde optie

In het vorige gedeelte, hebben we een bericht weergegeven wanneer de gebruiker een optie kiest. Maar wat als je iets anders wilt doen, afhankelijk van de gekozen optie? Dit is hoe je dat doet:

  1. In de code-editor, vervang je de ‘ComboBox1_Change’ procedure door:
Private Sub ComboBox1_Change()
    Select Case ComboBox1.Value
        Case "Optie 1"
            MsgBox "Je hebt Optie 1 gekozen!"
        Case "Optie 2"
            MsgBox "Je hebt Optie 2 gekozen!"
        Case "Optie 3"
            MsgBox "Je hebt Optie 3 gekozen!"
        Case Else
            MsgBox "Ik weet niet welke optie je hebt gekozen!"
    End Select
End Sub

Met deze code wordt er iets anders gedaan, afhankelijk van welke optie de gebruiker kiest. Druk nogmaals op F5 in de VBA-editor om je UserForm te openen en je verbeterde ComboBox te testen. Kijk of de opties uit je werkblad in de ComboBox verschijnen en of het juiste bericht verschijnt wanneer je een optie kiest.

Als je deze stappen hebt gevolgd, zou je nu een goede greep moeten hebben op hoe je een ComboBox in een UserForm kunt gebruiken. Dit is nog maar het begin! Er zijn nog veel meer coole dingen die je kunt doen met ComboBoxen, zoals het combineren van verschillende ComboBoxen, het filteren van opties, enzovoort. Blijf experimenteren en leren, en voor je het weet ben je een expert in ComboBoxen in UserForms!

Heeft dit artikel je geholpen?

3 reacties

  1. Pingback:De Basis van UserForms in Excel -

  2. Willem

    Hoewel de dynamische vulmogelijkheid van een combobox goed te volgen is zoek ik de mogelijkheid om bij meerdere gelijke gegevens slechts een keer de value uit de excelkolom te vinden. Met ander woorden: geen dubbele gegevens.

    • MartinR

      Hoi Willem,

      Bedankt voor je reactie. Ik heb een stuk toegevoegd aan het artikel waarin ik dit toegelicht hebt. Ik denk dat je daarmee wel uit de voeten kunt. Mocht dit niet zo zijn, laat het mij weten!

      Groetjes Martin

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *