Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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
VBA : dynamische Erweiterung Userform
25.03.2023 13:37:45
Joschi Witchcraft

Hallo Excel-Freunde.

Ich habe - erfolglos - versucht, dynamisch eine Userform um jeweils einen Option-Button und einen Command-Button zu erweitern, Zwar ist meine Init-Routine ohne Probleme durchgelaufen, aber mir wird der zusätzliche Option-Button nicht angezeigt. Der zusätzliche Command-Button wird zwar angezeigt, aber ein Klick auf ihn bleibt ohne Reaktion.

Meine Excel-Mappe: https://www.herber.de/bbs/user/158433.xlsm

Wer kann mir sagen, wo meine Fehler versteckt sind?

Ich möchte nicht für mehrere Dinge immer eine neue Userform erstellen müssen, sondern versuche, mit einer Basis-Userform und dynamischen Änderungen zum Ziel zu gelangen. Ich hoffe, dass dies grundsätzlich möglich ist.

Gruß Joschi

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 13:53:38
ralf_b
wahrscheinlich wirst du das nicht lesen wollen, aber "Lass die Finger davon".
du mußt auch die Events (klick usw.) programmieren. Und das wird schnell unübersichtlich.
versteh da als gut gemeinten Rat.



AW: VBA : dynamische Erweiterung Userform
25.03.2023 14:06:04
onur
Wieder mein üblicher Spruch: Wieso glauben immer nur Anfänger, sie müssen unbedingt Code oder Steuerelemente während der Laufzeit (durch Code) manipulieren, obwohl "Profis" wissen, dass es zu kompliziert und, weitaus wichtiger, fast immer Schwachsinn wäre ???
Es kommt mir immer vor, als ob ein Sanitätshelfer unbedingt Genmanipulationen erforschen möchte.


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 14:19:11
Alwin WeisAngler
Hallo,

ich will doch mal helfen:
schau mal rein, dann siehst du warum nichts sichtbar ist.
https://www.herber.de/bbs/user/158435.xlsm
Gruß Uwe


AW: VBA : dynamische Erweiterung Userform
25.03.2023 14:20:59
volti
Hallo Joschi,

bessere Alternative ist m.E., alle gewünschten Steuerelemente beim Designen der UF incl. Eventcode vorsehen und dann Ein/Ausblenden ggf. mit alternativer Änderung der Beschriftung.

Gruß
Karl-Heinz


AW: VBA : dynamische Erweiterung Userform
25.03.2023 14:31:42
Oberschlumpf
Hi Joschi,

ich nehme meinen Beitrag teilweise zurück, weil Karl-Heinz natürlich recht hat!
Wenn du in nur 1 Userform ALLE Controls einfügst, die du benötigst...und diese eben mit .Visible = TRUE, bzw .Visible = FALSE je nach Bedarf ein- bzw ausblendest, dann wäre es natürlich möglich, wie von dir gewünscht, mit nur 1 Userform zu arbeiten.

a) ich hatte nicht an diese Möglichkeit gedacht
b) kann es aber mit der Programmierung trotzdem sehr unübersichtlich werden, weil du wirklich für jedes Control jeden möglichen Einsatz berücksichtigen musst - und auch die "Seiteneffekte", dass ein Control anders als gewünscht reagiert, musst du beachten.

Ciao
Thorsten


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 15:41:26
volti
Hallo Torsten,

kann es aber mit der Programmierung trotzdem sehr unübersichtlich werden, weil du wirklich für jedes Control jeden möglichen Einsatz berücksichtigen musst >>>

Kann es in der Tat. Bei einer dynamischen Zufügung müsste aber auch für jedes Control der Ablauf programmiert werden.

Ein mögliches Szenario:
Aus jedem Control-Event einer Controlart (z.B. alle Checkboxen) immer die gleiche Nachfolge-Sub unter Mitgabe einer ID aufrufen.
Diese dann z.B. mit SELECT CASE auswerten

Da hast Du dann Deine "Klassenprogrammierung" an einer Stelle :-)

Gruß KH


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 17:17:20
Joschi Witchcraft
Hallo zusammen.

zuerst einmal meinen herzlichen Dank an Uwe für seine angepasste Mappe. Mir war nicht klar, warum man die Werte direkt angeben muss, und keine Variablen verwenden kann. Dann ist mir aufgefallen, dass ich nicht, wie sonst üblich, am Modulanfang " Option Explicit" stehen hatte. In meinen Befehlen wurde eine Variable verwendt, die es nicht gab. Problem behoben, Schaltfläche ich sichtbar.

Mein nächster Danke geht an Thorsten. Danke für den Hinweis auf die Klassenprogrammierung. Nein, das ist mir inzwischen nicht mehr unbekannt, und ich habe einen entsprechenden Eintrag vorgenommen. Jetzt wird auch auf das Anklicken des 3. Optionbuttons reagiert. Insofern ist das Problem damit erledigt.

Jetzt habe ich nur noch das Problem mit der zusätzlichen CommandButton. Der wird zwar angezeigt, aber es passiert nichts, wenn ich ihn anklicke.
Frage an Thorsten: ist auch hierfür ein ....


Die letzte Frage hat ich erledigt. Uwe hat mir gerade eine neue Mappe bereitgestellt, in welcher alle Buttons dynamisch erzeugt werden. Danke. Danke Danke.


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 14:26:43
Oberschlumpf
Hi Joschi,

