25.07.2016, 16:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016, 16:17 von VBATartar.)
Hallo meine VBA Helden,
ich habe auf meiner Userform 2 (nichtdynamische) CommandButtons. Den ersten Button habe ich so programmiert, dass dieser eine weitere Schaltfläche mit einem kleinen Text dynamisch erzeugt und auf die Userform bringt. Das klappt perfekt.
Für den zweiten CommandButton suche ich nun den passenden Code, um die soeben dynamisch erzeugte Schaltfläche wieder löschen zu können. Das klappt überhaupt nicht.
Userform:
Code:
Option Explicit Dim Befehle(200) As New clsElemente
Private Sub ErzeugeButton_Click() Dim i As Integer i = 200 Dim objVar As MSForms.CommandButton Set objVar = Me.Controls.Add("Forms.CommandButton.1", "" & i, True)
With objVar .Width = 230 .Height = 30 .Left = 300 .Top = 50 .Caption = "Hallo, ich wurde gerade dynamisch erzeugt. Klick mich!" End With
Set Befehle(200).Knöpfe = objVar End Sub Private Sub LöscheButton_Click() 'Wie löscht man den gerade erzeugten Button ??
End Sub
Private Sub UserForm_Initialize() Application.WindowState = xlMaximized With Me .Height = Application.Height .Width = Application.Width .BackColor = &H80000014 End With End Sub
Klasse:
Code:
Option Explicit Public WithEvents Knöpfe As MSForms.CommandButton Private Sub Knöpfe_Click() Knöpfe.BackColor = vbRed Knöpfe.Font.Bold = True Knöpfe.Caption = "Du hast gedrückt. Ich bin ganz rot geworden!" Knöpfe.AutoSize = True End Sub
26.07.2016, 12:45 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2016, 12:47 von VBATartar.)
Hallo Uwe,
danke für deine mehr als wertvolle Hilfe. Aber, wie das so ist im Leben, ich habe wieder ein neues Problem mit dem Code. Ich habe meine Userform mal etwas weiterentwickelt und noch ein paar dynamisch erzeugte Schaltflächen draufgepackt. Alle dynamischen Schaltflächen rufen in meiner Klasse die Prozedur Private Sub Knöpfe_Click auf (s. Code unten). Mein Problem ist jetzt die einzelnen Schaltflächen sollen in dieser Prozedur unterschiedliche Ereignisse auslösen. Dazu muss ich in dieser Prozedur Knöpfe_Click() unbedingt wissen, von welcher dynamischen Schaltfläche es aufgerufen wurde. Wie lautet der Code anhand dessen ich diese Unterscheidung treffen kann? Der besseren Übersicht halber, habe ich nochmal ein Attachment beigefügt. Ich hoffe ihr könnt mir helfen. Die Sache ist mir extrem wichtig. Danke.
Code:
Option Explicit Public WithEvents Knöpfe As MSForms.CommandButton Private Sub Knöpfe_Click()
'!!! Wichtig !!! 'Problem: Von welcher Schaltfläche stammt der Aufruf für diese Routine? ' Unterschiedliche Schaltflächen sollen unterschiedliche Aktionen in dieser Prozedur aufrufen
Knöpfe.BackColor = vbRed Knöpfe.Font.Bold = True Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz rot geworden!" Knöpfe.AutoSize = True End Sub