Op formulieren in Excel en Word zijn standaard Selectievakjes (Checkbox), Keuzerondjes (Option button) of Wisselknoppen (Toggle button) beschikbaar om gebruikersvriendelijk eenvoudige keuzes te kunnen vastleggen (bijv. in- of uitgeschakeld). Het nadeel van Checkboxen en Keuzerondjes is dat ze niet groter of kleiner te maken zijn. Daardoor laat de leesbaarheid soms te wensen over. Een alternatief is om hiervoor een Switcher te gebruiken:
Voordeel van deze Switcher is dat de grootte eenvoudig aanpast kan worden en dat ook door middel van een kleur zichtbaar is welke keuze gemaakt is. Omdat op het formulier ook te zien is dat de switcher van links naar rechts beweegt of andersom, geeft dat een prettige gebruikservaring. De formulieren worden daardoor dynamischer. De Switcher is echter geen standaard formulierbesturingselement dat toegevoegd kan worden.
Basisopzet
Maar een Switcher besturingselement kan wel redelijk eenvoudig zelf gemaakt worden. Dit kan gedaan worden met behulp van een Groepsvak en Label besturingselement. Voeg daarvoor eerst een nieuw Groepsvak toe aan een formulier en geef deze een rode achtergrondkleur (bijv. &H006666FF&) en verwijder de Caption. Geef dit Groepsvak de naam frSwitcher1. Stel de breedte van dit groepsvak in op 66 en de hoogte op 33.
Plaats vervolgens in het Groepsvak een Bijschrijft en geef die bijschrift een witte achtergrondkleur. Zorg ervoor dat het bijschrift geen tekst bevat. Geef het Bijschrijft de naam lblSwitcher1. Zet bij Left en Top de waarde 4 en stel de breedte en hoogte in op 22.
Op dezelfde manier kunnen desgewenst meerdere switchers toegevoegd worden, waarbij telkens de het laatste nummer van de benaming opgehoogd moet worden (frSwitcher2 en lblSwitcher2, enz.).
Voeg daarna de volgende code toe aan het formulier. Deze code gaat uit van de aanwezigheid van 2 switchers op het formulier.
'------------------------------------------------------------------------------------------------------------------------------
' Auteur : Manfred van den Noort
' Copyright : © 2022-2026 worksheetsvba.com, alle rechten voorbehouden
' Datum : 2026-08-14
' Versie : 5.0
' Doel : Switcher besturingselement
'
' Het is toegestaan om de code in deze (klassen)module te gebruiken, aan te passen en/of te verspreiden in uw eigen projecten,
' mits deze koptekstsectie geheel intact blijft.
' U mag de code van deze (klassen)module niet publiceren op bijvoorbeeld een website, zonder expliciete toestemming van de auteur.
'------------------------------------------------------------------------------------------------------------------------------
Private bMoveInAction As Boolean
Private Sub frSwitcher1_Click()
MoveSwitcher 1
End Sub
Private Sub lblSwitcher1_Click()
MoveSwitcher 1
End Sub
Private Sub frSwitcher2_Click()
MoveSwitcher 2
End Sub
Private Sub lblSwitcher2_Click()
MoveSwitcher 2
End Sub
Private Sub MoveSwitcher(iSeqNo As Integer)
Dim i As Integer, sngTimer As Single, iLeftStep As Integer, frSwitcher As MSForms.Frame, lblSwitcher As MSForms.Label
If bMoveInAction Then Exit Sub
bMoveInAction = True
Set frSwitcher = Controls("frSwitcher" & iSeqNo)
Set lblSwitcher = Controls("lblSwitcher" & iSeqNo)
If frSwitcher.Tag = False Then
iLeftStep = 1
Else
iLeftStep = -1
End If
For i = 1 To 32
sngTimer = Timer
Do While Timer - sngTimer < 0.005
Loop
lblSwitcher.Move lblSwitcher.Left + iLeftStep
DoEvents
Next
With frSwitcher
.Tag = Not CBool(.Tag)
.BackColor = IIf(.Tag, &HFF00&, &H6666FF)
End With
bMoveInAction = False
End Sub
Onderstaand is een voorbeeldbestand te downloaden waarin dit voorbeeld van een Switcher te zien is.
Geavanceerd
Aan de voorbeeldbestand is ook een geavanceerde versie van de Switcher toegevoegd. Met deze versie kun je Switchers toevoegen waarbij je zelf de grootte kunt bepalen. Deze afmeting wordt bepaald door het afmeting van het Groepsvak dat op een formulier geplaatst wordt. Van dit groepsvak wordt vervolgens een Switcher-object gemaakt met behulp van een klasse, waarna deze klasse de Switcher verder instelt en de gebeurtenissen afhandelt.
Bij deze Switcher moet je klikken op het vak waarnaartoe de Switcher moet bewegen.
Met deze versie kan de Switcher ook met het toetsenbord bediend worden. Met de Tab-toets kan de focus verplaatst worden en met spatiebalk en Enter-toets kan de actieve Switcher bediend worden.
De standaardwaarde waarmee deze Switcher opstart is False, maar met de eigenschap UndefinedValue kan ingesteld worden dat de gebruiker eerst altijd een keuze moet maken.
Als de gebruiker dat niet doet, volgt een foutmelding als de Value van deze Switcher wordt opgevraagd.
Met de muis kan de gebruiker de UndefinedValue verwijderen door aan de kant te klikken, waarnaartoe de Switcher moet bewegen. Bij toetsenbord bediening wordt dan altijd eerst de Switcher op False ingesteld.
Met de eigenschap RightToLeft kan ingesteld worden of de Switcher van links naar rechts moet bewegen om van False naar True te gaan of andersom. Van links naar rechts is het standaard gedrag. Door RighttoLeft op True in te stellen kan dat gedrag omgedraaid worden.
Dit object bevat daarnaast nog drie andere instelbare eigenschappen (Value, Visible en Enabled) en een Change gebeurtenis.
Vragen / suggesties
Hopelijk heeft dit artikel geholpen bij het maken van een Switcher besturingslement op een VBA formulier. Als er verdere vragen over dit onderwerp zijn of suggesties voor verbetering, plaats dan een reactie hieronder.