Суть проблемы. 1. Имеется 2 таблицы "А" и "Б" - идентичные по размеру, на разных листах (количество строк меняется) 2. Макросом проверяем таблицу "А" и если в какой-то ячейке есть слово "Ошибка", то в таблице "Б" закрасить соответствующую ячейку. 3. !!! Условное форматирование не предлагать. Нужен именно макрос. 4. Файл примера в приложении.
Всем доброго времени суток!
В очередной раз нужна помощь экселистов.
Суть проблемы. 1. Имеется 2 таблицы "А" и "Б" - идентичные по размеру, на разных листах (количество строк меняется) 2. Макросом проверяем таблицу "А" и если в какой-то ячейке есть слово "Ошибка", то в таблице "Б" закрасить соответствующую ячейку. 3. !!! Условное форматирование не предлагать. Нужен именно макрос. 4. Файл примера в приложении.Aleksej
For Each cl In Worksheets(1).UsedRange If cl.Value = "Ошибка" Then With Worksheets(2) .Cells(cl.Row, cl.Column).Interior.Color = vbRed End With End If Next cl
End Sub
[/vba]
Например, так. [vba]
Код
Sub Закрасить()
Dim cl As Range
For Each cl In Worksheets(1).UsedRange If cl.Value = "Ошибка" Then With Worksheets(2) .Cells(cl.Row, cl.Column).Interior.Color = vbRed End With End If Next cl
Public Sub test() Dim rng1 As Range, unoCell As Range
Set rng1 = Worksheets("Лист1").Range("A9:X25") With Worksheets("Лист2") For Each unoCell In rng1 If unoCell = "Ошибка" Then .Cells(unoCell.Row, unoCell.Column).Interior.Color = VBA.RGB(0, 255, 0) Next
End With End Sub
[/vba]
Ну и мой до кучи . [vba]
Код
Public Sub test() Dim rng1 As Range, unoCell As Range
Set rng1 = Worksheets("Лист1").Range("A9:X25") With Worksheets("Лист2") For Each unoCell In rng1 If unoCell = "Ошибка" Then .Cells(unoCell.Row, unoCell.Column).Interior.Color = VBA.RGB(0, 255, 0) Next
[/vba]короче и понятней. и с For Each cl In Worksheets(1).UsedRange я бы поосторожней. Часто не знаешь, до чего оно приведет. Попробуйте свой макрос в приложенном файле, он в модуле листа.
[/vba]короче и понятней. и с For Each cl In Worksheets(1).UsedRange я бы поосторожней. Часто не знаешь, до чего оно приведет. Попробуйте свой макрос в приложенном файле, он в модуле листа.KuklP
В каждой шутке есть доля шутки. Если ошибки в ячейках - результат работы формул, то достаточно заменить .SpecialCells(2) на .SpecialCells(-4123, 16) и все сработает как надо.
В каждой шутке есть доля шутки. Если ошибки в ячейках - результат работы формул, то достаточно заменить .SpecialCells(2) на .SpecialCells(-4123, 16) и все сработает как надо.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
.SpecialCells(-4123, 16) и все сработает как надо.
Удобно. Главное кратко.
Все ошибки отмечает, кроме ошибки "Слишком большая или отрицательная дата" (это когда бесконечные решетки рисует - ##########) Я уже как то, спрашивал на форуме как - эту ошибку отловить. Может есть код SpecialCells для этой ошибки? Или это за ошибку не считается? Тот же файл примера - ошибка на Листе1, ячейке F10
KuklP,
Цитата
.SpecialCells(-4123, 16) и все сработает как надо.
Удобно. Главное кратко.
Все ошибки отмечает, кроме ошибки "Слишком большая или отрицательная дата" (это когда бесконечные решетки рисует - ##########) Я уже как то, спрашивал на форуме как - эту ошибку отловить. Может есть код SpecialCells для этой ошибки? Или это за ошибку не считается? Тот же файл примера - ошибка на Листе1, ячейке F10Aleksej
В той теме мы как раз Вас убеждали, что это не ошибка, а такое отображение данных. В частности, также показывает не только даты, но и, например, большие числа, которые просто не влезают с ширину ячейки (посмотрите желтую ячейку).
В той теме мы как раз Вас убеждали, что это не ошибка, а такое отображение данных. В частности, также показывает не только даты, но и, например, большие числа, которые просто не влезают с ширину ячейки (посмотрите желтую ячейку)._Boroda_