Commandbutton toevoegen met vba code werkt niet als .caption wordt gebruikt

Status
Niet open voor verdere reacties.

matthiej88

Gebruiker
Lid geworden
21 jan 2010
Berichten
85
Hoi Allemaal,

Zoals de titel al aangeeft, een beetje een vage vraag. Ik ben bezig om een code te schrijven waarmee standaardrisico's opgeroepen kunnen worden. Omdat we nog bezig zijn met standaardiseren, laat ik vba zelf bepalen hoeveel standaardrisico's er zijn. Deze risico's staan in de sheet "Standaardrisico's". Via VBA ga ik op een bestaande userform (Dstandaard) commandbuttons toevoegen, evenveel als dat er standaardrisico's zijn. Daarna voeg ik met een code toe wat er moet gebeuren als er op de commandbutton geklikt wordt. (via .insertlines).

Op de 1 of andere manier gebeurd er alleen de eerste keer dat ik de userform gebruik wat als ik op de commandbuttons klik, alleen direct na het opstarten. Als ik via de functie .caption de naam wijzig, werkt hij helemaal niet.

Iemand enig idee waar dit aan kan liggen?

Onderstaand de code. Testbestand in de bijlage.

Code:
Private Sub UserForm_Initialize()
'instellen van de userform
Dim NewButton As MSForms.CommandButton
Dim Line As Long
Dim objForm As Object

'a = aantal standaardrisico's
'b = variabele voor de loop om door alle risico's te lopen

'bepalen hoeveel standaardrisico's er zijn
a = Mid(Sheets("Standaardrisico's").Range("B4000").End(xlUp).Offset(0, -1), 2, 100)

For b = 1 To a


'Me("Commandbutton" & b).Caption = Sheets("Standaardrisico's").Range("B" & (b + 1)).Value
Me("Commandbutton" & b).Visible = True
Me("Commandbutton" & b).Enabled = True

With ThisWorkbook.VBProject.VBComponents("DStandaard").CodeModule
    Line = .CountOfLines
    .InsertLines Line + 1, "Sub Commandbutton" & b & "_Click()"
    .InsertLines Line + 2, "Dstandaard.hide"
    .InsertLines Line + 3, "a = " & b & "+1"
    .InsertLines Line + 4, "Standaard"
    .InsertLines Line + 5, "End Sub"
End With

Next

End Sub

NB: Ik start de userform door in VBA op F5 te drukken
NB2: Ik heb nog geen code gevonden die de toegevoegde regels via .insertlines weer kan verwijderen. Dit moet handmatig gebeuren als de userform de tweede keer wordt gebruikt (anders krijg je dubbele codes)

Bekijk bijlage Test.xlsm
 
Wees slim: zet het maximaal aantal te verwachten opdrachtknoppen in je userform.
Laat VBA bij het laden (userform_Initialize) bepalen hoeveel daarvan zichtbaar/onzichtbaar moeten zijn.
Dat is veel eenvoudiger dan met VBA wijzigingen aanbrengen in het userform tijdens het gebruik van het userform.
 
Dat zou een alternatief kunnen zijn.

Toch staat het me niet aan dat dit niet werkt, zeker omdat het af en toe wel werkt. Daar moet toch gewoon een oplossing voor te vinden zijn?
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan