Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zellen Farben ändern (VBA)

1 view
Skip to first unread message

Mark Ferkaluk

unread,
Mar 18, 2003, 3:10:21 AM3/18/03
to
Hi @ all,
ich steh schon wieder vor einem Problem. Also, ich hab ein Feld, in dem nur
Erledigt stehen kann. Wenn nun in dieses Feld "Erledigt" eingetragen wird,
soll die ganze Zeile Grau werden (von A2 bis H2). Insgesamt sind es 8 Zellen
in einer Zeile und das Erledigt steht in H2 (nach unten hinweg soll keine
Grenze bestehn, d.h. es soll in Zeile 1000 auch noch funktionieren). Ich
hoffe ihr habt mein Problem verstanden.
Danke im voraus

Gruß
M. Ferkaluk


Tim Brandt

unread,
Mar 18, 2003, 3:55:23 AM3/18/03
to
Moin Mark,

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...

Monika Weber

unread,
Mar 18, 2003, 4:03:53 AM3/18/03
to
Hallo Mark,


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

Mark Ferkaluk

unread,
Mar 18, 2003, 4:34:25 AM3/18/03
to
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?

Gruß
Mark

"Tim Brandt" <ichbi...@web.de> schrieb im Newsbeitrag
news:ewIMewS...@TK2MSFTNGP10.phx.gbl...

Tim Brandt

unread,
Mar 18, 2003, 5:11:11 AM3/18/03
to
Moin,

> 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

Melanie Breden

unread,
Mar 18, 2003, 7:48:39 AM3/18/03
to
Hallo 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]

Peter Dorigo

unread,
Mar 18, 2003, 8:03:56 AM3/18/03
to
Hallo Monika

"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
---------------------------

0 new messages