Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Hintergrundfarbe formatieren





Frage

Hallo, Ich habe eine Tabelle mit folgenden Vorgaben: Zelle A1=Nr Zelle B1=Bearbeiter Zelle C1=Erhalten am Zelle D1=Vorgang Zelle E1=Notzigen Zelle F1=Erledigt am Nun möchte ich die Hintergrundfarbe aller Zellen z. B. automatisch auf rot setzen wenn in B1 PH eingegeben wurde. Über die Einstellung "Format - Bedingte Formatierung" sind leider nur drei Formate machbar - ich brauche aber vier! Außerdem möchte ich ja auch den Hintergrund z. B. von D1 auf rot setzen, auch wenn dort ganz normaler Text eingegeben wird. Ist sowas machbar???? Wenn ja - WIE ????????? Herzlichen Dank schonmal

Antwort 1 von coros

Nabend Petra,

das kann man mit VBA realisieren. Dazu habe ich auf meiner HP in der Rubrik Beispieldateien und dort dann das Beispiel 2 eine entsprechende Beispieldatei. Schau Dir das mal an. Bei Fragen dazu oder bei Problemen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Petra65

Hallo,
die genannte HP ist wirklich super - das VB Makro funktioniert soweit auch super gut, allerdings habe ich ein Problem damit.

Der Zellbereich, der die Hintergrundfarbe ändern soll, soll von A2:H2 gehen (A1:H1 enthalten die Beschriftungen).
Aber sobald ich in B2 z. B. "PH" eingebe und mit der TAB-Taste weitergehe ändert sich die Hintergrundfarbe bei A1:H1 (also im Beschriftungsbereich).
Wenn ich die ENTER-Taste benutze funktioniert es einwandfrei!!

Ist es außerdem möglich zu bestimmen dass sich der Hintergrund nur ändern soll wenn in B2 z. B. "PH" eingegeben wird, da es sein kann, dass in H2 nochmals "PH" auftaucht.

Herzlichen Dank nochmals und viele Grüße
Petra

Antwort 3 von Petra65

Anbei nochmals der Code den ich verwende:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub ´Wenn mehr als eine Zelle markiert wurde dann Makro beenden
Select Case Target.Value
Case "EF"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 36
Case "BH"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 35
Case "PH"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 38
Case "AB"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 40
Case Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End Select
End Sub

Antwort 4 von coros

Nabend Petra,

nachfolgender Code färbt die Zellen bei Eingabe der Buchstaben PH nur dann, wenn die Buchstaben in B2 eingegeben werden. Bei Eingabe der Buchstaben in einer anderen Zelle, werden bei keiner Zelle die Hintergrundfarbe geändert. Kopiere den Code in das VBA Projekt der Tabelle, in der die zelle eine andere Farbe annehmen sollen.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case "EF"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 36
Case "BH"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 35
Case "PH"
If Target.Address = "$B$2" Then
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 38
Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End If
Case "AB"
Range(Cells(ActiveCell.Row - 1, 2), Cells(ActiveCell.Row - 1, 8)).Interior.ColorIndex = 40
Case Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End Select
End Sub


Zu der Frage mit der Tabulatortaste habe ich ehrlich gesagt im Moment keine Antwort, da ich das bis jetzt noch gar nicht wußte, dass der Code bei Betätigen der Tabtaste nicht ausgeführt wird. Das Ereignis, das eintreten muss, damit der Code ausgeführt werden kann ist eine Änderung in einer Zelle. Ich kann mir im Moment nur das Vorstellen, dass das Betätigen der Tabtaste kein Änderungsereignis hervorruft, die Entertaste aber schon. Aber ich werde mal schauen, ob ich dazu noch eine Lösung finde. Wenn ich sie finde, oder zumindest eine Antwort darauf, werde ich das hier hinschreiben.

Solltest Du mit obigen Code Probleme oder noch Fragen dazu haben, dann melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von coros

Moin Petra,

eventuell hätte ich Deinen Letzten Beitrag mal etwas intensiver lesen sollen, dann hätte ich den letzten Beitrag gar nicht erst geschrieben, jedenfalls nicht so. Nachdem ich ihn mir nochmals genaustens durchgelesen habe, habe ich verstanden, was Du meinst. Wenn die Tab-Taste benutzt wird, werden immer die Zellen oberhalb der eingegebenen Buchstaben in der Farbe geändert. Das hatte ich falsch verstanden, ich dachte es würde überhaupt nicht funktionieren. Nachdem ich aber weder bei Excel97, noch bei Excel2000 und 2002 dieses Nachvollziehen konnte, habe ich mir dann doch noch mal Deinen Beitrag zu gemüte geführt und jetzt auch verstanden. Naja, bei uns Berlinern dauerts halt alles etwas länger. ;-)
Das Problem liegt darin, dass in der Range Anweisung immer von der aktuellen Zeileadresse die Zahl 1 abgezogen wird, da ich beim Erstellen immer von der Returntaste ausgegangen bin. Da Du die Tabtaste benutzen willst, muss vorher der aktuelle Zeilenindex gespeichert werden, damit der Code sowohl mit Return- als auch mit der Tabtaste funktioniert. Kopiere daher bitte den folgenden Code in das VBA Projekt Deiner Tabelle.

Public Aktive_Zeile As Long
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case "EF"
Range(Cells(Aktive_Zeile, 2), Cells(Aktive_Zeile, 8)).Interior.ColorIndex = 36
Case "BH"
Range(Cells(Aktive_Zeile, 2), Cells(Aktive_Zeile, 8)).Interior.ColorIndex = 35
Case "PH"
If Target.Address = "$B$2" Then
Range(Cells(Aktive_Zeile, 2), Cells(Aktive_Zeile, 8)).Interior.ColorIndex = 38
End If
Case "AB"
Range(Cells(Aktive_Zeile, 2), Cells(Aktive_Zeile, 8)).Interior.ColorIndex = 40
Case Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Aktive_Zeile = ActiveCell.Row
End Sub


Hier wird durch das SelectionChange-Ereignis die gerade aktive Zeilenindexnummer gespeichert . Dieser gespeicherte Wert wird dann in der Range-Anweisung in dem Change_Ereignis benutzt.

Danke Dir übrigens dass Du mit der Tabtaste arbeitest und den dadurch auftretenden Fehler hier gemeldet hast. Ich werde die Beispieldatei so wie oben beschrieben dahingehend abändern, damit die Zellen immer in der richtigen Zeile die Farbe ändern.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von coros

Hi Petra,

ich noch mal. Ich glaube, das war heute morgen noch zu früh, um eine Lösung hier hin zu schreiben. Jedenfalls war ich anscheinend blind. Vergiss den Code und nimm den nachfolgenden. Der von heute morgen funktioniert zwar auch, ist aber etwas umständlich. Nimm also lieber den Neuen.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case "EF"
Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.ColorIndex = 36
Case "BH"
Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.ColorIndex = 35
Case "PH"
If Target.Address = "$B$2" Then
Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.ColorIndex = 38
End If
Case "AB"
Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.ColorIndex = 40
Case Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End Select
End Sub


So, von meiner Seite aus ist der Thread jetzt beendet.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Petra65

Hallo,

das finde ich aber super, super nett, dass sich hier jemand die Mühe macht Fragen so "unter die Lupe" zu nehmen!!!!

Vielen, vielen Dank

Werde das nun mal ausprobieren!!

Gruss
Petra

Antwort 8 von AdWei

Hi coros,

deine Hp ist echt geil!!!

mit der hintergrund farbe habe ich fragen:
1.) Muss man buchstaben benutzen???
2.) kann man kombinieren??? das heist wenn eine zahl kleiner ist als 0 dann schwarze Hfarbe und weisse Tfarbe

VBA ist völlig neu für mich, deshalb danke im voraus

MfG

AdWei

Antwort 9 von coros

Hallo AdWei,

danke für das Lob.

Ja, das geht. Zahlen und Buchstaben kann man kombinieren. Man schreibt dann z.B. die Zahl und den Buchstaben zwischen die beiden Anführungszeichen, z.B. "U1".
Für Deine Frage wenn ein Wert kleiner dem Wert 0 ist würde die Select-Anweisung wie folgt aussehen:

Case Is < 0
Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.ColorIndex = 3


Hier wird wenn die eingetragene Zahl kleiner 0 ist der Bereich B:H rot gefärbt.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: