Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klick-Event in Klassenmodul

Klick-Event in Klassenmodul
15.08.2016 09:22:20
Martin
In einem Klassenmodul wird dynamisch ein Button erzeugt. Das Klick-Ereignis auf den Button soll in der Klasse bearbeitet werden. Das funktioniert leider nicht. Folgendes habe ich probiert:
Ich habe eine Userform mit einem Frame Frame1. Beim Initialisieren wird die Methode AddIntoFrame aus meiner Klasse CTimePicker aufgerufen, die in Frame1 einen Button einfügt:
Option Explicit
Private Sub UserForm_Initialize()
Dim TP As New CTimePicker
TP.AddIntoFrame Me.Frame1
End Sub

Die Klasse sieht so aus:
Option Explicit
Private WithEvents B As MSForms.CommandButton
Public Sub AddIntoFrame(ByVal F As MSForms.Frame)
Set B = F.Controls.Add("Forms.CommandButton.1", "cmd1")
B.Caption = "Taste B"
End Sub
Private Sub B_Click()
MsgBox B.Caption & " was pressed!"
End Sub

Die Methode AddIntoFrame fügt wie gewünscht einen Button B in den als Parameter übergebenen Frame F ein. Klickt man auf den Button, sollte B_Click ausgeführt werden. Das klappt leider nicht, obwohl B als WithEvents deklariert ist. Wo liegt der Fehler?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klick-Event in Klassenmodul
15.08.2016 09:29:30
Hajo_Zi
die CommandButton werden nicht in der Klasse erstellet sondern in der UserForm, oder sehe ich das falsch?
Die Klasse macht die Verarbeitung der Aktionen, oder sehe ich das auch falsch?

AW: Klick-Event in Klassenmodul
15.08.2016 09:49:22
Nepumuk
Hallo,
du musst im Userform eine Instanz der Klasse erstellen und den Commandbutton zuweisen. Dein Ansatz ist daher falsch.
Gruß
Nepumuk
AW: Klick-Event in Klassenmodul
15.08.2016 14:18:09
snb
Und das alles scheint mir viel zu kompliziert für eine einfache Aufgabe.
AW: Klick-Event in Klassenmodul
15.08.2016 14:21:07
Martin
Richtig. Es gibt eine Userform, darin ein Frame. Die Methode im Klassenmodul erhält als Parameter den Frame und schreibt dort dynamisch einen Button rein (in der finalen Anwendung natürlich mehr). Das Klick-Ereignis auf dem Button soll im Klassenmodul verarbeitet werden.
Hintergrund: Es gab füher in Excel standardmäßig die Klasse "DateTimePicker". Die hat in einem Rahmen in einer userform einen Kalender reingeschrieben (31 Tasten) und die Klicks verarbeitet. Ähnlich soll meine Anwendung laufen: Die Klasse schreibt in einen Rahmen der Userform Tasten und reagiert auf deren Klick.
Anzeige
AW: Klick-Event in Klassenmodul
15.08.2016 14:30:13
Planlos
Hallo
eigentlich haste es ja schon, nur musst du deine Klasse in der Userform auch am Leben erhalten, denn so wie jetzt wird sie ja am Ende von UserForm_Initialize() wieder zerstört.
Option Explicit
Private TP As CTimePicker

Private Sub UserForm_Initialize()
Set tp = new CTimePicker
TP.AddIntoFrame Me.Frame1
End Sub

AW: Klick-Event in Klassenmodul
15.08.2016 16:42:14
Martin
Ganz herzlichen Dank an "Planlos". Genau das war das Problem, dass die Deklaration der Klasse natürlich außerhalb der Init-Prozedur erfolgen muss, damit sie später für den Event noch vorhanden ist. Vollkommen logisch und leicht zu fixen. Problem gelöst.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige