Thema Datum  Von Nutzer Rating
Antwort
26.10.2017 13:41:53 Rainer
NotSolved
26.10.2017 16:41:54 Gast75206
NotSolved
Rot Wenn Font.ColorIndes= 6 dann....
26.10.2017 21:28:08 Gast98997
Solved
02.11.2017 15:00:50 Gast26718
NotSolved

Ansicht des Beitrags:
Von:
Gast98997
Datum:
26.10.2017 21:28:08
Views:
834
Rating: Antwort:
 Nein
Thema:
Wenn Font.ColorIndes= 6 dann....

Hallo Rainer,

vermutlich beziehst du dich damit auf den Thread von Manne vor ein paar Tagen. Lass mich mal wild drauf losraten, was du evtl. wollen könntest.

Nämlich eine Ausgabe im Excel, die anzeigt welches der Symbole markiert ist? Dafür sehe ich zwei mögliche Optionen.

Option 1 - Einfach umzusetzen mit Hilfsspalte.

Erweitere den bestehenden Code wie folgt:

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
26.10.2017 13:41:53 Rainer
NotSolved
26.10.2017 16:41:54 Gast75206
NotSolved
Rot Wenn Font.ColorIndes= 6 dann....
26.10.2017 21:28:08 Gast98997
Solved
02.11.2017 15:00:50 Gast26718
NotSolved