Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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
Formatierung VBA, Zellen einfärben
21.07.2023 11:30:23
Christine
Liebe Forumsteilnehmer,
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.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung VBA, Zellen einfärben
21.07.2023 12:31:53
GerdL
Hallo Christine,

probier mal.
Private Sub Worksheet_Change(ByVal Target As Range)


    Dim Zelle As Range, MIN As Double, LOWER As Double, UPPER As Double
    
    LOWER = Range("K5").Value
    UPPER = Range("K6").Value
    MIN = Range("L8").Value
    
    
    For Each Zelle In Target
        With Zelle
        Select Case .Text
            Case Is = "pos"
                .Interior.Color = RGB(255, 114, 86)
            Case Is = "inf"
                .Interior.Color = RGB(255, 114, 86)
            Case Is = "x"
                .Interior.Color = RGB(255, 114, 86)
            Case Else
                .Interior.ColorIndex = xlColorIndexNone
        End Select
        If .Column = 11 Then
            If Intersect(.Cells, Range("K5:K6")) Is Nothing Then
                If .Value > LOWER And .Value  UPPER Then
                   .Interior.ColorIndex = 44
                Else
                   .Interior.ColorIndex = xlColorIndexNone
                End If
        ElseIf .Column = 12 Then
               If Intersect(.Cells, Range("L8")) Is Nothing Then
                  If .Value  MIN Then
                     .Interior.ColorIndex = 5
                  Else
                   .Interior.ColorIndex = xlColorIndexNone
                  End If
              End If
        End If
    Next Zelle


End Sub
Gruß Gerd

Anzeige
AW: Formatierung VBA, Zellen einfärben
21.07.2023 12:51:48
GerdL
Über Next Zelle fehlt End With.

AW: Formatierung VBA, Zellen einfärben
21.07.2023 12:45:28
UweD
Hallo

das musst du in 3 Teilaufgaben unterbringen.
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Zelle As Range, Bereich As Range
    
    'Aufgabe1
    For Each Zelle In Target
        Select Case Zelle.Value
        Case "pos", "inf", "x"
            Zelle.Interior.Color = RGB(255, 114, 86)
        
        Case Else
            Zelle.Interior.ColorIndex = xlColorIndexNone
        End Select
    Next Zelle
    
    'Aufgabe2
    If Not Intersect(Target, Columns(11)) Is Nothing Then ' Nur Spalte K
        For Each Zelle In Target
            If Zelle.Row > 6 And IsNumeric(Zelle) Then
                If Abs(Zelle) >= Range("K5") And Abs(Zelle) = Range("K6") Then
                    Zelle.Interior.Color = RGB(255, 114, 86)
                Else
                    Zelle.Interior.ColorIndex = xlColorIndexNone
                End If
            End If
        
        Next

    End If

    'Aufgabe3
    If Not Intersect(Target, Columns(12)) Is Nothing Then ' Nur Spalte L
        For Each Zelle In Target
            If Zelle.Row > 8 And IsNumeric(Zelle) Then
                If Abs(Zelle)  Range("L8") Then
                    Zelle.Interior.Color = RGB(255, 114, 86)
                Else
                    Zelle.Interior.ColorIndex = xlColorIndexNone
                End If
            End If
        
        Next

    End If

End Sub
LG UweD

Anzeige
AW: Formatierung VBA, Zellen einfärben
08.08.2023 19:23:49
Hallo,
der Code zum Einfärben aller Zellen im Blatt bei bestimmten Fällen ( Code unterbei) den ich erhalten habe funktioniert super! Ein kleines, für mich unlösbares Detail habe ich noch zu klären.
Wenn die drei beschriebenen Fälle nicht eintreten, sollte die Zelle nicht farblos werden sondern einfach die ursprüngliche Farbe beibehalten; also überhaupt nicht formatiert werden. Was kann ich anstatt dem "Zelle.Interior.ColorIndex = xlColorIndexNone" als Case else einfügen?
Danke vorab!


Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zelle As Range, Bereich As Range

For Each Zelle In Target
Select Case Zelle.Value
Case "pos", "inf", "x"
Zelle.Interior.Color = RGB(255, 114, 86)

Case Else
Zelle.Interior.ColorIndex = xlColorIndexNone
End Select
Next Zelle
Anzeige
AW: Formatierung VBA, Zellen einfärben
08.08.2023 20:46:25
daniel
nix,
diese Zeile einfach weglassen.
das "Case Else" muss natürlich bleiben.

Select Case Zelle.Value

Case "pos", "inf", "x"
Zelle.Interior.Color = RGB(255, 114, 86)
Case Else
End Select

gruß Daniel
AW: Formatierung VBA, Zellen einfärben
21.07.2023 13:07:38
Daniel
Hi
wenn das ganze auf jedem Tabellenblatt laufen soll, dann kannst du das Makro auch im Modul DieseArbeitsmappe als
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
erstellen. Dann musst du es nur einmal schreiben und es gilt für jedes Tabellenblatt der Mappe.

Wie du die einzelnen Aufgaben dann abarbeitest, haben die Kollegen schon gezeigt.

Beachte, dass das Change-Event nur dann reagiert, wenn der Anwender in einer Zelle einen Wert oder die Formel selbst von Hand ändert.
Ergibt sich in einer bestehenden Formel aufgrund einer Neuberechnung ein anderes Ergebnis, so wird diese Zelle nicht im Target von Change aufgeführt.

Gruß Daniel

Anzeige
AW: Formatierung VBA, Zellen einfärben
21.07.2023 18:23:05
Christine
Wow, ihr seid ein Wahnsinn! Vielen herzlichen Dank für die Codes und eure Mühe!!!! Ich habe schon mehr als 20 Stunden in die "Formatierung" investiert und es leider nicht hinbekommen. Bin übers Wochenende nicht am Arbeitsplatz, werde aber den ganzen Montag in dieses Projekt investieren und eine Antwort geben, ob es funktioniert hat. Bin schon sehr gespannt.
Ein schönes Wochenende euch & danke vorab nochmals!

AW: Formatierung VBA, Zellen einfärben
24.07.2023 18:22:52
Christine
Hallo,
habe heute die Codes ausprobiert und hab mich sehr gefreut, Aufgabe 1 und 3 sind perfekt gelöst; tun ohne weitere Anpassung was sie sollten.
Bei der Aufgabe 2 funktioniert die "Formatierung" leider noch nicht, habe beide Varianten ausprobiert. Egal welchen wert ich eingebe, es färbt sich nichts.
In Zelle K6 steht zb der Wert 6,65 und in Zelle K5 der Wert 6,85. Eingegebene Werte in der betreffenden Spalte sollten ab K10 eingefärbt werden, wenn sie
entweder
zwischen 0,01 und K6 ist oder K6
oder
zwischen K5 und zB 100 oder >K5.
Habt ihr noch einen Tip für mich?
Danke vorab!
Anzeige
AW: Formatierung VBA, Zellen einfärben
24.07.2023 18:36:06
daniel
es wäre gut, wenn du deine Programmierung zeigen könntest.
denn nur wenn du uns zeigst was du gemacht hast, können wir dir auch sagen, was daran falsch ist.
noch besser ist es, eine Datei hochzuladen die die Daten und den VBA-Code enthält. Denn die korrekte Funktion ergibt sich immer aus dem zusammenspiel aus Daten und Code, und die Fehlerursache liegt nicht immer im Code allein.
Gruß Daniel

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige