Доброго времени суток друзья. Прошу помощи в решении след задачи. Каждую неделю очищаю рабочие таблицы от данных.Для удобства, области, которые подлежат очистке я залил заливкой из двух типов(два потому что очистка совершается в разные периоды). Суть проблемы в том, что пробовал написать макрос для очистки по цвету заливки, но что то нифига не получается.
Доброго времени суток друзья. Прошу помощи в решении след задачи. Каждую неделю очищаю рабочие таблицы от данных.Для удобства, области, которые подлежат очистке я залил заливкой из двух типов(два потому что очистка совершается в разные периоды). Суть проблемы в том, что пробовал написать макрос для очистки по цвету заливки, но что то нифига не получается.miranim
_Boroda_, спасибо.но нет. таблиц много. подобных диапазонов в таблице много. этот вариант я хотел реализовать изначально. но на него в моем случае улетит много времени. продолжаю копать литературу, как привязать очистку к заливке(
_Boroda_, спасибо.но нет. таблиц много. подобных диапазонов в таблице много. этот вариант я хотел реализовать изначально. но на него в моем случае улетит много времени. продолжаю копать литературу, как привязать очистку к заливке(miranim
Наконец свершилось) будет очищать цвет во всей таблице, указанный в ячейке. можно конечно привязать конкретно к цвету. можно конечно привязать не к ячейке, а сразу к цвету. [vba]
Код
Sub plan() Dim r As Range Dim rgn As Range Set rgn = Application.Worksheets(1).UsedRange For Each r In rgn.Cells If r.Cells.Interior.ColorIndex = Range("d5").Interior.ColorIndex Then r.Cells.ClearContents End If Next End Sub
[/vba] [moder]Код нужно оформлять тегами![/moder]
Наконец свершилось) будет очищать цвет во всей таблице, указанный в ячейке. можно конечно привязать конкретно к цвету. можно конечно привязать не к ячейке, а сразу к цвету. [vba]
Код
Sub plan() Dim r As Range Dim rgn As Range Set rgn = Application.Worksheets(1).UsedRange For Each r In rgn.Cells If r.Cells.Interior.ColorIndex = Range("d5").Interior.ColorIndex Then r.Cells.ClearContents End If Next End Sub
[/vba] [moder]Код нужно оформлять тегами![/moder]miranim
Сообщение отредактировал Manyasha - Пятница, 15.01.2016, 10:16
Sub plan() Dim r As Range For Each r In Worksheets(1).UsedRange If r.Interior.ColorIndex = Range("d5").Interior.ColorIndex Then r.ClearContents End If Next End Sub
[/vba]
[vba]
Код
Sub plan() Dim r As Range For Each r In Worksheets(1).UsedRange If r.Interior.ColorIndex = Range("d5").Interior.ColorIndex Then r.ClearContents End If Next End Sub
Почему? Включаете запись макроса, держа нажатым Контрл, тычете мышой в нужные для очистки ячейки, выключаете запись макроса. Лезете в VBA - там УЖЕ ГОТОВЫЙ кусок кода типа Range("C5:C20,J5:K9,K17:K23,O14:T14,P21,P25,N26"). Просто дописываете к нему ClearContents и все, макрос готов. Или Вы хотите сказать, что покрасить ячейки будет быстрее? Очень сомневаюсь. И, кстати, сам макрос с циклом по ячейкам и поштучной их очистке будет работать во много раз дольше, чем все сразу скопом.
Почему? Включаете запись макроса, держа нажатым Контрл, тычете мышой в нужные для очистки ячейки, выключаете запись макроса. Лезете в VBA - там УЖЕ ГОТОВЫЙ кусок кода типа Range("C5:C20,J5:K9,K17:K23,O14:T14,P21,P25,N26"). Просто дописываете к нему ClearContents и все, макрос готов. Или Вы хотите сказать, что покрасить ячейки будет быстрее? Очень сомневаюсь. И, кстати, сам макрос с циклом по ячейкам и поштучной их очистке будет работать во много раз дольше, чем все сразу скопом._Boroda_