![]() |
Betrifft: wenn das dann die schriftfarbe ändern
von: Falo
Geschrieben am: 09.10.2014 13:01:31
Hallo,
ich möchte wenn in der Spalte, "T" ein F steht das die Schriftfarbe in der gleichen Zeile "J" Schwarz ist. wenn S steht Blau ist, wenn N steht Rot ist. kann mir einer einen Tipp geben, es soll keine Formel sein.
Mit freundlichen Grüßen aus dem Sauerland
Olaf
![]() ![]() |
Betrifft: AW: wenn das dann die schriftfarbe ändern
von: Daniel
Geschrieben am: 09.10.2014 13:14:21
Hi
Da musst du für die Spalte J drei bedingte Formatierungen anlegen (reicht ja) mit regel:
rot: =$T1="N"
blau: =$T1="S"
für schwarz brauchst du keine Regel, weil Schwarz ja normalerweise die Standardfarbe ist.
nur wenn die normale Farbe nicht schwarz ist, käme halt noch die 3. Regel mit
schwarz: =$T1="F"
ohne Formeln wirst du nicht auskommen, weil die Farbe der Zelle nicht durch den Wert in der Zelle selbsts sondern durch den Wert einer anderen Zelle bestimmt wird und das kann Excel nur über Formeln realisieren.
Gruß Daniel
![]() ![]() |
Betrifft: AW: wenn das dann die schriftfarbe ändern
von: Adis
Geschrieben am: 09.10.2014 13:45:25
Hallo
wenn es keine Formel sein soll geht die Farb Auswertung nur per Makro. Anbei 2 Beispiele.
Der Unterschied liegt in Einzel Auswertung oder varrangig und ausschliessend auswerten,
wenn in dem Text 2 oder 3 Buchstaben vorkommen. z.B. T, S, N gemeinsam in einer Zelle.
Dann macht sich der Unterschied beim markieren bemerkbar. Welcher Buchstabe hat Vorrang?
Aus der Aufgabenstellung war auch nicht ersichtlich ob es immer Grossbuchstaben sind?
Ob sie mitten im Text vorkommen, oder am Anfang stehen? Das kann man berücksichtigen.
Mein Vorschlag ist somit eine Standard Lösung wie es grundsaetzlich machbar ist.
Das Ergebnis sollte ja die Zellen in Spalte "J" markieren, oder ??
Sub Schriftfarbe_aendern_Standard() Dim i as Variant For Each i In Columns("T") 'Farbeaenderung mit Einzel Auswertung If InStr(i, "F") Then Cells(i.Row, "J").Font.ColorIndex = 1 If InStr(i, "S") Then Cells(i.Row, "J").Font.ColorIndex = 5 If InStr(i, "N") Then Cells(i.Row, "J").Font.ColorIndex = 3 'die letzte Auswertung überschreibt vorherige Aenderungen !! Next i End Sub
Sub Schriftfarbe_vorrangig_aendern() Dim i as Variant For Each i In Columns("T") 'Farb Auswertung im Ausschluss Verfahren (vorrangig) If InStr(i, "N") Then Cells(i.Row, "J").Font.ColorIndex = 3 ElseIf InStr(i, "S") Then Cells(i.Row, "J").Font.ColorIndex = 5 ElseIf InStr(i, "F") Then Cells(i.Row, "J").Font.ColorIndex = 1 End If Next i End SubGruss Adis
![]() ![]() |
Betrifft: AW: wenn das dann die schriftfarbe ändern
von: Falo
Geschrieben am: 09.10.2014 15:50:08
Hallo Adis,
Danke für deine Tipps, ich bekomme bei beiden Makros eine Fehlermeldung VBA-Laufzeitfehler 13 Typen unverträglich. Was kann das sein.
Mit freundlichen Grüßen aus dem Sauerland
Olaf
![]() ![]() |
Betrifft: AW: wenn das dann die schriftfarbe ändern
von: Falo
Geschrieben am: 09.10.2014 16:29:37
Hallo Adis,
Danke ich werde es anders regeln.
Mit freundlichen Grüßen aus dem Sauerland
Olaf
![]() ![]() |
Betrifft: Deine For Each Zyklen sind ungeschickt ...
von: Luc:-?
Geschrieben am: 09.10.2014 18:48:44
…konstruiert, adis,
denn sie nutzen den Vorteil dieses ZyklusTyps nicht wirklich und es fehlt auch was. Außerdem ist die AuswahlMethode ungünstig. Für den jeweils alleinigen Zellwert F/S/N besser so:
Dim xZ As Range For Each xZ In Columns(20).Cells 'Farbänderung mit EinzelAuswertung Select Case xZ Case "F": xZ.Offset(0, -10).Font.Color = vbBlack Case "S": xZ.Offset(0, -10).Font.Color = vbBlue Case "N": xZ.Offset(0, -10).Font.Color = vbRed End Select 'die letzte Auswertung überschreibt vorherige Änderungen !! Next xZFalls auch auf jedes F/S/N in einem beliebigen Text reagiert wdn soll, muss die Case-Anweisung Case Like "*F*" lauten.
![]() ![]() |
Betrifft: AW: Deine For Each Zyklen sind ungeschickt ...
von: Falo
Geschrieben am: 09.10.2014 19:45:27
Hallo,
Dank klapp jetz SUPER
Gruß Olaf
![]() ![]() |
Betrifft: Na, dann iss ja jut...! owT
von: Luc:-?
Geschrieben am: 09.10.2014 20:47:09
:-?
![]() |