код VBA для поиска всей книги для определенного цвета фона - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я работаю над проектом отчета, в котором есть подотчеты и отчеты о компиляции, все в документе Excel. Всего в нем 45 листов, за исключением листа в виде «приборной панели», листа проверки валидации и двух листов-призраков.

Все вложенные отчеты имеют собственную проверку данных в определенных ячейках с условным форматированием, которое сделает ячейку красной (RGB 192,0,0), если пользователь поместит в нее неправильные данные.

Проблема, с которой я столкнулся, состоит в том, что сумма 2 неправильных данных на одном листе может сделать данные правильными. Но это не так.

Единственный способ, который, как я думал, может помочь мне предотвратить это, - это поиск по всем ячейкам в рабочей книге, если какой-либо из них станет красным. и мне нужен код, чтобы по возможности автоматически перечислять листы с ячейками в листе проверки. Заранее спасибо.

Обновление

Файл , над которым я работаю

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Попробуйте это хорошее начало:

Option Explicit

Sub Test()

    Dim cell As Range

    For Each cell In Worksheets("Sheet1").UsedRange '<= Search all usedrange cell by cell
        If cell.DisplayFormat.Interior.Color = RGB(192, 0, 0) Then
            Debug.Print cell.Address '<= if the cell has the color mentioned above will print it is address
        End If
    Next cell

End Sub
0 голосов
/ 05 ноября 2018

Вы можете нажать кнопку поиска в меню или нажать Ctrl + F

в поле ввода для поиска; открыть опции

enter image description here

Нажмите Формат и создайте формат, в котором вы хотите выполнить поиск, после этого поиска по клику, и Excel найдет этот формат

EDIT

VBA Версия для поиска красного цвета в условном форматировании

Вы можете использовать эту функцию, чтобы найти условное цветовое оформление на вашем листе, я сделал это, чтобы искать красный цвет на листе "TOD302 (Tadika)"

Sub findRed()

    Dim used_range As Range
    Dim i As Integer

    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = "Search Result"

    Sheets("TOD302(Tadika)").Select
    Set used_range = ActiveSheet.UsedRange

    i = 1

    Sheets("Search Result").Range("A" & i).Value = "Row"
    Sheets("Search Result").Range("B" & i).Value = "Column"
    Sheets("Search Result").Range("C" & i).Value = "address"

    i = 2
    For Each r In used_range

        If (r.DisplayFormat.Interior.Color = 192) Then

            Sheets("Search Result").Range("A" & i).Value = r.Row
            Sheets("Search Result").Range("B" & i).Value = r.Column
            Sheets("Search Result").Range("C" & i).Value = r.Address()

            i = i + 1
        End If
    Next

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