Есть ли более быстрый способ зацикливания с ColorCounter в Excel VBA? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть код lColorCounter, который работает, но он медленный. Есть ли более быстрый способ зацикливания с помощью lColorCounter?

  Dim rng As Range
Dim lColorCounter As Long
Dim rngCell As Range
Set rng = Sheets("MASTER LINE LIST").Range("C2:Z2000")
lColorCounter = 0
    For Each rngCell In rng
    'Checking BLUE color
        If Cells(rngCell.Row, rngCell.Column).DisplayFormat.Interior.Color = RGB(0, 176, 240) Then
            lColorCounter = lColorCounter + 1
        End If
    Next
Sheets("Status").Range("C5") = lColorCounter
lColorCounter = 0
    For Each rngCell In rng
    'Checking Yellor color
        If Cells(rngCell.Row, rngCell.Column).DisplayFormat.Interior.Color = RGB(255, 255, 0) Then
            lColorCounter = lColorCounter + 1
        End If
    Next
Sheets("Status").Range("B5") = lColorCounter

1 Ответ

0 голосов
/ 25 октября 2019

Один цикл:

Dim rng As Range
Dim bColorCounter As Long
Dim yColorCounter As Long
Dim rngCell As Range
Set rng = Worksheets("MASTER LINE LIST").Range("C2:Z2000")
bColorCounter = 0
yColorCounter = 0
    For Each rngCell In rng
    'Checking BLUE color
        If rngCell.DisplayFormat.Interior.Color = RGB(0, 176, 240) Then
            bColorCounter = bColorCounter + 1
        ElseIf rngCell.DisplayFormat.Interior.Color = RGB(255, 255, 0) Then
            yColorCounter = yColorCounter + 1
        End If
    Next
Sheets("Status").Range("C5") = bColorCounter
Sheets("Status").Range("B5") = yColorCounter
...