Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Zugriff auf dynamisch erzeugte Schaltflächen

835 views
Skip to first unread message

Andreas Seidenspinner

unread,
Oct 9, 2002, 2:36:02 PM10/9/02
to
Hallo NG

Ich habe mittels VBA-Code - auf einer leeren Userform- dynamisch
CommandButtons erstellen lassen. Soweit hat alles wunderbar funktioniert.
Die Schaltflächen habe ich per Schleife als CommandButton1, -2,..usw.
benannt.(cmdXX.name=)

Nun kommt mein Problem. Ich möchte nun( zur Laufzeit der Userform) , auf die
dynamischen CommandButtons zugreifen, bzw. Klicks auf die entsprechenden
Schaltflächen auswerten. (Es soll dann weiterer Code ausgeführt werden).

Mir ist kein Ereignis bekannt mit dem dies möglich wäre . Habe auch schon
ausprobiert eine "Sub CommanButton1_Click " einzufügen, in der Hofnung das
duch das Anklicken der 1. Schaltfläche etwas passiert . Aus VB weis ich,
dass man Steuerelement mit gleichen Namen , aber jeweils anderem Index
vergeben kann. In Excel(VBA) "mault" aber bei diesem Versuch.


Frank Arendt-Theilen

unread,
Oct 9, 2002, 5:25:08 PM10/9/02
to
Hallo Andreas,
hier ein komplettes Beispiel:

Sub DynamischeUserformErstellen()
Dim frmUserform As Object
'Verweis auf Microsoft Forms 2.0 Object Library setzen
Dim ctrlButton As MSForms.CommandButton
Dim intLine As Integer
Set frmUserform = _
Application.VBE.ActiveVBProject.VBComponents.Add(3)

With frmUserform
.Properties("Caption") = "Dynamische Userform"
.Properties(50) = 0 'StartUpPosition: 0 = manuell
.Properties("Left") = 100
.Properties(41) = 200 'Top
.Properties("Width") = 120
.Properties("Height") = 80
End With

'ComandButton hinzufügen
Set ctrlButton = _
frmUserform.Designer.Controls.Add("Forms.CommandButton.1")

With ctrlButton
.Caption = "Klick mich"
.Top = 18
.Left = 20
End With

'Klick-Ereignis für CommandButton hinzufügen
With frmUserform.CodeModule
intLine = .CountOfLines
.InsertLines intLine + 1, "Sub CommandButton1_Click"
.InsertLines intLine + 2, " MsgBox ""Frank Arendt-Theilen"""
.InsertLines intLine + 3, " Unload Me"
.InsertLines intLine + 4, "End Sub"
End With

'Userform anzeigen
VBA.UserForms.Add(frmUserform.Name).Show

'Userform löschen
With Application.VBE.ActiveVBProject
.VBComponents.Remove .VBComponents(frmUserform.Name)
End With

End Sub

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
eMail: Thei...@t-online.de, Homepage: http://www.xl-faq.de

0 new messages