Очистить все ячейки, которые не имеют цвета - PullRequest
0 голосов
/ 06 апреля 2020

У меня большая таблица (100 столбцов * 1000 строк), и некоторые ячейки в этой таблице заполнены разными цветами (красный, желтый, синий, оранжевый и другие цвета). Я хочу очистить все выделенные ячейки, которые не имеют цветов. Я написал простой макрос, который подойдет для маленькой таблицы, но для большой таблицы вычислительная мощность падает, и если в одном диапазоне выбрано несколько цветных ячеек, ячейки не очищаются. Как можно уменьшить время очистки таблицы и исправить ошибку, когда указанная область имеет разные цвета?

Sub ClearData()
For Each cell in Selection
If cell.Interior.ColorIndex = xlNone Then
cell.ClearContents
End If
Next cell
MsgBox "Done!"
End Subs

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020
Sub ClearData()

    Dim Cell As Range
    Dim URng As Range

    For Each Cell In Selection
        If Cell.Interior.ColorIndex = xlNone Then GoSub UnionRange
    Next

    If Not URng Is Nothing Then URng.ClearContents: MsgBox "Done!"

Exit Sub

UnionRange:

    If Not URng Is Nothing Then
        Set URng = Union(URng, Cell)
    Else
        Set URng = Cell
    End If
    Return

End Sub
0 голосов
/ 06 апреля 2020

Попробуйте этот код

Sub ClearData()
Dim c As Range, r As Range

Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Sheet1")
        For Each c In .Range("A1").CurrentRegion
            If c.Interior.ColorIndex = xlNone Then
                If r Is Nothing Then Set r = c Else Set r = Union(r, c)
            End If
        Next c

        If Not r Is Nothing Then r.Cells.Clear
    End With
Application.ScreenUpdating = True

MsgBox "Done...", 64
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...