navferty / NavfertyExcelAddIn

Common tools for MS Excel
MIT License
47 stars 6 forks source link

Add Сonditional formatting FIX #73

Closed uom42 closed 3 years ago

uom42 commented 4 years ago

Добавить кнопку "Починить правила условного форматирования в таблице" Взято отсюда: [https://pikabu.ru/story/ad_uslovnogo_formatirovaniya_v_excel_7442773]

Если в таблице с уловным форматированием удалить или добавить строки, правила условного форматирования дублируются и дробятся на поддиапазоны Но у первой строки они обычно остаются неповреждёнными. Поэтому удаляем правила у всех кроме первой строки и копируем с неё

Способ 1. Вручную Несмотря на кажущуюся запущенность, лечится это всё достаточно легко. Идея в том, что правила УФ "ломаются", обычно, для строк ниже первой. Первая же строка, в большинстве случаев, остается в порядке. Поэтому, чтобы всё починить, нам нужно просто очистить все правила в таблице и заново распространить их с первой строки на все остальные. Для этого делаем следующее:

  1. Выделяем в нашей таблице все строки кроме первой.
  2. Удаляем все правила условного форматирования с выделенных ячеек через Главная - Условное форматирование - Удалить правила - Удалить правила из выделенных ячеек (Home - Conditional formatting - Clear rules - Clear rules from selected cells).
  3. Выделяем первую строку, жмём кнопку-кисточку Формат по образцу на Главной (Home - Format Painter) и выделяем все остальные строки, копируя на них формат с первой.
Public Sub Fix_СF_Hell()
    rem создаем ссылки на диапазоны
    Set rngAll = Selection
    Set rngRow1 = Selection.Rows(1)
    Set rngRow2 = Selection.Rows(2)
    Set rngRowLast = Selection.Rows(rngAll.Rows.Count)

    rem удаляем все правила форматирования со всех строк кроме первой
    Range(rngRow2, rngRowLast).FormatConditions.Delete

    rem копируем форматы с первой строки на все остальные
    rngRow1.Copy
    Range(rngRow1, rngRowLast).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
End Sub