Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bedingte Formatierung Ampel

Bedingte Formatierung Ampel
Sebastian
Hallo,
ich habe hier einen Code der für mehrere Tabellenblätter (ab Blatt 7) in einem bestimmten Bereich (F2 : letzte genutzte Zelle) wie eine Ampel wirken soll. Vergleichswerte sind D2 und E2ff (also bei F3 z.B. D3 & E3).
Zum Verständnis, D3 ist der Höchstwert und E3 der Mindestwert. Bei überschreiten von D3 und beim unterschreiten von E3 soll rot gelten. Die Range von 10% vom Abstandswert von E3 und D3 soll über E3 bzw. unter D3 gelb anzeigen. Alles in der Mitte soll grün sein. Ich bin mit meinem Code schon etwas vorran gekommen, aber noch funktioniert er nicht wie gewünscht:
Sub Test()
Dim wks As Worksheet
Dim i As Integer
Dim strLC As String
Dim Bereich As Range
For i = 7 To Worksheets.Count
With Worksheets(i).UsedRange
strLC = .Cells(.Rows.Count, .Columns.Count).Address
Set Bereich = .Range("F2:" & strLC)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=""UND(F2>=(D2$-E2$)*0.1+E2$;F2= .FormatConditions.Add Type:=xlExpression, Formula1:= _
"=""ODER(UND(F2=>E2$;F2=D2$-(D2$-E2$)*0.1;F2=
Problem 1: Dieser Code stellt die bedingte Formatierung in den allen Zellen der Tabellenblätter ein. Also nicht nur von F2 bis zur letzten genutzten Zelle.
Problem2: Die Zellen bleiben trotz dem Code weiß. Aber er ist unter bedingte Formatierung hinterlegt.
Problem 3: Wie setze ich die Dollarzeichen so, dass sie bei F3 E3 und D3 nutzen, aber z.B. bei G4 dann E4 und D4. Momentan vergleicht er überall nur mit E2 und D2.
Ich grüble jetzt schon einige Zeit an dem Problem und wäre für Hilfe äußerst dankbar! :)
LG Sebastian

Anzeige
AW: Crosspost MOF gruss owT.
04.09.2012 13:53:01
hary
.

Zeichne den manuellen Eintrag des BedFormats ...
04.09.2012 15:41:32
Luc:-?
…mit dem Recorder auf, Sebastian,
dann bist du ein Stück weiter, denn du kannst den Kauderwelsch-Fehler besser erkennen! Sieht nämlich so aus, als ob du das irgendwo (verstümmelt) kopiert bzw hier verstümmelt einkopiert hättest. So würde das jedenfalls gar nicht laufen! Außerdem trägst du nur einen VglsText als Fml ein, keine Fml, was man an "=""…""" erkennen kann.
Gruß Luc :-?

Anzeige
AW: Zeichne den manuellen Eintrag des BedFormats ...
04.09.2012 15:57:32
Sebastian
Eine solide Lösung mit dem Recorder sieht so aus:
Sub Test()
Range("F2").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER($D2=0;F2=0);1;0)"
Selection.FormatConditions(1).Interior.Pattern = xlNone
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER(UND(F2>=$E2;F2=($D2-($D2-$E2)*0,1);F2=(($D2-$E2)*0,1+$E2);F2
Dann funktionierts aber nur für eine Zelle. Wie schaffe ich es, dass der Code ab Tabellenblatt 7 in allen Sheets von Zelle F2 bis zu der letzten genutzten Zelle klappt? Daher der Ansatz oben. Eine VBA Lösung wäre wünschenswert, da die Tabellen jeden Tag komplett neu generiert werden.
LG
Sebastian

Anzeige
Na, das sieht ja schon besser aus! Viell ...
04.09.2012 16:08:15
Luc:-?
…findet sich ja so eher jemand in einem der 2 (oder gar noch mehr) Foren, in denen du deine Frage ohne Verweis auf das jeweils andere Forum gestellt hast, der dir weiterhelfen kann bzw will. ;->
Du solltest wissen, dass viele AWer in mehreren Foren unterwegs sind, so wird so etwas idR schnell bemerkt und ausgerechnet das MOF ist da eigentl besonders rigide. In den Forumshinweisen des hiesigen Betreibers wird dieses Thema allerdings auch erwähnt. Solltest du mal lesen!
Luc :-?

Anzeige
AW: Na, das sieht ja schon besser aus! Viell ...
04.09.2012 16:21:07
Sebastian
Ja, sorry. Bin noch nicht lang in diesen Foren unterwegs. Hab heute auch erst erfahren was ein "Crosspost" ist. Aber wenn halt über Stunden keine Antwort kommt, was soll ich machen?
Wenn ich mir selbst helfen könnte, würd ichs ja nicht posten. Zumal ich falls ich eine Lösung im MOF bekommen würde sie ja auch hier anschließend kundtun würde...warum hat man sich da so eckig. Ich machs ja wie gesagt nur, weil ich woanders keine Antwort bekomme.

Anzeige
AW: Na, das sieht ja schon besser aus! Viell ...
04.09.2012 16:39:12
Rudi
Hallo,
teste mal:
Sub Test()
Dim iWks As Integer, lngRow As Long, lngColumns As Long
For iWks = 7 To Worksheets.Count
With Worksheets(iWks)
.Range("F2").Copy
.Range("F2").PasteSpecial xlPasteFormats
With .UsedRange
lngRow = .Rows.Count
lngColumns = .Columns.Count
End With
With .Range(Cells(2, 6), .Cells(lngRow, lngColumns).Interior)
.ColorIndex = 3
.Pattern = xlSolid
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER($D2=0;F2=0);1;0)"
.FormatConditions(1).Interior.Pattern = xlNone
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER(UND(F2>=$E2;F2=($D2-($D2-$E2)*0,1);F2=(($D2-$E2)*0,1+$E2);F2

Gruß
Rudi

Anzeige
AW: Na, das sieht ja schon besser aus! Viell ...
04.09.2012 16:48:08
Sebastian
Hallo Rudi,
vielen Dank für deine Hilfe. Aber er meckert noch.
Bei der Zeile: "With .Range(Cells(2, 6), .Cells(lngRow, lngColumns).Interior)"
sagt er Laufzeitfehler 1004, Anwendungs- oder objektorientierter Fehler.
Was könnte da noch falsch sein?
LG
Sebastian

Anzeige
siehe Korrektur owT
04.09.2012 16:49:00
Rudi

Korrektur
04.09.2012 16:46:29
Rudi
Sub Test()
Dim iWks As Integer, lngRow As Long, lngColumns As Long
For iWks = 7 To Worksheets.Count
With Worksheets(iWks)
.Range("F2").Copy
.Range("F2").PasteSpecial xlPasteFormats
With .UsedRange
lngRow = .Rows.Count
lngColumns = .Columns.Count
End With
With .Range(.Cells(2, 6), .Cells(lngRow, lngColumns))
With .Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER($D2=0;F2=0);1;0)"
.FormatConditions(1).Interior.Pattern = xlNone
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER(UND(F2>=$E2;F2=($D2-($D2-$E2)*0,1);F2=(($D2-$E2)*0,1+$E2);F2

Anzeige
AW: Korrektur
04.09.2012 16:58:41
Sebastian
Leider immer noch nicht ganz, jetzt meckert er hier:
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=WENN(ODER(UND(F2>=$E2;F2=($D2-($D2-$E2)*0,1);F2 über Laufzeitfehler 5. Ungültiger Prozeduraufruf oder ungültiges Argument...

AW: Korrektur
04.09.2012 17:00:54
Sebastian
Sorry, muss jetzt weg vom Rechner. Danke auf jeden Fall schon mal für deine Hilfe. Melde mich morgen hier wieder, ob es klappt.
LG Sebastian

Anzeige
AW: Korrektur
04.09.2012 19:10:27
Rudi
Hallo,
mach mal aus dem § ein $
"=WENN(ODER(UND(F2>=$E2;F2=($D2-($D2-$E2)*0,1);F2§D2));1;0)"
Gruß
Rudi

AW: Korrektur
05.09.2012 09:03:34
Sebastian
Hallo Rudi,
oh, da hätte ich eigentlich auch selbst drauf kommen können. Aber in jedem Fall hast du mich gerettet. Es funktioniert jetzt. Tausend Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige