ich habe schon viel auf diesem Forum recherchiert und gelernt. Nun stehe ich vor einer Herausforderung, die ich selbst nicht lösen kann.
Ich möchte Zellen mittels VBA einfärben, wenn gewisse Bedingungen erfüllt sind, bzw. wenn sich Werte außerhalb von Bezugsgrenzen befinden.
Mit der bedingten Formatierung habe ich ausreichend Erfahrung, möchte diese aber aufgrund mehrerer Probleme nicht anwenden. Gründe sind: Dateien werden sehr langsam, wenn diese großflächig (große Dateien mit vielen Tabellenblättern; zB 10 Tabellenblätter mit 30 Spalten und 5000 Zeilen) angewendet und immer wieder verselbstständigt sich eine Formatierung (zB beim Runterkopieren werden anstatt einem Bezugsbereich zwei erstellt oder Zellen werden einfach nicht formatiert, obwohl alles korrekt eingestellt ist).
Nun habe ich schon viele Codes aus dem Netz probiert und adaptiert, aber eine korrekte Einfärbung bekomme ich nicht hin.
Meine konkreten Aufgabenstellungen:
Codes sollten alle in Private Sub Worksheet_Change(ByVal Target As Range) eingefügt werden
alle Zellen eines Arbeitsblattes werden bei Inhalt pos, inf x mit der RGB Farbe (255,114,86) eingefärbt; falls das für ein ganzes Arbeitsblatt nicht möglich ist, dann für mehrere Spalten
einfärben von Werten in der Spalte K, die sich nicht zwischen zwei absoluten Werten in der Spalte (zB in Zelle K6 und K5) befinden.
Einfärben von Werten in einer Spalte (L), die kleiner sind als ein absoluter Bezugswert in der gleichen Spalte zB Beispiel Wert in L8
Einer der konkreten Codes, welche ich mehrfach versucht habe anzupassen (Code funktioniert, jedoch kann ich den Range nicht erweitern):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, Bereich As Range
Set Bereich = Intersect(Target, Range("A1:A16"))
If Not Bereich Is Nothing Then
For Each Zelle In Bereich
Select Case Zelle.Offset(0, 1 - Zelle.EntireColumn.Column).Text
Case Is = "pos"
Zelle.Interior.Color = RGB (255, 114, 86)
Case Is = "inf"
Zelle.Interior.Color = RGB (255, 114, 86)
Case Is = "x"
Zelle.Interior.Color = RGB (255, 114, 86)
Case Else
Zelle.Interior.ColorIndex = xlColorIndexNone
End Select
Next Zelle
End If
End Sub
Vielen Dank für eure Hilfe im Voraus, ich würde mich sehr über eine Lösung der Herausforderung freuen.