Events van besturingselementen op een werkblad verwerken middels een klassenmodule.
Pagina's in dit artikel
De klassenmodule maken
Eerst dient een klassenmodule te worden ingevoegd:
Figuur 2: Menu om een klassenmodule in te voegen
Verander de naam van de klassenmodule in het venster eigenschappen:
Figuur 3: Het venster eigenschappen met de nieuwe naam van de
klassenmodule
Typ deze regels in het code venster:
Private WithEvents mobtOption As MSForms.OptionButton
Hierna zal "mobtOption" beschikbaar zijn in de linker keuzelijst bovenaan het codevenster:
Figuur 4: Keuzelijst bevat nieuw element voor de klassenmodule
Wanneer deze wordt geselecteerd, dan zal de code voor het het standaard klik event in de module worden geplaatst:
End Sub
Door nu op de rechter keuzelijst te klikken wordt de lijst met beschikbare events voor dit type besturingselement in de klassenmodule getoond:
Figuur 5: Events beschikbaar voor een keuzerondje bij gebruik van een
klassenmodule
Merk op, dat het aantal beschikbare events minder is dan wanneer gebruik wordt gemaakt van de codemodule achter het werkblad:
Figuur 6: Events voor elementen beschikbaar via de codemodule achter het
werkblad
Om precies te zijn ontbreekt in dit geval het LostFocus event. Bij andere elementen kunnen meer (en andere) events ontbreken.
Selecteer het Change event in de keuzelijst en verwijder het klik event. Er zou nu zoiets als dit moeten staan:
Private WithEvents mobtOption As MSForms.OptionButton
Private Sub mobtOption_Change()
End Sub
Zoals eerder gezegd, het is de bedoeling dat de kleur van het geselecteerde element verandert en natuurlijk ook die van het ge-deselecteerde element. Ook was het de bedoeling een berichtje te krijgen over welk element geselecteerd is. Hiertoe is de volgende programmacode geschreven:
If mobtOption.Value = 0 Then
mobtOption.Object.BackColor = RGB(0, 255, 0)
Else
MsgBox "You have selected " & mobtOption.Caption & " from " & mobtOption.GroupName
mobtOption.Object.BackColor = RGB(255, 0, 0)
End If
End Sub
Wanneer nu op een keuzerondje wordt geklikt om het te selecteren, dan wordt zowel het change event getriggert van het rondje dat is aangeklikt, als het change event van het keuzerondje dat geselecteerd was. Het change event wordt dus tweemaal uitgevoerd, éénmaal voor het geselecteerde rondje en éénmaal voor het ge-deselecteerde rondje. Het eerste zal dus een waarde van 1 kennen en het tweede een waarde 0.