Страницы: 1
RSS
Форматировние диапазона по условию МАКРОСОМ. БЕЗ(!) создания правил условного форматирования.
 
Добрый день! Уже 2 часа рыскаю, ищу, пробую, ничего не работает, а если и работает - то не так как надо.

Хочется макрос который бы  закрашивал (например цветом R255 G100 B100) те ячейки всего определённого столбца умной таблицы (     диапазон в самом VBA у меня уже значится  как  Range("Обработка_Категории_Табл[Наличие в той выписке?]")  - ну то есть макрорекордер мне сказал что выбор нужного мне столбца - отражается вот таким кодом.  )   , которые равны  "НЕТ!", и другим цветом (например R0 G250 B120)  которые больше либо равны 100.

Но что бы этот макрос НЕ добавлял правила/формулы условного форматирования в их классическом экселевом понимании (см. картинку приложения), т.е. чтобы в диспетчере условного форматирования НЕ БЫЛО НИКАКИХ ПРАВИЛ (эти правила я и сам расставить могу- цель в том чтобы дополнительно не загружать проц - комп и так уже начинает тормозить). Т.е. чтобы макрос работал только по запросу, "закрасил - и оставил" - т.е. цвета бы уже не менялись даже если значения ячеек диапазона меняются. И так до следующего запуска макроса...


Если мне с этим в платный раздел, и я внатуре написал ни туда  - пожалуйста скажите.
Спасибо.  
Изменено: Efremov4D - 26.12.2021 18:50:57
Сама по себе жизнь имеет значение
 
Код
Dim c as Range
for Each c in  Range("Обработка_Категории_Табл[Наличие в той выписке?]")
  c.interior.color = iif(c = "НЕТ!", rgb(255, 100,100), rgb(0, 250, 120))
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо Вам большое, работает! А можно в него добавить условие по поводу больше либо равно 120?  Если >= 120 - то окрас R0 G250 B120  , если меньше - то НИКАКОЙ т.е. просто никакого как "нет заливки".
если это не будет слишком...  
Сама по себе жизнь имеет значение
 
Цитата
Efremov4D написал:
Добрый день! Уже 2 часа рыскаю, ищу, пробую, ничего не работает, а если и работает - то не так как надо.
Off. У меня с некоторыми макросами уже 2 десятилетия так...  :)  
Владимир
 
Efremov4D,  я, с моими знаниями в VBA, использую то, что предложит макрорекордер
Код
 '  краска
 
     ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19, Criteria1:="<0", Operator:=xlAnd
    Range("чат[[Столбец10]:[Столбец19]]").Interior.Color = RGB(0, 176, 80)
    ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19
    
     ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19, Criteria1:=">=0", Operator:=xlAnd, Criteria2:="<0.5"
    Range("чат[[Столбец10]:[Столбец19]]").Interior.Color = RGB(255, 192, 0)
    ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19

        ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19, Criteria1:=">=0.5", Operator:=xlAnd, Criteria2:="<1"
    Range("чат[[Столбец10]:[Столбец19]]").Interior.Color = RGB(150, 54, 52)
    Range("чат[[Столбец10]:[Столбец19]]").Font.Color = RGB(255, 255, 255)
    ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19

        ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19, Criteria1:=">=1", Operator:=xlAnd
    Range("чат[[Столбец10]:[Столбец19]]").Interior.Color = RGB(0, 0, 0)
    Range("чат[[Столбец10]:[Столбец19]]").Font.Color = RGB(255, 255, 255)
    ActiveSheet.ListObjects("чат").Range.AutoFilter Field:=19
 
Код
  Dim c As Range
  For Each c In Range("Обработка_Категории_Табл[Наличие в той выписке?]")
    If c = "НЕТ!" Then
      c.Interior.Color = RGB(255, 100, 100)
    ElseIf isnumeric(c) and c > 120 Then
      c.Interior.Color = RGB(0, 250, 120)
    Else
      c.Interior.Pattern = xlNone
    End If
  Next
Изменено: Ігор Гончаренко - 26.12.2021 20:22:45
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо Вам большое!! Работает! Практически как надо - разве что текст воспринимает как нечто бОльшее 120   :)  Но Бог с ним!  Я доволен тем что есть!  Доп. содействия не смею просить. Напишите (если желаете) номер карты - я Вам (сейчас на карте нет ничего) закину ..как это.. типа "чаевые" или tips или благодарнеость - если это уместно.
Спасибо!
Изменено: Efremov4D - 26.12.2021 20:07:58
Сама по себе жизнь имеет значение
 
макрос немного поправил в сообщении выше
(щелкните мышью по моему портрету - там все написано...)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Понял )

Цитата
написал: я, с моими знаниями в VBA, использую то, что предложит макрорекордер
Не) решние чуть ниже Вашего сообщения - много изящней)
Сама по себе жизнь имеет значение
Страницы: 1
Наверх