Anzeige
Archiv - Navigation
1960to1964
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

VBA dynamischer Commandbutton funktioniert nicht

VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 16:39:01
Joschi Witchcraft
Hallo Forum.

in eine "leere" Userform füge ich eine größere Anzahl von Zeilen mit jeweils 4 Spalten ein. Damit die einzelnen Felder einen Rahmen bekommen, habe ich mich für "Label.1" entschieden:

Dim NewLabel As MSForms.Label
Set NewLabel = Me.Controls.Add("Forms.Label.1")

Die Anzahl der Zeilen ist von externen Daten abhängig.

Nachdem ich alle Zeilen aufgebaut habe. möchte ich noch einen Command-Button nach der Liste einfügen, um die Anzeige "ordnungsgemäß" beenden zu können:

Dim NewCmd As MSForms.CommandButton

Set NewCmd = Me.Controls.Add("Forms.CommandButton.1")
With NewCmd
.Left = FormWidth - 50
.Top = TopPos
.Width = 30
.Height = 20
.Caption = "OK"
End With

Auch eine Click-Routine ist vorhanden, wird aber nicht aufgerufen.

Private Sub CommandButton1_Click()
Stop
Unload Me
Me.Hide
End Sub

Der gesamte Code ist Teil der Userform. Der Aufbau der Userform geschieht in der Routine UserForm_Initialize()

Wo liegt mein Fehler? Die Userform wird in der gewünschten Form angezeigt. Mein Problem ist lediglich der "Click".

Gruß Joschi


15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 16:49:35
Oberschlumpf
Hi,

"Wo liegt mein Fehler?"

Das Klick-Ereignis des Buttons musst du per Klassenprogrammierung erzeugen.
Viele Beispiele dazu gibt es im Internet.
Aber für VBA-Anfänger kann das durchaus zu einer "harten Nuss" werden.

Oder...fällt mir gerade ein...

Füge anstelle eines ActiveX-Buttons per Code einen Button aus "Formularsteuerelemente" , auch per Code, hinzu.
Diesem Button (Formularsteuerelemente) kannst du dann per VBA ein Makro aus allgemeine Module zuweisen.
Dieses Makro, sozusagen, dein Klick-Ereignis, musst du natürlich schon in allgemeine Module erstellt haben.

Diese Variante ist, so glaube ich, für Anfänger in VBA einfacher zu realisieren.

Ciao
Thorsten
Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 17:48:29
onur
Nix für Ungut, aber man erstellt keinen Code, der eine Userform mit Labels und Commandbuttons erstellt, erst recht nicht mit "Basiskenntnisse in VBA"?
Wozu überhaupt? Wozu ein Makro? Willst du 10 mal täglich eine Userform erstellen ?
Man erstellt eine Userform mit dem VBA-Editor, packt alles drauf, was man so braucht (inkl. Buttons, Labels usw) und DANN schreibt man die passenden Makros dazu.
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:38:57
Alwin Weisangler
Hallo,

anbei einer von 2 möglichen Wegen (die ich zumindest kenne) das Klickereignis via Klasse auszuwerten. Damit du siehst was da passiert, nutze das Lokalfenster im VBA Editor und tippe mit F8 Step by Step zum Einlesen des Button ins Datenfeld der Klasse durch.
Da kannst du zumindest erkennen was überhaupt passiert.
Verstehen ist eine ganz andere Sache - das wird dauern.
Ich habe auch geraume Zeit benötigt um zu kapieren was da passiert und wie man mit Property Set / Let / Get umgeht bzw. wie es funktioniert.
https://www.herber.de/bbs/user/166810.xlsm

Gruß Uwe

Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:44:37
Alwin Weisangler
Sorry hatte etwas nicht unwesentliches vergessen.

Wichtig ist, dass der Buttonzugriff aufs Projekt beschränkt bleibt, also richtig:
Friend Property Set .....
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 21:57:48
Alwin Weisangler
@ snb,
ich weiß, dass man es auch mit Public Variablen machen kann. Aber in einer Klasse ist es eher ein riesen Unfug.

Gruß Uwe
AW: VBA dynamischer Commandbutton funktioniert nicht
06.02.2024 10:23:06
Joschi Witchcraft
Hallo liebe "Berater".

