Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gruppierte Optionbuttons ansprechen

Forumthread: Gruppierte Optionbuttons ansprechen

Gruppierte Optionbuttons ansprechen
06.06.2024 08:16:52
Eric418
Hallo,
ich brauche Hilfe, ich habe eine Userform erstellt mit mehreren Optionbutton Gruppen, ich finde allerdings in keinem Forum etwas dazu, wie man die einzelnen Gruppen im Code anspricht.
Ich habe z.B. die Gruppe G1, in der 3 Optionbuttons enthalten sind, ich möchte nachdem man einen Commandbutton klickt, das die Caption des Optionbuttons der in G1 auf True ist, in eine Zeile geschrieben wird. Wie man das bei einzelnen macht ist mir bewusst, aber wie kann ich das bei Gruppierten Optionbuttons machen?



Vielen Dank im voraus für eure Hilfe.
Mit Freundlichen Grüßen
Eric
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gruppierte Optionbuttons ansprechen
06.06.2024 08:28:51
Beverly
Hi Eric,

nach diesem Prinzip:

    Dim ctrOt As Control

For Each ctrOt In Me.Controls
If ctrOt.Value Then
Select Case ctrOt.GroupName
Case "G1"
Range("A1") = ctrOt.Name
Case "G2"
Range("B1") = ctrOt.Name
End Select
End If
Next ctrOt


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Gruppierte Optionbuttons ansprechen
06.06.2024 09:00:58
daniel
Hi
ich würde, wenn es von der Gestaltung her möglich ist, die Optionbuttons löschen und jede Gruppe durch eine Listbox ersetzen
(die kann man auch so formatieren, dass sie wie eine Optionbuttongruppe aussieht)
dann wäre der Code einfach
If IistboxG1.listindex >= 0 then Cells(...).value = ListboxG1.Value

wenn es auch ok ist, dass der Text sofort in die Zelle geschrieben wird, kann man der Listbox auch eine Ausgabezelle zuweisen (Zelladresse in ControlSource eintragen), dann geht das ganze ohne eine Zeile Code.

bei Optionbuttons hängt die Programmierung davon ab, ob du die Buttons über die Eigenschaft Groupname oder über den Rahmen zusammengefasst hast.
bei Gruppennamen so:

Private Sub CommandButton1_Click()

Dim crt As Control
For Each crt In Me.Controls
If TypeName(crt) = "OptionButton" Then
If crt.Value Then
If crt.GroupName = "G1" Then Cells(1, 1).Value = crt.Caption
If crt.GroupName = "G2" Then Cells(2, 1).Value = crt.Caption
End If
End If
End If
Next
End Sub

Bei Verwendung von Rahmen/Frames zum gruppieren:

Private Sub CommandButton1_Click()

Dim crt As Control
For Each crt In Frame1.Controls
If TypeName(crt) = "OptionButton" Then
If crt.Value Then Cells(1, 1).Value = crt.Caption
End If
Next
For Each crt In Frame2.Controls
If TypeName(crt) = "OptionButton" Then
If crt.Value Then Cells(2, 1).Value = crt.Caption
End If
Next
End Sub


wie du siehst, machen dir hier Listboxen das Leben wesentlich einfacher.

Gruß Daniel
Anzeige
AW: Gruppierte Optionbuttons ansprechen
06.06.2024 08:52:04
Eric418
Hallo Karin,
vielen dank für deine Schnelle Antwort, das funktioniert.

Ich habe allerdings 15 Gruppen von OptnButtons, ich habe jetzt gedacht wenn ich einfach einen Zähler i mit in der vorschleife inkrementiere, kann ich nacheinander alle OptnButtons ansprechen.

Select Case ob.GroupName
Case "G" & i
Worksheets("Startseite").Cells(45 + i, 1).Value = ob.Caption

das wirft zwar keinen Fehler, funktioniert allerdings auch nicht, könnten sie mir da auch helfen?
Anzeige
AW: Gruppierte Optionbuttons ansprechen
06.06.2024 09:07:11
Beverly
Hi Eric,

es geht also darum, die Zeile aus der Gruppennummer zu bestimmen?

    Dim ctrOt As Control

For Each ctrOt In Me.Controls
If ctrOt.Value Then
Cells(45 + Application.Substitute(ctrOt.GroupName, "G", ""), 1) = ctrOt.Name
End If
Next ctrOt



Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Gruppierte Optionbuttons ansprechen
06.06.2024 09:08:55
daniel
Hi

verwende als Groupname doch einfach die Adresse der Zelle, die der Gruppe zugeordnet ist, also nicht "G1" sondern nach deinem Code "A46"
dann wäre der Code für alle Gruppen einfach:

for each crt in me.Controls

if typname(crt) = Optionbutton Then
if crt.value then
if crt.Groupname > "" then Range(crt.Groupname) = crt.Caption
end if
end if
next


Gruß Daniel
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige