Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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 :-?

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 :-?

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

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

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!
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige