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

Forumthread: OptionButton-Gruppe aktiven Wert auslesen

OptionButton-Gruppe aktiven Wert auslesen
NeptunesChild
Hallo Exceler,
ich muss aus einer UserForm die nahezu ausschließlich aus Option-Buttons bestehen wird (ca. 200) die werte aus den einzelnen Gruppen in eine Tabelle übernehmen. Das heisst, ich muss die jeweils aktiven Buttons erkennen und dann mit dem entsprechenden Wert belegen und in die Tabelle eintragen.
Aber wie...?
Vielen dank für die Unterstützung!
Lieben Gruß
Dirk

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: OptionButton-Gruppe aktiven Wert auslesen
09.10.2007 14:17:26
Andi
Hi,
schreibt in Spalte A den Gruppennamen und in Spalte B die Caption des jeweils angeklickten OptionButton:

Sub tt()
Dim obj As Object
Dim zeile As Long
For Each obj In UserForm1.Controls
If TypeName(obj) = "OptionButton" And obj.Value = True Then
With Sheets(1)
zeile = .Range("A65536").End(xlUp).Row + 1
.Cells(zeile, 1).Value = obj.GroupName
.Cells(zeile, 2).Value = obj.Caption
End With
End If
Next obj
End Sub


Schönen Gruß,
Andi

Anzeige
AW: OptionButton-Gruppe aktiven Wert auslesen
NeptunesChild
Hi Andy,
leider schmeisst mich der Debugger in der If-Zeile mit der Meldung "Objekt unterstützt diese Eigenschaft oder Methode nicht" raus.
Hier mein Code:

Private Sub CommandButton1_Click()
Dim obj1 As Object
zeile = Range("A65536").End(xlUp).Row + 1
Worksheets("Tabelle1").Activate
For Each obj In UserForm1.Controls
If TypeName(obj) = "OptionButton" And obj.GroupName = "Z1_1" And obj.Value = True Then
ActiveSheet.Cells(zeile, 5).Value = obj.Caption
End If
Next obj
End Sub


Anzeige
AW: OptionButton-Gruppe aktiven Wert auslesen
09.10.2007 14:50:00
Referenz
Hi
richtig referenziert?

Dim obj1 As Object


AW: OptionButton-Gruppe aktiven Wert auslesen
NeptunesChild
Hi Referenz,
Nach Korrektur leider keine Verbesserung:

Private Sub CommandButton1_Click()
Dim obj As Object
zeile = Range("A65536").End(xlUp).Row + 1
Worksheets("Tabelle1").Activate
For Each obj In UserForm1.Controls
If TypeName(obj) = "OptionButton" And obj.GroupName = "Z1_1" And obj.Value = True Then
ActiveSheet.Cells(zeile, 5).Value = obj.Caption
End If
Next obj
End Sub


Anzeige
AW: OptionButton-Gruppe aktiven Wert auslesen
NeptunesChild
Hi Andi,
leider scheint es nicht daran zu liegen, denn das ist angepasst, aber Meldung bleibt die gleiche.

Private Sub CommandButton1_Click()
Dim obj As Object
zeile = Range("A65536").End(xlUp).Row + 1
Worksheets("Tabelle1").Activate
For Each obj In UserForm1.Controls
If TypeName(obj) = "OptionButton" And obj.GroupName = "Z1_1" And obj.Value = True Then
ActiveSheet.Cells(zeile, 5).Value = obj.Caption
End If
Next obj
End Sub


Anzeige
AW: OptionButton-Gruppe aktiven Wert auslesen
09.10.2007 15:06:00
Andi
Hi,
so müsste es gehen:

Private Sub CommandButton1_Click()
Dim obj As Object
Dim zeile As Long
zeile = Range("A65536").End(xlUp).Row + 1
Worksheets("Tabelle1").Activate
For Each obj In UserForm1.Controls
If TypeName(obj) = "OptionButton" Then
If obj.GroupName = "Z1_1" And obj.Value = True Then
Sheets("Tabelle1").Cells(zeile, 5).Value = obj.Caption
ActiveSheet.Cells(zeile, 5).Value = obj.Caption
End If
End If
Next obj
End Sub


Ich hatte meinen Code in einer UF getestet, die ausschliesslich OptionButton enthielt, und da läuft das dann auch. Sobald aber auch ein CmdButton auf der UF ist, gibt's hier Probleme:
If TypeName(obj) = "OptionButton" And obj.GroupName = "Z1_1" And obj.Value = True Then
und zwar weil ein CmdButton keine GroupName-Eigenschaft hat. Deswegen muss man die if-Abfrage aufsplitten, und auf GroupName nur dann prüfen, wenn das gerade in der Schleife betrachtete Object überhaupt ein OptionButton ist.
Schönen Gruß,
Andi

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktiven Wert einer OptionButton-Gruppe in Excel auslesen


Schritt-für-Schritt-Anleitung

Um die aktiven Werte aus einer Gruppe von OptionButtons in einer UserForm auszulesen und in eine Excel-Tabelle zu übertragen, kannst Du den folgenden VBA-Code verwenden:

Private Sub CommandButton1_Click()
    Dim obj As Object
    Dim zeile As Long
    zeile = Range("A65536").End(xlUp).Row + 1
    Worksheets("Tabelle1").Activate
    For Each obj In UserForm1.Controls
        If TypeName(obj) = "OptionButton" Then
            If obj.GroupName = "Z1_1" And obj.Value = True Then
                Sheets("Tabelle1").Cells(zeile, 5).Value = obj.Caption
            End If
        End If
    Next obj
End Sub

In diesem Code wird geprüft, ob das aktuelle Control ein OptionButton ist. Wenn ja, wird der Name der Gruppe und der Wert des Buttons ausgelesen. Achte darauf, dass der Name der Gruppe (hier "Z1_1") korrekt ist.


Häufige Fehler und Lösungen

  1. Fehlermeldung: "Objekt unterstützt diese Eigenschaft oder Methode nicht"

    • Überprüfe, ob Du die GroupName-Eigenschaft nur für OptionButtons abfragst. Der Code sollte die Abfrage in zwei Schritte aufteilen, um sicherzustellen, dass Du nicht versuchst, die GroupName-Eigenschaft für andere Control-Typen abzufragen.
  2. Kein Wert wird in die Tabelle übertragen

    • Stelle sicher, dass die OptionButtons tatsächlich aktiviert sind und dass der aktive Wert in der Tabelle korrekt eingetragen werden kann. Überprüfe auch, ob die Tabelle ("Tabelle1") existiert.

Alternative Methoden

Eine alternative Methode besteht darin, die Werte der OptionButtons direkt in ein Array zu speichern und anschließend in die Tabelle zu übertragen. Dies kann die Effizienz erhöhen, insbesondere wenn viele OptionButtons vorhanden sind.

Dim optionValues() As String
Dim index As Integer

index = 0
For Each obj In UserForm1.Controls
    If TypeName(obj) = "OptionButton" And obj.Value = True Then
        ReDim Preserve optionValues(index)
        optionValues(index) = obj.Caption
        index = index + 1
    End If
Next obj

' Jetzt die Werte in die Tabelle eintragen
For i = LBound(optionValues) To UBound(optionValues)
    Sheets("Tabelle1").Cells(i + 1, 5).Value = optionValues(i)
Next i

Praktische Beispiele

Angenommen, Du hast eine UserForm mit mehreren Gruppen von OptionButtons, die verschiedene Optionen repräsentieren. Du kannst den oben genannten Code anpassen, um die Werte jeder Gruppe in verschiedene Spalten oder Zeilen zu übertragen.

Beispiel: Wenn Du drei Gruppen von OptionButtons hast, könntest Du den Code so erweitern, dass er die Werte in Spalte B, C und D einträgt, je nach Gruppe.


Tipps für Profis

  • Debugging: Verwende Debug.Print in Deinem Code, um die Werte der OptionButtons während der Ausführung zu überprüfen. Dies hilft, Fehlerquellen zu identifizieren.

  • Modularisierung: Teile Deinen Code in kleinere, wiederverwendbare Prozeduren auf. Dies erhöht die Lesbarkeit und Wartbarkeit Deines VBA-Codes.

  • Error Handling: Implementiere Error-Handling, um unerwartete Fehler zu erfassen und zu behandeln. Dies kann mit einer einfachen On Error Resume Next-Anweisung erfolgen.


FAQ: Häufige Fragen

1. Wie kann ich alle aktiven Werte aller Gruppen auf einmal abfragen? Du kannst die Schleife anpassen, um alle OptionButtons in der UserForm zu durchlaufen und die Werte in einer Liste zu speichern, die dann in die Tabelle eingetragen wird.

2. Muss ich für jede UserForm einen neuen Code schreiben? Nicht unbedingt. Du kannst eine allgemeine Prozedur erstellen, die alle UserForms verarbeitet, indem Du die UserForm als Parameter übergibst.

3. Welche Excel-Version benötige ich für diesen Code? Der bereitgestellte VBA-Code funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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