Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Klassenmodul - Frage an die VBA-Guru's...

Klassenmodul - Frage an die VBA-Guru's...
16.08.2004 22:19:54
Christoph
Wie ich einzelne Control-Types in einem eigenen Klassenmodul zusammenfasse, ist mir bekannt. Aber wie funktioniert das, wenn ich allen Controls einer Userform das gleiche Ereignis (im Beispiel das MouseDown-Ereignis) zuordnen will?
Der Code in meiner Beispiel-Datei läuft, aber Sinn und Zweck meiner Frage ist, zum einen die Code-Länge zu reduzieren, um beim Initialisieren der Userform nicht alle Controls X-mal (For Each Feld In Me.Controls) zu durchlaufen, und zum anderen die Anzahl der Public-Variablen zu minimieren.
Im konkreten Fall suche ich nach einer Lösung, dass egal wo auch immer auf die UserForm geklickt wird, das Mouse-Down-Ereignis aufgerufen wird, es sei denn, es handelt sich um Steuerelemente, die "*Field"* im Namen haben (dies sind in meiner Beispiel-Datei die beiden oberen Labels und Listboxes)
Alle bisherigen Versuche schlugen fehl und ich hoffe, sollte es hierzu eine Lösung geben, auf Hilfe
meine Bsp-Datei:
https://www.herber.de/bbs/user/9725.xls
schon mal vielen Dank vorab
Gruß
Christoph

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenmodul - Frage an die VBA-Guru's...
Piet
Abgesehen davon, dass es definitiv nicht geht, wäre die Ersparnis eher dürftig.
Piet
AW: Klassenmodul - Frage an die VBA-Guru's...
16.08.2004 23:19:09
Christoph
Hi Piet,
danke für deine Antwort, aber ...
soll ich das wirklich so verstehen, dass ich mit meinem Code schon am "Maximum des Machbaren" bin?
Was meinst du mit:
"wäre die Ersparnis eher dürftig"?
gibt es eine Möglichkeit, oder muss man wirklich alle Control-Types nach meiner umständlichen Art durchlaufen?
Gruß
Christoph
AW: Klassenmodul - Frage an die VBA-Guru's...
Piet
Stell dir die Frage, wieviele Codezeilen du effektiv sparen könntest.
Piet
AW: Klassenmodul - Frage an die VBA-Guru's...
16.08.2004 23:40:37
Christoph
Nun...
... ich hab auch bei einer meiner schon länger zuückliegenden Fragen hier Forum - wie man den Code für alle Controls eines Typs (zB. CommandButtons) zusammenfassen kann - , schon viel gelernt und setze das in meinem Bsp jetzt ein. Damals hieß es auch, dass man nicht viel Code-Zeilen sparen würde, aber ich weiß den Vorteil jetzt zu schätzen, da ich versuche, Aktionen dieser Art zu verallgemeinern.
Wenn du einen Weg kennst, wie man Controls verschiedenen Typs zusammenfassen kann, wäre ich dir um einen Tipp dankbar
Gruß
Christoph
Anzeige
AW: Klassenmodul - Frage an die VBA-Guru's...
Piet
"Wenn du einen Weg kennst, wie man Controls verschiedenen Typs zusammenfassen kann, wäre ich dir um einen Tipp dankbar"
Ich hatee bereits geantwortet, dass das nicht möglich ist. Auch die anderen Antworten mal überfliegen.
Piet
vielen Dank
17.08.2004 00:08:57
Christoph
Hi Piet,
vielen Dank für deine Hilfe...ich hab deine vorhergehenden Antworten mehr als nur überflogen. Dein Tipp, die Arrays nicht über "Redim Preserve" zu dimensionieren, hilft mir auf jeden Fall weiter und natürlich auch die Aussage, dass meine ursprüngliche Idee nicht umzusezten ist.
vielen Dank
Gruß
Christoph
AW: Klassenmodul - Frage an die VBA-Guru's...
Piet
Da du keine controls zur Laufzeit erzeugst, müssen die die Arrays nicht dynamisch sein.
Redim Preserve kostet...
Piet
Anzeige
AW: Klassenmodul - Frage an die VBA-Guru's...
16.08.2004 23:45:06
Philipp
Hallo Christoph
Kürzlich gab es eine ähnliche Anfrage in diesem Forum. Siehe hier:
https://www.herber.de/forum/archiv/460to464/t461628.htm
Die Vor- und Nachteile einer Lösung mittels Klassenmodul sind dort beschrieben.
Gruss
Philipp
Danke für den Link
17.08.2004 00:42:25
Christoph
Hallo Philipp
danke für den link,
die Idee, das ganze Prozedere über eine Funktion zu erschlagen, hatte ich auch schon...nur an der Umsetzung scheiterte ich, da ich keinen Ansatz gefunden hatte, ein bestimmtes Ereignis (MouseDown) in eine Funktion zu integrieren... das geht bestimmt aber... wie ich eben schon auf die Antwort von K.Rola geschrieben habe...ich bin kein Progarmmierer...und in bestimmten Fällen fehlt mir einfach diese Programmier-Logik
vielen Dank
Gruß
Christoph
Anzeige
AW: Klassenmodul - Frage an die VBA-Guru's...
K.Rola
Hallo,
Antworten hast du ja nun schon einige. Nur noch eine Anmerkung, Potenzial, den Code zu straffen gibts eigentlich immer, nur wie das in deinem konkreten Fall ist, weiß natürlich
niemand. Die Seligkeit hängt mit Sicherheit nicht davon ab, 5 verschiedene controls
in eine Klasse zu pressen.
Gruß K.Rola
AW: Klassenmodul - Frage an die VBA-Guru's...
17.08.2004 00:22:07
Christoph
Hi K.Rola,
ich weiß deine Beiträge immer sehr zu schätzen.
Ist es denn eher sinnvoll, für jeden Control-Type eine eigene Klasse zu erzeugen?
Ursprünglich hab ich das auch gemacht, und dann hab ich gemerkt, dass das auch innerhalb eines einzelnen Klassenmoduls zu erschlagen ist.
Mein Wissen bezüglich VBA und Programmierung im Allgemeinen kommt da an die Grenzen. (ich bin alles andere als ein gelernter Programmierer)
wie würdest du das machen?
viele Grüße
Christoph
Anzeige
AW: Klassenmodul - Frage an die VBA-Guru's...
K.Rola
Hallo,
kann sein, ich hab dich falsch verstanden. Du kannst schon alle controls in einem Klassenmodul abhandeln. Nur alle Ereignisse in eine Prozedur zu zwängen bringt effektiv nichts, zumal es ohnehin nicht geht.
Ich spare auch gern Code ein, wenn es geht, nur wie sooft im Leben, nicht alles was machbar ist, ist auch sinnvoll.
Mal zwei Beispiele aus der Praxis: Du kannst eine Prozedur mit ihrem Namen aufrufen
oder mit Call + Name. Ohne Call sparst du 5 Zeichen (incl. Leerzeichen), verbaust dir aber die Möglichkeit, später mit der Suchfunktion nach Call und somit allen Aufrufen zu suchen.
Gern werden benannte Argumente, wie xlAscending, xlCellTypeConstants usw. verwendet.
Bei größeren Projekten sind das Bremsen ^ 2, besser den Zahlenwert verwenden, wenn das auch bei der Entwicklung zunächst mal nach Mehrarbeit aussieht.
Nun, genug geschwafelt.
Gruß K.Rola
Anzeige
Vielen Dank
17.08.2004 01:42:27
Christoph
Hi K.Rola,
Merci für deine Antwort...zeigt es mir doch, dass ich mit meinen ursprünglichen Ansatz gar nicht so falsch liege...
Deine Argumentation bezüglich "Call " oder nicht "Call " hilft ebenso weiter, denn die von dir angesprochene Suchfunktion nutze ich zwar ständig, gleichzeitig habe ich dieses beim Erzeugen des Codes nicht bedacht.
vielen Dank
Gruß
Christoph

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige