Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1888to1892
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 Userform mit Radio-Button
23.06.2022 16:06:43
Joschi
Hallo Forum,
auf der Basis eines Beispiels von Hajo Ziplies auf dessen Internetseite habe ich für mich - und ausschließlich für den privaten Gebrauch - eine Funktion entwickelt, um mit Hilfe von Radio-Buttons eine bequeme Antwort des aktuellen Anwenders zu erhalten.
Die Userform sieht inzwischen gut aus. Auch das Umschalten von einem Knopf auf den anderen funktioniert. Doch das war es auch schon. Was mir jetzt noch fehlt, ist die Frage: wie bekomme ich mit, dass einer der Radio-Buttons gedrückt wurde, und zwar welcher? Außerdem hätte ich gerne auch einen Command-Button für die Funktion "Abbruch".
Die Userform ist immer nur für einen einmaligen Gebrauch bestimmt.
Vor dem .Show und vor dem .Remove ist ein "Stop" eingebaut, um sich bestimmte Informationen anschauen zu können.
Mein Ziel ist es, die Position des ausgewählten Button-Textes im Array als Ergebnis zurückzugeben. Ob das von 1 bis x, oder von 0 bis x sein wird, muss sich noch zeigen. Abbruch ist dann auf jeden Fall eine Position vor der kleinsten; also 0 oder -1.
Der Code ist hier zu finden: https://www.herber.de/bbs/user/153736.txt
Wer kann mir weiterhelfen?
Leider läßt es Excel nicht zu, dass ein einmal verwendeter Name für die Userform nochmals benutzt werden darf, ohne dass die Mappe geschlossen und neu geöffnet wurde. Deshalb scheidet die Vorgabe eines festen Namens aus und ich muss mir zusätzlich noch Gedanken machen, wie ich Userforms automatisch löschen kann. Dabei hilft mir vermutlich der Standardname "Userform" mit einer zusätzlichen Zahl dahinter. Es wäre also denkbar, alle Userforms mit solch einem Namen bei jedem Durchlauf zu löschen. Das ist allerdings nur eine Fleißaufgabe und kein Problem für das Forum.
Gruß Joschi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 16:25:41
Daniel
Hi
dynamisch + Radiobutton = LISTBOX (oder auch Combobox)
also statt vieler Radiobuttons einfach EINE einzige Listbox verwenden.
dieser kann man beliebig viele Optionen hinzufügen und hat trotzdem immer noch nur ein einziges Steuerelement, welches man mit einem Event-Makro versehen kann, damit man "mitbekommt", wenn ein Button geklickt wird.
Sowas wird mit zu laufzeit erstellten einzelnen Buttons wesentlisch schwieriger.
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 17:16:31
Joschi
Hi Daniel,
Eine Listbox bzw. Combobox habe ich ausgeschlossen, weil ich dafür auf dem Tabellenblatt einen bestimmten Bereich benötige. Eine Userform "schwebt" über allem. Deshalb möchte ich das Ziel mit einer Userform erreichen.
Gruß Joschi
Anzeige
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 17:22:31
Daniel
Woher stammt deine Annahme, dass eine Userform nur RadioButtons enthalten könne und keine Listboxen?
Man kann List- und Comboboxen genauso auf einer Userform platzieren wie Radiobuttons, Checkboxen oder Commandbuttons.
Gruß Daniel
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 18:23:24
Joschi
Hi Daniel,
bitte akzeptiere es, dass ich meine halbfertige Lösung weiterentwickeln möchte. Die Userform ist - mit Ausnahme der Abbruch-Schaltfläche - fertiggestellt. Jetzt ist nur noch die Frage, welchen Code brauche ich zusätzlich, um an die Entscheidung in der Userform zu gelangen.
Gruß Joschi.
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 19:11:46
Zwenn
Hallo Joschi,
um dynamisch generierte Steuerelemente mit Events zu versehen, musst Du Klassenprogrammierung verwenden. Das dürfte mit Deinem angegebenen Lvl "Basiskenntnisse in VBA" eher schwierig zu verstehen sein. Also solltest Du vielleicht doch noch einmal über den Vorschlag von Daniel nachdenken. Der vereinfacht Dein Problem nämlich um einiges und wird schon schwer genug für Dich sein.
Falls Du es doch mit den dynamischen Elementen versuchen willst, kannst Du hier nachsehen, wie man Events dran tackert.
https://www.online-excel.de/excel/singsel_vba.php?f=57
Viele Grüße,
Zwenn
Anzeige
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 19:17:01
Daniel
wie Zwenn schreibt, dafür brauchst du dann Klassenprogrammierung.
da bin ich raus, denn die kapiere ich selber nicht.
Die müsstest du dir selber aneignen, um dein Projekt fertig zu stellen.
viel spass dabei.
Gruß Daniel
AW: VBA dynamische Userform mit Radio-Button
23.06.2022 22:23:17
Alwin
Hallo Joschi,
lade doch einfach deinen bisherigen Stand in einer Beispieldatei hoch. Anbei mal ein Beispiel wie in einer Userform ein ganzer Teil dynamisch erzeugt und die Events entsprechend z.T. in Klassen verarbeitet werden. Das ist eigentlich kein Hexenwerk, wenn man einen Plan hat. Viel Spaß beim Ausprobieren. Das Ding habe ich mal aus Jux und Dallerei gebastelt.
Ja und deine Ratiobuttons musst du in ein Array einlesen. Damit haben diese Dinger Nummern und mit diesen Nummern lassen sich die Ereignisse auswerten.
https://www.herber.de/bbs/user/153740.xlsm
Gruß Uwe
Anzeige
AW: VBA dynamische Userform mit Radio-Button
24.06.2022 00:26:08
Zwenn
Insgesamt ein schönes Beispiel Uwe. Aber für einen Anfänger vielleicht etwas overkill und "zu mauslastig" ;-)
Hier ist ein Beispiel, das sich auf die dynamische Erzeugung von Steuerelementen inklusive Events konzentriert. Das ist ein Beispiel, dass ich mal in noch einfacherer Form auf StackOverflow veröffentlicht habe. (Ohne Array, in dem die Steuerelemente gesammelt werden). Ich habe das auf Deutsch kommentiert, ansonsten ist es Englisch geblieben.
Eine leere UF erstellen und folgendes in den Code Teil kopieren:

Option Explicit
Dim comSampleBtn() As clsClickEventsComBut 'Array mit dem Namen der Klasse als Datentyp
Private Sub UserForm_Initialize()
Dim comButTemp As MSForms.CommandButton 'Temporaerer Button
Dim commandButtonIndex As Byte 'Aktueller Button
Dim btnCount As Byte 'Anzahl der gewuenschten Buttons
btnCount = 3 'Anzahl der gewuenschten Buttons festlegen (sinnvoll für dieses Beispiel zwischen 1 und 5)
ReDim comSampleBtn(btnCount) 'Array mit der festgelegten Anzahl von Buttons dimensionieren
'Schleife fuer alle zu platzierenden Buttons
For commandButtonIndex = 1 To btnCount
'Button als temporaeren Button erstellen
Set comButTemp = Me.Controls.Add("Forms.commandbutton.1", "CommandButton" & commandButtonIndex, True)
With comButTemp
'Button platzieren
.Left = 50
.Top = 25 * commandButtonIndex 'für Platzierung untereinander
.Height = 20
.Width = 100
.Caption = "Sample Button " & commandButtonIndex
End With
'Ein Element vom Datentyp unserer Klasse ins Array aufnehmen
Set comSampleBtn(commandButtonIndex) = New clsClickEventsComBut
'Temporaeren Button und Event (siehe Klasse) in Array zusammenfueren
Set comSampleBtn(commandButtonIndex).ComButSample = comButTemp
'Den temporaeren Button loeschen
Set comButTemp = Nothing
Next commandButtonIndex
End Sub
Ein Klassenmodul mit dem Namen clsClickEventsComBut anlegen und folgenden Code reinkopieren:

Option Explicit
Public WithEvents ComButSample As MSForms.CommandButton
Private Sub ComButSample_Click()
MsgBox "You clicked the sample button: " & UserForm1.ActiveControl.Name & Chr(13) & "With the caption: " & UserForm1.ActiveControl.Caption
End Sub
Die UF kann einfach über den "Play" Button in der IDE gestartet werden. Die Kommentare sollten zur Erklärung ausreichen.
Viele Grüße,
Zwenn
PS: Das ist der Thread auf SO:
https://stackoverflow.com/questions/58801868/add-click-method-to-dyn-button-at-vba-not-work/58803508#58803508
Anzeige
AW: VBA dynamische Userform mit Radio-Button
24.06.2022 11:10:30
Joschi
Hallo Zwenn.
Danke für Deine Mühe. Aber ich wollte eine Lösung über Radio-Button.
Wenn der Joschi sich etwas in den Kopf gesetzt hat, dann gibt er keine Ruhe, bis er die Lösung gefunden hat.
Inzwischen habe ich eine lauffähige Lösung mit Radio-Buttons. Mein Problem ist damit erledigt.
Gruß Joschi
AW: VBA dynamische Userform mit Radio-Button
24.06.2022 11:24:38
Zwenn
Hi Joschi,
mein Ziel war nicht Dir eine schlüsselfertige Lösung zu liefern. Ich habe das gepostet, weil ich das Beispiel mit den Buttons hatte und es nur etwas erweitern musste. Die Mechanik ist für alle Steuerelemente gleich. Du kannst damit genauso Radio Buttons, Textboxen und alles sonstige dynamisch verwalten. Ein Algorithmus ist nicht dafür da ein spezielles Problem zu lösen, sondern eine Problemklasse. Ganz egal, was Du Dir in den Kopf setzt.
Viele Grüße,
Zwenn
Anzeige
AW: VBA dynamische Userform mit Radio-Button
24.06.2022 11:06:22
Joschi
Hallo Uwe.
Ich verstehe Deine Frage nach einer Beispieldatei nicht; ich hatte doch den betreffenden Code bereitgestellt. Den in eine leere Mappe einzufügen und zu testen dürfte doch kein Problem gewesen sein.
Gruß Joschi

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige