Hallo zusammen,
ich bin ganz neu hier aber hoffe, dass ihr mir vielleicht trotzdem helfen könntet. Ich habe fast keine VBA-Erfahrung, daher tu ich mir ein wenig schwerer. Habe schon wirklich lange nach einer Lösung gesucht, aber keine hat bei mir bisher funktioniert.
Folgende Voraussetzungen/Ziele habe ich:
- Pro Zeile 5 Werte (nicht nebeneinander)
- Diese 5 Werte pro Zeile sollen mit Hilfe der bedingten Formatierung (Farbskala) eingefärbt werden: grün für den kleinsten Wert, rot für den höchsten Wert und einen Farbverlauf über Gelb bei den drei mittleren Werten
- Mehrere hundert Zeilen insgesamt
Wenn ich in der bedingten Formatierung einfach den Wertebereich ändere, dann werden halt die Werte aller Zeilen verglichen und nicht immer nur die Werte einer Zeile. Vielleicht kann man das ja auch irgendwie ändern, dann müsste ich nicht mit Makros arbeiten.
Dann bin ich durch Recherche auf Makros gekommen. Ich dachte, ich erstelle einmal ein Makro, wo ich in einer Zeile den Farbverlauf mache und dann Loope ich das quasi. Also dann ein For-Loop von 1 bis 1000. Aber irgendwie kann ich den Code nicht so abändern, dass die Schleife funktioniert.
Hier mal der Code einer Beispieldatei:
Sub Makro5()
' Makro5 Makro
Range("A1,C1,E1,G1,I1").Select
Range("I1").Activate
Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 192
.TintAndShade = 0
End With
End Sub
So würde ich dann die Schleife einbauen. Meine Änderungen sind fett formatiert.
Sub Makro5()
' Makro5 Makro
Dim i As Long
For i = 1 To 5
Range(Cells(i, 1), Cells(i, 3), Cells(i, 5), Cells(i, 7), Cells(i, 9)).Select
Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 192
.TintAndShade = 0
End With
Next
End Sub
Leider weiß ich nicht, wie ich das .activate mit einer Variable angeben kann. Daher habe ich es gelöscht.
Folgende Fehlermeldung erhalte ich:
Fehler beim Kompilieren.:
Falsche Anzahl von Argumenten oder ungültige Eigenschaftenzuweisung.
Danke für eure Hilfe. Wenn es ohne Makro geht freue ich mich, obwohl mich die richtige Lösung mit dem Loop doch auch sehr interessieren würde. Vielen Dank!