Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle ActiveX-Optionbuttons aus einem Groupname auf "False"

Forumthread: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"

Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 12:29:14
Robert
Hallo liebe Experten und Expertinnen!

Ich suche im www schon verzweifelt und ChatGPT liefert mir auch keinen Code, der funktioniert...

In einer Excel-Tabelle habe ich *sehr* viele ActiveX-Optionbuttons, die mit Groupnames jeweils in viele Gruppen zusammengefasst wurden. (Sie sind nicht "gruppiert" mit irgendwas anderem...)
Jetzt kann es sein, dass in einer solchen Gruppe auch KEINE Option gewählt wird, aber leider doch ein Button angeklickt wurde. Ich möchte also den ganzen Groupname wieder resetten = alle Optionbuttons auf FALSE setzen.

ChatGPT versucht mir einen Code anzudrehen, der für einen einzelnen Button mit einem spezifischen Namen funktioniert. Da ich aber so viele Buttons habe, würde ich da wahnsinnig... Und ein weiteres Skript, diesen Code jedem einzelnen Button anzudrehen, versagt regelmäßig.

Ich hoffe somit doch auf Menschengemachtes und -gedachtes ;-)
Wer kennt hier eine Lösung, dass ich z.B. mit rechtem Mausklick/Doppelklick oder einem weiteren Makro(-Knopf), das erkennt, welcher Groupname gerade aktiv ist, eine solche Gruppe komplett resette?

1000 Dank!!!
Robert
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:04:45
Kuwer
Hallo Robert,

weise jeweils einem Button jeder Gruppe ein Doppelklick-Ereignismakro zu:

Private Sub OptionButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

OptionButton1.Value = False
Cancel = True
End Sub


Gruß, Uwe
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:08:53
Oberschlumpf
Hi Uwe,

mit deinem Code wird doch nur OptionButton1 "zurückgesetzt" und nicht viele Button, oder was hab ich nicht verstanden?

Ciao
Thorsten
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:57:38
Robert
Hallo Uwe,

Danke!

Hallo Thorsten,

richtig: Nur ein - und zwar der gerade geklickte - Button wird geleert. Hier heißt er "WS"

Habe mit etwas digitaler Hilfe das Skript erweitert, so dass die ganze Gruppe durchleert wird:

Private Sub WS_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim optButton As OLEObject
Dim groupName As String

groupName = WS.groupName ' Gruppenname des ausgewählten OptionButtons abrufen
' Durch alle OLEObjects in der Arbeitsmappe iterieren
For Each optButton In ThisWorkbook.Sheets("Checkliste Grüne Wiese").OLEObjects
' Überprüfen, ob das OLEObject ein OptionButton ist und den gleichen Gruppennamen hat wie der ausgewählte Button
If TypeOf optButton.Object Is MSForms.OptionButton And optButton.Object.groupName = groupName Then
optButton.Object.Value = False
End If
Next optButton

Cancel = True
End Sub


Fein - aber was mach ich mit den anderen Gruppen- bzw. Buttonnamen?
Für jede ein eigenes Skript...?! :-(

Merci.
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 15:36:47
Oberschlumpf
Hi Robert,

wozu is denn die For Each-Schleife erforderlich?
Wenn aus 1 Gruppe nur 1 Button mit dem Code von Uwe belegt wird, sind doch alle anderen Button aus der gleichen Gruppe automatisch "ausgeschaltet".

Ciao
Thorsten
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 15:56:25
Robert
Ja, hab ich jetzt auch kapiert.
Sein Skript reicht.
Anzeige
Es kann ja nur ein Button je Gruppe True sein! ...
10.05.2024 14:37:33
Kuwer
Hi Thorsten,

... darum reicht es doch, den gerade geklickten zurückzusetzen. ;-)
Deswegen würde auch ein Button je Gruppe genügen, dem dieser Code (entsprechend benamst natürlich) zugewiesen wird.

Gruß, Uwe
AW: Es kann ja nur ein Button je Gruppe True sein! ...
10.05.2024 15:13:52
Robert
Hallo Uwe!
Äh - ja. Das ist natürlich genial, da es ja Optionbuttons sind (Applaus!). Danke!

Aber ohne Namen des Buttons geht's wohl nicht - ich meine

Private Sub egalwieichheißeodergenanntwurde_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

egalwieichheißeodergenanntwurde.Value = False
Cancel = True
End Sub


oder?

