Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
Zellen schneller farbig markieren
21.09.2023 15:47:56
Chris
Hallo Forum,

mit untenstehendem Makro färbe ich Zellen mit bestimmten Inhalten in Spalte L. Das funktioniert soweit gut. Da es ein großer Bereich ist, dauert es ein wenig, bis alle relevanten Zellen gefärbt sind.

Kann man dies beschleunigen?

Gruß
Chris



' grün
For Each zelleA In .Range("H2:H50")
For iA = 3 To 700
Select Case .Cells(iA, "H")
Case Is = "Apfel"
.Cells(iA, "H").Interior.Color = RGB(0, 255, 0)
End Select
Next iA
Next zelleA

'blau
For Each zelleB In .Range("L2:H50")
For iB = 3 To 700
Select Case .Cells(iB, "H")
Case Is = "Bananen"
.Cells(iB, "H").Interior.Color = RGB(0,0,255)
End Select
Next iB
Next zelleB

End With

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen schneller farbig markieren
21.09.2023 16:08:04
daniel
HI
als erstes löschst du mal die Überflüssigen Schleifen.
die beiden For-Each-Schleifen mit ZelleA und ZelleB sind nutzlos und führen nur dazu, dass die inneren Schleifen mehrfach wiederholt werden und immer wieder dasselbe tun, wo einmal reicht.
überflüssige Schleifen erkennst du immer daran, dass die Schleifenzähler (ZelleA, ZelleB) dann in der Schleife nie zum Einsatz kommen.
wenn du mal die Zellen zusammenzählst, wirst du erkennen, dass dein Makro c.a. 300x mehr arbeiten muss als eigentlich erforderlich.

auch die beiden inneren Schleifen kannst du zu einer zusammenfassen:
for i = 3 to 700

Select Case .Cells(i, "H").value
Case "Apfel": .Cells(i, "H").Interior.Color = RGB(0, 255, 0)
Case "Bananen": .Cells(i, "H").Interor.Color = RGB(0, 0, 255)
Case Else
end Select
next


die nächste Frage wäre, warum du nicht einfach eine Bedingte Formatierung einrichtest.

Gruß Daniel
Anzeige
AW: Zellen schneller farbig markieren
21.09.2023 17:25:01
Chris
Hallo Daniel,

Danke für die Hinweise! Jetzt läuft es schnell!

Gruß
Chris
AW: Zellen schneller farbig markieren
21.09.2023 16:13:43
onur
Wieso nimmst du keine bedingte Formatierung? Je eine für jedes Wort/Farbe. Da brauchst du gar kein VBA.
Ausserdem: "mit untenstehendem Makro färbe ich Zellen mit bestimmten Inhalten in Spalte L. " ? Du färbst Zellen in Spalte H und nicht in Spalte L.
AW: Zellen schneller farbig markieren
21.09.2023 17:01:56
Ulf
Hi Chris,
kann da keine Notwendigkeit für 700 erkennen, wenn es 48 sind und Max 245 sein könnten, sofern L2 mit einbezogen wäre.


Public Sub farbe()
Dim rg As Range
'Fehlt uns....
'ThisWorkbook.Worksheets(1) ersetzen mit deiner Zuweisung
For Each rg In ThisWorkbook.Worksheets(1).Range("H2:H50").Cells
With rg
If .Value = "Bananen" Then
.Interior.Color = vbYellow
ElseIf .Value = "Apfel" Then
.Interior.Color = vbGreen
End If
End With
Next
End Sub

hth
Ulf
Anzeige
AW: Zellen schneller farbig markieren
21.09.2023 20:55:10
Piet
Hallo

ich weiss nicht ob bei 15000 Zeilen die Find Methode schneller ist?? Einfach mal ausprobieren.
Würde mich interessieren ob For Next oder Find schneller ist???

mfg Piet

  • Sub Zellen_Färben()
    Dim rfind As Range, Adr1 As String
    .Columns("H").Interior.Color = xlNone 'alte Markierungen löschen
    Set rfind = .Columns("H").Find(What:="Apfel", After:=.[h1], LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
    If Not rfind Is Nothing Then
    Adr1 = rfind.Address
    Do
    rfind.Interior.Color = RGB(0, 255, 0)
    Set rfind = .Columns("H").FindNext(rfind)
    Loop Until rfind.Address = Adr1
    End If

    Set rfind = .Columns("H").Find(What:="Bananen", After:=.[h1], LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
    If Not rfind Is Nothing Then
    Adr1 = rfind.Address
    Do
    rfind.Interior.Color = RGB(0, 0, 255)
    Set rfind = .Columns("H").FindNext(rfind)
    Loop Until rfind.Address = Adr1
    End If
    End Sub
  • Anzeige
    AW: Zellen schneller farbig markieren
    21.09.2023 17:27:00
    Chris
    Hallo Ulf,

    700 war ein Beispiel. Real sind es an die 1500 Zeilen.

    habe deine Variante umgesetzt und es läuft ebenfalls schnell.

    Gruß
    Chris

    309 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige