Ich erstelle gerade für ein Projekt eine "User form" welche
entsprechend der Situation angepaßt wird.
In diese "Userform" werden während der Laufzeit, mit
".Controls.Add("Forms.CheckBox.1,NAME)" Checkboxen eingefügt.
Ich möchte dann den Checkboxen eine Ereignisprozedur, "bei Click"
hinzufügen.
Ist das überhaupt möglich und wenn ja wie?
Mit ".OnAction" geht es leider nicht, außer ich mache dabei einen
Fehler mit dem Prozedurnamen.
Tschau Norbert
set chkWithEvents = chkAufForm
eine Beziehung zwischen tatsaechlicher und "virtueller" Checkbox hergestellt
wird und somit der Click auf die tatsaechliche an den "Click" der virtuellen
weitergeleitet wird.
--
Mit freundlichen Grüßen
Eckehard Pfeifer
www.dr-e-pfeifer.de
Ein Blick lohnt sich immer: www.vba-magazin.de
Hallo, erst einmal Danke für die schnelle Antwort.
>Hallo, Du kannst in einem Klassenmodul Checkboxen mit WithEvents
>vereinbaren, dann hast Du deren Clickereignis. Nun musst Du nur noch dafuer
>sorgen, dass durch
Ich muß gestehen, ich habe von Klassenmodulen absolut keine Ahnung.
Könntest du bitte so freundlich sein und mir ein kleines
Programmbeispiel geben, oder einen Link wo dies erklärt wird.
Ich habe schon selbst gesucht aber nichts vernünftigs gefunden.
Besten Dank
Norbert
Public chkBox As msforms.CheckBox
Public WithEvents chk As msforms.CheckBox
Private Sub chk_Click()
MsgBox "so gehts"
End Sub
Private Sub UserForm_Click()
If chkBox Is Nothing Then
Set chkBox = Me.Controls.Add("Forms.Checkbox.1")
Set chk = chkBox
End If
End Sub
Ein Klassenmodul brauchst Du hier nicht unbedingt, da das Formular bereits
eins ist.
Wenn Du es mit einem neuen Klassenmodul machen willst (Klasse1) so schreibst
Du ins Formular
Public cls As Klasse1
Public chkBox As msforms.CheckBox
Private Sub UserForm_Click()
If cls Is Nothing Then
Set cls = New Klasse1
End If
If chkBox Is Nothing Then
Set chkBox = Me.Controls.Add("Forms.Checkbox.1")
Set cls.chk = chkBox
End If
End Sub
und ins Klassenmodul
Public WithEvents chk As msforms.CheckBox
Private Sub chk_Click()
MsgBox "so gehts"
End Sub
Tja, wo stehts? Ich weiss es nicht. Es ist die Adaption der Ausfuehrungen
unter "Automatisierung des Application-Objekts".
Aber jetzt zu deiner Antwort:
Du hast recht es geht wirklich :-)
Mein Ansatz war praktisch gleich, denn ich hatte das auch so, aus
deiner ersten Antwort herausgelesen.
Mein Fehler war, das ich
"Public WithEvents chk As CheckBox"
geschrieben habe.
Also nur "CheckBox" anstelle von "msforms.CheckBox" beim Variablentye
Das führt zur Fehlermeldung:
"Fehler beim Kompilieren: Das Objekt löst keine
Automatisierungsereignisse aus"
Also nochmals vielen Dank
Tschau Norbert