Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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

Klassenprogrammierung

Klassenprogrammierung
12.03.2021 17:31:29
Tino
Hallo,
versuche gerade ein Projekt mittels Klassenprogrammierung durchzuführen.
Im Beispiel ist ein Frame in diesen sind mehrere Buttons.
Die Deklarierung sollte überwiegend in der Klasse stattfinden um später
beim Übertrag in ein anderes Projekt so wenig wie möglich Anpassungen durchgeführt zu müssen.
Also Klassen ins neue Projekt kopieren und dieses Frame samt Inhalt kopieren fertig.
Daher wollte ich auf ein zusätzliches allgemeines Modul verzichten.
Nun mein Problem bei der Deklarierung von Objekten innerhalb der Klassen ist,
dass diese immer wieder verloren gehen.
Wahrscheinlich weil bei der Zuweisung
Set cButton(i).BClick = .Controls("Button" & i)
Die Klasse immer wieder neu initialisiert wird, gehen die zuvor zugewiesenen wieder verloren.
Wie kann ich es also erreichen das der zugewiesenen Button oder Frame erhalten bleiben?
Vorrausetzung ist die Deklarierung sollte innerhalb der Klasse bleiben!
https://www.herber.de/bbs/user/144715.xlsm
Danke schon mal für eure Hilfestellung!
Gruß Tino

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

Betreff
Datum
Anwender
Anzeige
AW: Klassenprogrammierung
12.03.2021 18:08:53
Nepumuk
Nochmal Hallo Tino,
die Kapselung der Klasse stimmt noch nicht. In clsCommandButton:
Option Explicit

Private WithEvents mobjCommandButton As MSForms.CommandButton

Private Sub Class_Terminate()
    Set CommandButton = Nothing
End Sub

Private Sub mobjCommandButton_Click()
    Call MsgBox(CommandButton.Caption)
End Sub

Friend Property Get CommandButton() As MSForms.CommandButton
    Set CommandButton = mobjCommandButton
End Property

Friend Property Set CommandButton(ByRef probjCommandButton As MSForms.CommandButton)
    Set mobjCommandButton = probjCommandButton
End Property

Jetzt darfst du fragen. :-)
Gruß
Nepumuk

Anzeige
AW: Klassenprogrammierung
12.03.2021 19:04:53
Tino
Hallo,
jetzt habe ich mir alles durch den Kopf gehen lassen!
Passt so leider nicht, da ich die Collection der Buttons so nur in er Userform zu Verfügung haben.
Später sollen die Buttons gegenseitig in der Klasse beeinflusst werden,
aber dort habe ich diese ja nicht zur Verfügung.
Soll zum Schluss so etwas wie ein Control werden,
es soll halt so viel wie möglich in die Klasse und nicht auf der UserForm stattfinden damit der Übertrag in andere Projekte leichter und schneller geht.
Also wenn ich Button1 drücke soll der Button41 eine bestimmte Beschriftung bekommen,
die Klasse kennt aber dann nur den gedrückten Button und nicht den anderen.
Müsste dann wieder mit .Parent.Controls("Button...") mir den anderen Button greifen und
dies wollte ich vermeiden wenn ich diesen in einer Objekt-Variable speichern kann.
Oder übersehe ich da noch etwas?
Gruß Tino

Anzeige
AW: Klassenprogrammierung
12.03.2021 19:12:33
Nepumuk
Hallo Tino,
dann übergib die Collection zusätzlich an die Klasse. Damit hast du in jeder Instanz Zugriff auf die anderen Instanzen.
Gruß
Nepumuk

AW: Klassenprogrammierung
12.03.2021 19:34:02
Tino
Hallo,
das ist eine gute Idee!
Were weiter versuchen ==> Danke Dir!
Gruß Tino

AW: Klassenprogrammierung
12.03.2021 18:20:20
Tino
Hallo,
danke so funktioniert das!
Ist zwar nicht so ganz was ich mir vorgestellt habe,
wegen dem Initialierungsprozess und der vielen Code-Zeilen in der UserForm.
Dann funtioniert mein copy/paste vorhaben nicht so ganz.
Aber was wil man machen, ist halt kein Wunschkonzert!
Gruß Tino

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige