Как изменить цвет клеток, если они определенного другого цвета? - PullRequest
0 голосов
/ 25 июня 2019

Я написал короткий макрос для замены ячеек данного цвета на другой цвет в рабочей книге.Этот код не выдает ошибок, однако он просто ничего не делает.

Я уже проверил цветовые коды, чтобы убедиться, что они правильные, используя MsgBox ActiveCell.DisplayFormat.Interior.color

Option Explicit

Sub Recolour()
    Application.ScreenUpdating = False
    Dim Sheet As Worksheet
    Dim Rng As Range
    Dim OldColour As Variant
    Dim NewColour As Variant
    Dim Cell As Range

    Set Rng = ActiveSheet.Range("A1:Y457")
    OldColour = 128
    NewColour = RGB(134, 38, 51)

    For Each Sheet In ThisWorkbook.Worksheets

        For Each Cell In Rng.Cells

            If ActiveCell.DisplayFormat.Interior.Color = OldColour _
                Then _
                Set ActiveCell.DisplayFormat.Interior.Color = NewColour _
            Else

        Next Cell

    Next Sheet

    Application.ScreenUpdating = True

End Sub

Возможно, это что-то простое и глупоеоднако мне нужно спросить.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

DisplayFormat только для чтения. Если вы хотите изменить свойство, вам нужно сбросить DisplayFormat. Кроме того, если вы используете For each Cell, то вам следует обратиться к Cell, а не ActiveCell.

For Each Sheet In ThisWorkbook.Worksheets
    For Each Cell In Rng.Cells
        If Cell.Interior.color = OldColour Then 
            Cell.Interior.color = NewColour
        End if    
    Next Cell
Next Sheet
0 голосов
/ 25 июня 2019

Вам нужно только Set переменные объекта в VBA, ваш оператор if также проблематичен. Попробуйте:

For Each Sheet In ThisWorkbook.Worksheets
    For Each Cell In Rng.Cells
        If ActiveCell.DisplayFormat.Interior.color = OldColour Then 
            ActiveCell.DisplayFormat.Interior.color = NewColour
        End if    
    Next Cell
Next Sheet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...