Gruß
M. Ferkaluk
folgende Codezeilen sollten Dir weiterhelfen. Einfach im VBE (Alt+F11) bei
der entsprechenden Arbeitsmappe eintragen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
Select Case Target.Value
Case Is = "Erledigt"
Target.EntireRow.Font.ColorIndex = 15
Case Is = ""
Target.EntireRow.Font.ColorIndex = 1
End Select
End Sub
--
Gruß aus Brandenburg
Tim Brandt
____________________
Excel 2000 SR-1
"Mark Ferkaluk" <m.fer...@tobosys.de> schrieb im Newsbeitrag
news:e5ZtMUS7...@TK2MSFTNGP10.phx.gbl...
Das kriegst Du mit der "Bedingten Formatierung" hin:
- Markiere A2:H2
- Menü "Format | Bedingte Formatierung"
- Formel ist: "=WENN($H$2="Erledigt";1;0)"
- Ein Format vergeben (Grauer Hintergrund)
--
"Es liebs Grüessli" aus der Schweiz
Monika Weber [Microsoft MVP für Excel]
http://www.jumper.ch / http://excel.codebooks.de
Case Is = "Erledigt"
Mein Quelltext sieht so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
Select Case Target.Value
Case Is = "Erledigt"
Target.EntireRow.Interior.ColorIndex = 15
Case Is = ""
Target.EntireRow.Interior.ColorIndex = 0
End Select
End Sub
Was ist nun der Fehler?
Gruß
Mark
"Tim Brandt" <ichbi...@web.de> schrieb im Newsbeitrag
news:ewIMewS...@TK2MSFTNGP10.phx.gbl...
> Danke erstmal! Das funktioniert soweit, [...]
Da nicht für, aber ich glaube ich bin mit meiner Lösung doch etwas über das
Ziel hinaus geschossen (siehe Antwort von Monika Weber, die XL-Bordmittel
sollte man mal betrachten :-) )
> Private Sub Worksheet_Change(ByVal Target As Range)
hier 'on error resume next' eingeben, dann gibt's keine Meldung
> If Application.Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
> Select Case Target.Value
> Case Is = "Erledigt"
> Target.EntireRow.Interior.ColorIndex = 15
> Case Is = ""
> Target.EntireRow.Interior.ColorIndex = 0
> End Select
> End Sub
>
> Was ist nun der Fehler?
>
> Gruß
> Mark
"Mark Ferkaluk" schrieb:
> Danke erstmal! Das funktioniert soweit, aber wenn ich jetzt irgendwo eine
> Zeile lösche kommt ein Fehler bei:
>
> Case Is = "Erledigt"
>
> Mein Quelltext sieht so aus:
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Application.Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
> Select Case Target.Value
> Case Is = "Erledigt"
> Target.EntireRow.Interior.ColorIndex = 15
> Case Is = ""
> Target.EntireRow.Interior.ColorIndex = 0
> End Select
> End Sub
>
> Was ist nun der Fehler?
Abgesehen davon, dass du hier wirklich gut mit den Excel-Bordmittel auskommst,
sollte der Fehler korrekt abgefangen werden und nicht mit On Error Resume Next einach übergangen werden.
Wenn du eine ganze Zeile selektierst beinhaltet Target auch die Spalte H.
Frage gezielt nach Spalte H bzw. 8.
Wenn du meherere Zellen gleichzeitig in Spalte H änderst würdest du ebenfalls eine Fehlermeldung erhalten.
Einfach mit im Code angeben, dass bei einem Mehrfachbereich das Makro verlassen wird.
Oder im Code auf einen Mehrfachbereich entsprechend reagieren.
Du musst auch nicht die ganze Zeile eingrauen, sondern kannst geziehlt deinen Bereich angeben.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 8 Or Target.Count > 1 Then Exit Sub
Select Case (Target.Value)
Case "Erledigt"
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.ColorIndex = 15
Case ""
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.ColorIndex = 0
End Select
End Sub
mit Gruß
Melanie
____________________
Melanie Breden
[Microsoft MVP für Excel]
"Monika Weber" <monika...@mvps.org> schrieb im Newsbeitrag
news:#y3dP1S7...@TK2MSFTNGP10.phx.gbl...
[...]
> - Formel ist: "=WENN($H$2="Erledigt";1;0)"
wenn das Format auf andere Zellen übertragen werden können soll,
den Zeilenbzug relativ angeben:
Formel ist: "=WENN($H2="Erledigt";1;0)"
( oder auch einfach: =$H2="Erledigt" )
mfg Peter
--
MVP für MS-Excel
---------------------------