2016-05-18 3 views
0

Я пытаюсь обновить диапазон условного форматирования для 30 рядов данных на листе. Каждый месяц я обновляю данные, и я хочу запустить макрос, чтобы настроить диапазоны для включения нового месяца. Я уже сделал это для своих диаграмм, обновив конец диапазонов серии, перейдя через ChartObjects и SeriesCollection.Использовать VBA для обновления условных диапазонов форматирования?

Чтобы сделать это условное форматирование, все, что я нашел, требует жесткого кодирования диапазона (либо ссылку на ячейку или именованный диапазон), например:

With Worksheets(1).Range("e1:e10").FormatConditions(1) 

Я предпочел бы только через цикл сбора условного форматирования для рабочего листа, но я не могу найти никаких доказательств этой коллекции, существующих в объектной модели Excel VBA. Я что-то упустил?

ответ

0

Это немного запутанный, так как на самом деле нет никакого отличного способа пройти через formatconditions в листе. Но, вы можете перебрать SpecialCells, а затем перебрать их formatconditions и закопать оттуда:

Sub test() 
    Dim ws As Worksheet 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    Dim rngCell As Range 
    Dim lng As Long 

    For Each rngCell In ws.Cells.SpecialCells(xlCellTypeAllFormatConditions).Cells 
     For lng = 1 To rngCell.FormatConditions.Count 
      On Error Resume Next 
      Debug.Print rngCell.FormatConditions(lng).Formula1, rngCell.FormatConditions(lng).AppliesTo.Address 
     Next lng 
    Next rngCell 
End Sub 

Я пашот на specialcells() идею из Dick Kusleika's excellent post on this very subject в dailydoseofexcel.com блоге.

+0

Я прочитал сообщение Дика Куслейки, что довольно хорошо. Это сложный вопрос. К сожалению, условное форматирование, над которым я работаю, - это цветовая гамма, которую он обсуждает, не работает с приведенным выше кодом, так как это отдельный объект (ColorScale vs. FormatConditions). Если я подойду к нему, я могу попытаться преобразовать ваш код для работы с ColorScale. – twgardner2