Ich habe mich dazu entschlossen, den Command-Button bereits in der Userform fest zu definieren und auf einen "dynamischen" Button zu verzichten.

Nur nochmals zum Verständnis: es gibt nur einen Button, auf welchen man klicken kann. Die von mir als "Label" definierten Bereiche haben keinen "-Click"-Sub; sie dienen nur der Information.

Mein Problem ist damit erledigt.

Gruß Joschi
Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
06.02.2024 17:10:12
snb
@Uwe

Aber in einer Klasse ist es eher ein riesen Unfug

Wieso ?
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 17:58:45
onur
Ich beschäftige mich seit über 40 Jahren mit VBA, VB und deren Vorgängern wie Quickbasic usw. Aber noch nie hatte ich irgend einen Fall, wo ich unbedingt während der Laufzeit irgend welche Elemente wie Userformen, Buttons oder Textboxen generieren musste. Sowas macht man während der Designzeit.
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:19:26
Oberschlumpf
Moin,

seh ich anders.
Vor n paar Wochen fragte ein Proteus nach einer Lösung, in der es darum ging, ...

...entsprechend der Anzahl von Einträgen in unterschiedlichen Sheets nur genau so viele CommandButton (CB) in einem Userform zu erstellen
...es gab mehrere Sheets mit unterschiedlich vielen Einträgen
- demzufolge könnte man zwar Max-Anzahl Einträge ermitteln
- genau so viele CB's im Userform hinzufügen
- die überflüssigen CB's z Bsp mit Visible = False ausblenden

Aber das Ganze geht eben auch dynamisch per Code, und somit in der Programmierung "sauberer", finde ich zumindest.
Und das Klick-Ereignis dann per Klassenprogrammierung - mit unterschiedlichen Reaktionen, da abhängig davon, welcher Button wann/wo geklickt wurde

Wenn du möchtest, guckst du hier...
https://www.herber.de/forum/archiv/1952to1956/1955242_Tabelle_durchsuchen_und_Ergebnisse_in_Textfelder_ausgeben.html
...is aber sehr viel zu lesen

Nun denn...
Ich stimme dir aber zu, dass Klassenprogrammierung nicht unbedingt als "Einstieg" für Anfänger zu empfehlen ist.

Ciao
Thorsten
Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:25:00
onur
Hallo Thorsten,

DAS war das Stichwort: "die überflüssigen CB's z Bsp mit Visible = False ausblenden".
SO würde ich es auch machen, vor allem als Anfänger....


Gruß
Onur
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:32:34
schauan
Hallöchen - @onur

also, zustimmen würde ich nur diesem Teil - "erst recht nicht mit "Basiskenntnisse in VBA"?" Ansonsten sehe ich es wie oberschlumpf. Eine dynamische Generierung hat seinen Reiz. Ein anderes Beispiel wäre ein eigenes Kalendersteuerelement mit Buttons für die Tage - klar, kann man die 1-3 unnötigen ausblenden, aber zuerst mal muss man ja 31 manuell erstellen :-( Zudem hätte man dann schlimmstenfalls auch noch 31 Klick-Makros zu Programmieren und zu warten.

Aber das bringt den TE jetzt nicht weiter :-(
Anzeige
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:36:40
onur
"ein eigenes Kalendersteuerelement mit Buttons" hab ich auch schon öfters erstellt, aber als Add-In, was man zu jedem Projekt hinzufügen kann und nicht für jedes Projekt immer wieder neu. :)
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 18:31:22
Oberschlumpf
Hi,

dass du so antwortest, kam mir in den Sinn, nachdem ich es geschrieben hatte (noch vor dem Absenden) :-)
Aber recht hast du schon - für den Anfang ist dies natürlich wesentlich einfacher.

Ciao
Thorsten
AW: VBA dynamischer Commandbutton funktioniert nicht
05.02.2024 16:56:30
Oberschlumpf
...tjaaa...Denkfehler - bei mir!

Leider hilft dir meine 2. Idee gar nicht.
Ich hatte vergessen, dass du ja alles in einem Userform(ular) erstellst.
In Userforms können nur ActiveX-Komponenten verwendet werden.
Somit bleibt dann doch nur die Klassenprogrammierung.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige