Pagina's in dit artikel
-
Voorbereiding
-
Klassenmodule
-
Verbinden
-
Conclusie
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:
Option
Explicit
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:
Private
Sub mobtOption_Click()
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:
Option
Explicit
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:
Private
Sub mobtOption_Change()
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.