Nämlich eine Ausgabe im Excel, die anzeigt welches der Symbole markiert ist? Dafür sehe ich zwei mögliche Optionen.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set ber = Range("D4:G20") 'Bewertungsbereich
Wertsp = "O" 'Ausgabespalte in der angegeben wird welches Symbol markiert wurde.
If Not Intersect(Target, ber) Is Nothing Then
Set rw = Range(Cells(Target.Row, ber.Column), Cells(Target.Row, ber.Column + ber.Columns.Count - 1))
rw.Font.ColorIndex = 6 'z.B. Leerfarbe
Target.Font.ColorIndex = 4 'z.B. Auswahlfarbe
Range(Wertsp & Target.Row).Value = Target.Column - ber.Column + 1
End If
End Sub
In der Spalte O wird für dieses Beispiel nun ein Wert zwischen 1 und 4 zurückgegeben, welcher der markierten Spalte (hier D:G) entspricht.
Mithilfe der Wahl-Funktion kannst du diesen Wert weiterverarbeiten um einen beliebigen Wert zurückzugeben. z.B. =WAHL(O4;2;"A";B4;8)
Nachteil: Sobald du alle Markierungen zurücksetzt musst du auch die Werte der Hilfsspalte manuell löschen.
Option 2: - ohne Hilfsspalte, etwas komplexer, entspricht aber eher deiner eigentlichen Frage:
Füge bei dem Code im Tabellenmodul vor End If eine Zeile für Application.Calculate hinzu. Sieht dann z.B. so aus:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set ber = Range("D4:G20") 'Bewertungsbereich
If Not Intersect(Target, ber) Is Nothing Then
Set rw = Range(Cells(Target.Row, ber.Column), Cells(Target.Row, ber.Column + ber.Columns.Count - 1))
rw.Font.ColorIndex = 3 'z.B. Leerfarbe
Target.Font.ColorIndex = 6 'z.B. Auswahlfarbe
If Application.CutCopyMode = False Then Application.Calculate
End If
End Sub
Füge nun in ein beliebiges Standardmodul (z.B. Modul1) folgenden Code ein:
Function MarkierWert(Bereich As Range, index As Byte) As Integer
Application.Volatile
For Each c In Bereich.Cells
If c.Font.ColorIndex = index Then MarkierWert = c.Column - Bereich.Column + 1
Next c
End Function
Damit kannst du im Excel an beliebiger Stelle eine Formel wie diese eingeben:
=Markierwert(D4:G4;6)
Der erste Parameter gibt den Bewertungsbereich für eine Zeile an (hier Frage 1). Der zweite Parameter übergibt den gesuchte Colorindex. Als Rückgabewert kommt im Beispiel wieder ein Wert zwischen 1 und 4 raus. Die Formel kannst du wie gewohnt nach unten kopieren.
Vorteil: Du kannst direkt mit dem Ergebnis der Formel weiterrechnen. z.B. über die Formel =WENNFEHLER(WAHL(Markierwert(D4:G4;6);"D";"E";"F";"G");"")
Winziger Nachteil: Dafür ist die im Code verwendete Zeile Application.Volatile zwingend notwendig. Dadurch werden bei jeder Änderung einer Markierung innerhalb des Bewertungsbrereichs sämtliche Formeln die die Formel Markierwert() enthalten neu berechnet. Das kann u.U. bei seeeehr häufigem Verwenden dieser Benutzerformel die Berechnung anderer Formeln verlangsamen. Wirst du aber bei nur 150 Fragen kaum merken. Falls doch verwende Option1 und blende die Hilfsspalte einfach aus.
Viel Spaß und liebe Grüße - Mr. K.