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.
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
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