ich versuch mal, alles etwas weniger kryptisch zu formulieren, als die Vorredner.

Ich stimme beiden zu.
Während der Laufzeit weitere Controls hinzuzufügen, kann wirklich zum Chaos führen.
Besonders, wenn man, wie du, erst mal nur Basis-Wissen hat.

Bsp CommandButton

Du fügst per Code einen CommandButton hinzu - was aber nicht hinzugefügt wird, ist das Klick-Ereignis....und alle anderen Ereignisse

Dies gilt für jedes weitere Control, welches du während der Laufzeit per VBA-Code hinzufügen willst.

Damit "neue" Controls trotzdem auf das Anklicken/anderes Ereignis reagieren, benötigst du Klassenprogrammierung.
Ich bin sicher, das Wort hast du schon mal gehört und/oder gelesen - aber ich bin genau so sicher, dass du von Klassenprogrammierung noch weniger Ahnung hast, als nur Basiswissen - nämlich gar keine Ahnung :-)

Somit wird dir - erst mal - nix anderes übrig bleiben, als eben - vor dem Start - genau so viele Userforms mit Controls zu erstellen, wie du es benötigst.

Auch mein Hilfeversuch ist ohne jegliches Zeigefingerheben gemeint.

Ich wünsch dir weiter viel Erfolg!

Ciao
Thorsten


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 17:06:38
Alwin WeisAngler
Hallo,
ich hoffe du bist nicht verschreckt worden. Anbei mal das Ganze nicht nur alles dynamisch, sondern auch gleich mit den dazugehörigen Klassen.
https://www.herber.de/bbs/user/158437.xlsm

Gruß Uwe


AW: VBA : dynamische Erweiterung Userform
25.03.2023 18:05:11
Joschi Witchcraft
Eine Frage hätte ich noch an Uwe:

Kannst Du mir in wenigen Worten erklären, was hinter diesem Code steckt:

Friend Property Set dynButtons(ByVal objCommandButton As MSForms.CommandButton)
Set commanbutton = objCommandButton
End Property

Gruß Joschi


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 19:26:59
Alwin WeisAngler
@ snb
ja einfacher geht immer, nur ob der gegenüber dies versteht ist eine andere Sache.
Wenn wir beide uns die Vereinfachungen und/oder sonstige Ideen um die Ohren hauen wie im anderen Forum ist das ja ok - macht mir auch Spaß, aber für einen User der versucht hinter die Logik zu kommen wirds dann wohl schwer.
Naja meine Meinung zu Option Explicit und Dimensionierungen - auch wenn ich manchmal es vergessen habe nicht mehr benötige zu löschen kennst du ja.
Viel Spaß beim Programmieren und schönes Wochenende

Gruß Uwe
Ps.: Vielleicht findet sich ja wieder mal ein VBA-Thema wo wir uns auslassen können. Es ist derzeit leider in den Foren kaum mehr etwas dabei was mich animiert etwas zu tun.


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 20:25:54
Joschi Witchcraft
Ich habe mir gerade den Code von snb angeschaut ind bin der Meinung, dass ich ihn fast verstanden habe.

Unklar ist mir lediiglich:

Set C_control(j + 10).cb = Me("C_" & Format(j, "000"))

wobei ich nur as hinter dem Gleichzeichen nicht verstehe, und dort speziell das "Me("


AW: VBA : dynamische Erweiterung Userform
25.03.2023 20:55:14
Alwin WeisAngler
Das ist nur die Namensformatierung des jeweiligen erzeugten Controls was ins Array übergeben wurde (O_001). Da ist ja der eher einfach zu lesende Teil der Übung.
Im Übrigen hat er die Arraygöße auf 20 Elemente eingestellt. Falls du da die Anzahl der Schleifendurchläufe erhöhen willst musst du das Array anpassen.

Gruß Uwe


Anzeige
AW: VBA : dynamische Erweiterung Userform
25.03.2023 21:07:08
Alwin WeisAngler
ach ja hätte ich fast vergessen:

Sowohl Userform als auch Tabellenmodul stellen vom Prinzip her Klassen dar und da funktioniert ME als Schlüsselwort wie eine Variable.
Der eigentliche Punkt ist aber, dass hier mehrere Instanzen in einer Klasse verwendet werden und damit mittels ME auf die entsprechende Instanz der Klasse verwiesen wird.
Ich hoffe ich habe mich hier einigermaßen verständlich ausgedrückt.
Jetzt verstehst du warum ich es dir auseinandergedröselt zusammengestellt hatte.

Gruß Uwe


Anzeige
AW: VBA : dynamische Erweiterung Userform
27.03.2023 11:39:10
snb
@Alwin

Ich kenne keine 'Alwin WeisAngler' in einem anderen Forum.
Gibt's mehrere Aliassen ?


AW: VBA : dynamische Erweiterung Userform
25.03.2023 19:10:25
Alwin WeisAngler
Friend, Public, Private stellen/bilden Wirkungsbreichsgrenzen dar/ab.
Friends bedeutet also diese Sub ist für das gesamte Project erreichbar.
Public bedeutet öffentlich erreichbar
Private gilt nur dass diese Prozedur in diesem Modul erreichbar ist.
Ich hoffe ich habe mich verständlich ausgedrückt.

Gruß Uwe

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige