Da antallet af optionbuttons er dynamisk, kan du vanskeligt have en prædefineret Click-event for hver, og en løsning er derfor at tilføje hver ny Optionbutton (som klasse) til en collection og samtidig have et klassemodul, hvor du deklarerer:
Public WithEvents VariabelNavn As MSForms.OptionButton
I klassen skal du så have en procedure, som handler, når brugeren klikker på en af de Optionbuttons, du har indsat dynamisk, og som er i din collection:
Private Sub VariabelNavn_click()
'Aktion: Skriv et eller andet til en textbox afhængigt af, hvilken Optionbutton der er klikket på.
End Sub
Til at holde styr på, hvilken af dine optionbuttons der er klikket på, kan du fx give hver optionbutton en unik Tag, når du laver den.
Så er det ligegyldigt, hvor mange optionbuttons du indsætter, de vil ligge i din collection, og klassen vil tage hånd om, hvad der skal ske, når brugeren gør noget ved en af dem.
På
http://sitestory.dk/excel_vba/kalender.htm er der et eksempel, blot med Labels i stedet for optionbuttons, og på
http://sitestory.dk/excel_vba/textbox.htm er der et eksempel med tekstbokse.
Om det er den ene eller anden Control gør ikke den store forskel - det afgørende er at føje kontrolelementerne til en collection som klasser, og så bruge klassen (med Public WithEvents...) til at lave arbejdet.
I eksemplerne føjes kontrolelementerne til en collection i Userformens Initialize procedure, men det kan gøres når som helst.