Schade... dann muss ich die Tabelle durchpflügen, und nehme wohl immer das oberste Feld zum Reset.
Anzeige
AW: Es kann ja nur ein Button je Gruppe True sein! ...
10.05.2024 15:42:59
Oberschlumpf
Hi Robert,

noch mal ich.
Hmm??? Was genau möchtest du erreichen?

1. Willst du genau nur 1 Gruppe mit OptionButton "ausschalten"?
2. Oder willst du mit 1 (Doppel)Klick ALLE OptionButton-Gruppen "ausschalten"??

Bei 1. = ja, da musst du in jeder Gruppe einen Button mit Uwes Dbl-Click-Code belegen.
Bei 2. bräuchtest du einen zusätzlichen Button, z Bsp CommandButton oder was auch immer, der dann genau nur dafür da ist, alle OptionButton "auszuschalten".
Oder du nimmst einen weiteren Button in der Menüzeile, in dem du schon den Button "reset all boxes" hast, der sowohl CheckBoxen und auch OptionButton "ausschaltet".
Der zusätzliche Button schaltet dann "nur" die OptionButton aus.

Und DAS könntest du dann, genau, mit einer Schleife erreichen.

Ciao
Thorsten
Anzeige
AW: Es kann ja nur ein Button je Gruppe True sein! ...
10.05.2024 15:59:09
Robert
ich will nur die Optionsbutton der aktiven Gruppe (Groupname) auf "False" setzen.
Das komplette Leeren aller Optionbuttons und Checkboxen habe ich schon als Makro für die gesamte Arbeitsmappe...

Ich habe jetzt Uwes Skript für jede Gruppe eingefügt und angepasst.
AW: Es kann ja nur ein Button je Gruppe True sein! ...
10.05.2024 15:34:55
Oberschlumpf
Hi Uwe,

ja,natürlich! Bei OptionButton kann ja immer nur EIN Button aus der selben Gruppe gewählt werden - somit reicht natürlich dein Dbl_Click-Code!
Jetzt, nach dem ich die Bsp-Datei sah + testen konnte, hab auch ich es kapiert...yeahh!^^ :-)

Ciao
Thorsten
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:07:06
Oberschlumpf
Hi Robert,

deine Frage, Bitte, Wunsch ist genau so, als wenn ich zu dir sagen würde:

Mein Auto ist kaputt. Mach du es bitte mal wieder heile. ...OHNE, dass ich dir mein Auto zeige!

Also, zeig bitte per Upload eine Excel-Bsp-Datei mit 20 Option-Button, die, genau so!, wie du es beschrieben hast, in unterschiedliche Gruppen aufgeteilt sind.
Und dann sehen auch wir etwas, mit dem wir testen können.

Ciao
Thorsten
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
11.05.2024 22:52:21
Daniel
Hi
versuche, Optionbuttons wenn immer möglich durch eine Listbox oder Combobox zu ersetzen.
das sollte vieles vereinfachen, schon dadurch, dass du viel weniger Einzelobjekte benötigst.
Beispielsweise reicht es dann, die Ausgabezelle der Listbox zu leeren.
Gruß Daniel
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:26:56
Robert
Hallo Thorsten,

hatte gehofft, so allgemeingültig zu schreiben, dass das Problem im luftleeren Raum gelöst werden kann...

Danke, wenn du dich direkt mit der Datei auseinandersetzen willst!
Ich habe nur ein kleines Teilchen rausgeschnipselt, da sie sonst zu groß wäre und wohl auch vielleicht sensible Infos der Firma beinhaltet...

Sollte hier sein: https://www.herber.de/bbs/user/169383.xlsm

Grüße
Robert
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:42:50
Yal
Hallo Robert,

das Thema GroupName auf ActiveX-Controls ist tatsächlich ... kompliziert.

Versuche diesen Code:
Sub test()

Dim S
Dim OO

For Each S In ActiveSheet.Shapes
If S.Type = msoOLEControlObject Then
Set OO = S.OLEFormat.Object.Object
Debug.Print S.Name, OO.Caption, OO.GroupName
End If
Next
End Sub


VG
Yal
Anzeige
AW: Alle ActiveX-Optionbuttons aus einem Groupname auf "False"
10.05.2024 13:59:59
Robert
Hallo Yal,

danke für deine Hilfe!

(Wieder was gelernt "Debug.print" und dann im Direktbereich nachschauen...)

Da erscheint jetzt eine lange, lange Liste aller Optionbuttons und Checkboxen mit ihren Gruppennamen... Das ist beeindruckend, aber was kann ich damit speziell anfangen?

Merci - Robert
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige