Страницы: 1
RSS
Автопересчет UDF при смене заливки ячейки
 
Добрий вечер,

Есть формула (CountByColor) которая считает количество закрашенных ячеек в диапазоне,
Код
Function CountByColor(DataRange As Range, ColorSample As Range) As Long
    Dim cell As Range, n As Long
    
    For Each cell In DataRange
        If cell.Interior.Color = ColorSample.Interior.Color Then n = n + 1
    Next cell
    CountByColor = n 
        
End Function

Что и где добавить чтобы формула автоматически обновился при изменении цвета ячеек в диапазоне,
или может кнопку вывести для пересчёта?
Изменено: Sanja - 15.07.2026 03:13:24
 
Как происходит изменение цвета ячеек нужного диапазона?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Как происходит изменение цвета ячеек нужного диапазона?

Через условное форматирование но можно и вручную, не критично.
 
Цитата
*Timon* написал: Через условное форматирование
Огорчу,но Ваша функция вообще не отработает на ячейках залитых через УФ. Ни по кнопке, ни как...
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Огорчу,но Ваша функция вообще не отработает на ячейках залитых через УФ. Ни по кнопке, ни как...

А если залить ячейки вручную, тогда можно?
Приоритет автоматическое обновление :)
 
*Timon*, Добрый вечер. В случае ручной заливки лучше использовать не функцию, а процедуру. Автоматически обновлять не получится, можно использовать отслеживание события Worksheet_SelectionChange. Но может тормозить, т.к. срабатывать будет при каждом изменении выделения ячеек.
Изменение цвета заливки УФ не отслеживается, в этом случае можно использовать событие  Worksheet_Change и проверять. ячейки влияющие на цвет заливки нужных вам ячеек в соответствии с правилами, записанными в УФ.  
 
Старичок,

Спасибо,

Так и сделал но потом не работает функция copy paste  :)
 
Цитата
*Timon* написал: Так и сделал но потом...
Вы лучше создайте Тему по Вашей ЗАДАЧЕ, а не по СПОСОБУ, которым пытаетесь ее решить
Вы же ячейки расскрашиваете не от любви к прекрасному?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,

Да конечно, моей задачей было суммировать количество дней по месяцам из календаря,
в любом случае хорошо или плохо, задача решена.
Так что всем спасибо за отзывы.
 
Цитата
*Timon* написал:
Через условное форматирование но можно и вручную, не критично.
Если изменение цвета происходит через условное форматирование, то, вероятно, это связано с изменением значений каких-либо ячеек.
Попробуйте сделать Вашу функцию летучей (volatile). Тогда эта функция будет пересчитываться при открытии книги, а также при изменении любой ячейки любой открытой книги. С практической точки зрения этого обычно достаточно.

Для преобразования функции в летучую добавьте в начало оператор:
Код
Application.Volatile True
Владимир
Страницы: 1
Читают тему
Наверх