Avatar billede Jan Hansen Ekspert
20. juli 2017 - 16:35 Der er 1 kommentar og
1 løsning

Hvordan teste dynamisk antal Optionbuttons i Userform/Frame for klik?

del kode:
For ilCount = 1 To UBound(rBooket)
        Set oBnt(ilCount) = fFrame.Controls.Add("Forms.OptionButton.1", "OpB" & ilCount, True)
Next

Ønsker at ligge forskellig tekst over i tekstboks ved kilk

Jan
Avatar billede Sitestory Mester
25. juli 2017 - 15:51 #1
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.

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.
Avatar billede Jan Hansen Ekspert
26. juli 2017 - 07:20 #2
Tak det vil jeg se på!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester