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

Optionsfelder gruppieren und auswerten

Forumthread: Optionsfelder gruppieren und auswerten

Optionsfelder gruppieren und auswerten
19.04.2013 08:46:51
Jonas
Hallo zusammen,
ich habe ein Problem mit Optionsfeldern bei Excel.
In meiner Datei soll eine Befragung durchgeführt werden. Hierzu sollen mehrere Gruppen mit je 5 Optionsfeldern erstellt werden. Der Befragte setzt dann seine Markierung in die gewünschte Position von "Zufrieden" bis "Nicht zufrieden" in 5 Unterteilungen. Das Forumular ist in 5 Teilbereiche gegliedert. Jeder Teilbereich besitzt drei Optionsgruppen. Die Ergebnisse der drei Optionsfeldgruppen sollen dann gemittelt werden und in einem bedingt Formatierten Kästchen graphisch dargestellt werden. Die Ergebnisse der 5 Teilbereiche sollen anschließend nochmals gemittelt und graphisch dargestellt werden.
Mein erstes Problem ist die Gruppierung von Optionsfeldern. Hierfür verwende ich das mittlerweile das Marko von Josef Ehrensberger aus folgendem Thread:
https://www.herber.de/forum/archiv/732to736/735084_Optionsfelder_vervielfaeltigen.html
Exakter Link zum Makro:
https://www.herber.de/bbs/user/31240.xls
Das Makro funktioniert sehr gut, wenn ich immer nur eine Gruppe von Optionsfeldern erstelle. Leider kenne ich mich nicht allzu gut mit VBA aus und kann das Makro daher nicht an meine Bedürfnisse anpassen.
Ich hätte es gerne so vereinfacht, dass ich alle 15 Gruppen gleichzeitig erstellen kann. Hierfür stelle ich mir vor, dass man dem Makro die Zelle (gerne auch Zeile und Spalte getrennt) übergibt, in der eine Gruppe von Optionsfeldern beginnen soll und die Anzahl der benötigten Felder.
Somit wären alle Optionsfelder in einem Rutsch erstellt.
Für die Auswertung dachte ich an eine Zelle pro Optionsfeldgruppe, in der das Ergebnis angezeigt wird. Am besten von 5(Zufrieden) nach 1(Nicht zufrieden).
Das Mitteln der drei Werte durch eine Mittelwert-Matrixformel und bedingter Formatierung habe ich bereits geschafft.
Anbei hänge ich die Datei, die ich bisher erstellt habe. Ich hoffe, mir kann jemand helfen :-)
https://www.herber.de/bbs/user/84945.xlsm
Vielen Dank
Jonas

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optionsfelder gruppieren und auswerten
19.04.2013 09:00:31
Jonas
Nochmal ich...
Ich habe gerade versucht, das Dokument mit Hilfe des Makros "MakeOptionButtons" von Josef Ehrensberger zu erstellen. Da ich das Makro nicht komplett verstehe, habe ich versucht immer eine Zeile zu erstellen und dann die Ausgangswerte zu ändern und die nächste Zeile erstellen. Hierbei löscht das Makro dann die vorher erstellte Zeile.
Toll wäre ein Makro, das direkt alle Zeilen erstellen kann, alternativ reicht eines, mit dem ich immer Zeilenweise erstelle (sind ja nur 15). Wichtig ist, das die Auswertung der Gruppen funktioniert.
Vielen Dank und Grüße
Jonas

Anzeige
AW: Optionsfelder gruppieren und auswerten
19.04.2013 09:44:28
Jonas
Um meinen bisherigen Monolog weiterzuführen, hier der aktuelle Stand:
Ich habe im Makro die Zeile
 If TypeName(objOpt.Object) = "OptionButton" Then objOpt.Delete

entfernt.
Ich gehe davon aus, dass hier das komplette Dokument auf bestehende Optionsfelder getestet wird und diese dann gelöscht werden.
Jetzt sollte ich einzeilige Optionsfeldgruppen erstellen können.
Vielleicht hat dennoch jemand eine Idee, wie man das Makro auf meine Bedürfnisse zuschneiden könnte.
Gruß
Jonas

Anzeige
AW: Optionsfelder gruppieren und auswerten
19.04.2013 09:52:19
fcs
Hallo Jonas.
hier das Makro unter Tabellenblatt "Lessons Learned" mit entsprechenden Anpassungen.
Gruß
Franz
Option Explicit
'Diese Angaben anpassen!
Const lngStart As Long = 1          '  Startzeile
Const lngRowCount As Long = 3     '  Anzahl Zeilen
Const intStart As Integer = 14       '  Startspalte
Const intCount As Integer = 5      '  Buttons pro Zeile
Const intOffset As Integer = 9     '  Abstand letzter Button > Ausgabezelle
Public Sub MakeOptionButtons()
Dim objOpt As OLEObject
Dim lngRow As Long, lngIndex As Long, lngMax As Long
Dim intCol As Integer
On Error GoTo ErrExit
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
.Cursor = xlWait
End With
'vorhandenen Buttons löschen
For Each objOpt In Me.OLEObjects
If TypeName(objOpt.Object) = "OptionButton" Then objOpt.Delete
Next
For lngRow = lngStart To Cells(Rows.Count, 1).End(xlUp).Row Step 8
For lngIndex = 1 To lngRowCount
For intCol = intStart To intStart + intCount - 1
Set objOpt = Me.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _
Left:=Cells(lngRow + lngIndex, intCol).Left + 3, Top:=Cells(lngRow + lngIndex,  _
intCol).Top + 3, _
Width:=12#, Height:=12#)
With objOpt
.Object.Caption = intCol - intStart + 1
.Object.BackColor = Cells(lngRow, intCol).Interior.Color
.Object.GroupName = Me.Name & "_Grp" & lngRow + lngIndex
.LinkedCell = Cells(lngRow + lngIndex, intCol).Address
.Object.Value = IIf(intCol = intStart, True, False)
End With
Cells(lngRow + lngIndex, intCol).NumberFormat = ";;;"
Next
Cells(lngRow + lngIndex, intStart + intCount + intOffset - 1).FormulaR1C1 = _
"=MATCH(TRUE,RC[-" & intCount + intOffset - 1 & "]:RC[-" & intOffset & "],0)"
Next lngIndex
Next lngRow
ErrExit:
If Err.Number > 0 Then
MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
Err.Clear
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Optionsfelder gruppieren und auswerten in Excel


Schritt-für-Schritt-Anleitung

  1. Makro einfügen: Öffne Excel und gehe zu Entwicklertools. Klicke auf Visual Basic, um den VBA-Editor zu öffnen. Füge das folgende Makro in ein Modul ein:

    Option Explicit
    Const lngStart As Long = 1          ' Startzeile
    Const lngRowCount As Long = 3     ' Anzahl Zeilen
    Const intStart As Integer = 14       ' Startspalte
    Const intCount As Integer = 5      ' Buttons pro Zeile
    Const intOffset As Integer = 9     ' Abstand letzter Button > Ausgabezelle
    
    Public Sub MakeOptionButtons()
       Dim objOpt As OLEObject
       Dim lngRow As Long, lngIndex As Long, intCol As Integer
       On Error GoTo ErrExit
       With Application
           .ScreenUpdating = False
           .EnableEvents = False
           .DisplayAlerts = False
           .Calculation = xlCalculationManual
       End With
       ' vorhandene Buttons löschen
       For Each objOpt In Me.OLEObjects
           If TypeName(objOpt.Object) = "OptionButton" Then objOpt.Delete
       Next
       For lngRow = lngStart To Cells(Rows.Count, 1).End(xlUp).Row Step 8
           For lngIndex = 1 To lngRowCount
               For intCol = intStart To intStart + intCount - 1
                   Set objOpt = Me.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _
                   Left:=Cells(lngRow + lngIndex, intCol).Left + 3, Top:=Cells(lngRow + lngIndex, intCol).Top + 3, _
                   Width:=12#, Height:=12#)
                   With objOpt
                       .Object.Caption = intCol - intStart + 1
                       .LinkedCell = Cells(lngRow + lngIndex, intCol).Address
                       .Object.GroupName = Me.Name & "_Grp" & lngRow + lngIndex
                   End With
               Next
           Next lngIndex
       Next lngRow
    ErrExit:
       If Err.Number > 0 Then
           MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
       End If
       With Application
           .ScreenUpdating = True
           .EnableEvents = True
           .DisplayAlerts = True
           .Calculation = xlCalculationAutomatic
       End With
    End Sub
  2. Makro anpassen: Du kannst die Konstanten lngStart, lngRowCount, intStart, intCount und intOffset anpassen, um die Startzeile, Anzahl der Zeilen und Spalten für die Optionsfelder festzulegen.

  3. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Wähle das Tabellenblatt aus, auf dem Du die Optionsfelder erstellen möchtest. Klicke auf Makros, wähle MakeOptionButtons und klicke auf Ausführen.

  4. Ergebnisse auswerten: Die Ergebnisse der Optionsfelder kannst Du in einer benachbarten Zelle anzeigen lassen, indem Du eine Formel wie =MATCH(TRUE, A1:A5, 0) verwendest, um die Auswahl des Nutzers zu erfassen.


Häufige Fehler und Lösungen

  • Problem: Makro erstellt nicht die gewünschte Anzahl an Optionsfeldern.

    • Lösung: Überprüfe die Werte für lngRowCount und intCount im Makro. Stelle sicher, dass sie den tatsächlichen Anforderungen entsprechen.
  • Problem: Vorhandene Optionsfelder werden nicht gelöscht.

    • Lösung: Stelle sicher, dass die Zeile If TypeName(objOpt.Object) = "OptionButton" Then objOpt.Delete im Makro nicht entfernt wurde.

Alternative Methoden

  1. Formularsteuerelemente verwenden: Du kannst auch die Standard-Optionsfelder aus der Registerkarte Entwicklertools verwenden, indem Du sie manuell einfügst. Diese Methode erfordert jedoch mehr Zeit und ist weniger flexibel als das VBA-Makro.

  2. Excel-Add-Ins: Es gibt verschiedene Add-Ins, die erweiterte Funktionen für Umfragen und Auswertungen bieten. Diese können nützlich sein, wenn Du eine einfachere Benutzeroberfläche bevorzugst.


Praktische Beispiele

  • Befragung erstellen: Erstelle ein Beispiel mit 5 Gruppen von Optionsfeldern, jede mit 5 Auswahlmöglichkeiten ("Zufrieden" bis "Nicht zufrieden"). Platziere die Outputs in einer zusammenfassenden Tabelle.

  • Graphische Darstellung: Verwende bedingte Formatierungen, um die Auswertung der Umfrage visuell darzustellen. Beispielsweise kannst Du die Zellen in Grün färben, wenn die Mehrheit "Zufrieden" gewählt hat.


Tipps für Profis

  • Automatisierung: Nutze das VBA-Makro, um die Erstellung von Optionsfeldern und die dazugehörige Auswertung zu automatisieren. So sparst Du viel Zeit.

  • Ereignisse programmieren: Du kannst auch Ereignisse programmieren, die bei Änderungen in den Optionsfeldern ausgelöst werden, um die Auswertung in Echtzeit zu aktualisieren.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Optionsfelder anpassen?
Du kannst die Konstanten lngRowCount und intCount im Makro ändern, um die Anzahl der benötigten Optionsfelder zu bestimmen.

2. Was kann ich tun, wenn das Makro nicht funktioniert?
Überprüfe, ob die Entwicklertools aktiviert sind und ob Du das Makro korrekt eingefügt hast. Achte auch darauf, dass die Sicherheitsstufe für Makros in Excel angepasst ist.

3. Wie kann ich die Auswertung der Optionsfelder visualisieren?
Du kannst die Ergebnisse in eine Zelle mit einer bedingten Formatierung einfügen, um sie grafisch darzustellen, z.B. mit einer Farbskala, die von rot (nicht zufrieden) bis grün (zufrieden) reicht.

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