Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Добавленная в Excel VBA функция не пересчитывает значения автоматически

Ответить
Настройки темы
2013 - Добавленная в Excel VBA функция не пересчитывает значения автоматически

Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Добрый день.
Возникла необходимость посчитать ячейки определённого цвета.
В сети пишут, что такой функции нет и надо дописать её самому, используя VBA.
Также приводится множество вариантов написания.
Но ни один из них не пересчитывает значения автоматически, после изменения в диапазоне.
Например, отмечено 3 из 10 ячеек, вводим формулу, указываем диапазон, цвет - результат 3. Но если я после этого убираю цвет у одной из ячеек или крашу ещё одну, результат всё ещё 3.
Причём не помогает ни встать на ячейку с формулой и нажать <ENTER> ни F9.
Пересчёт происходит только после того, как я кликаю по полю редактирования формулы и нажимаю <ENTER>.

VBA, на котором я остановился:
Код: Выделить весь код
Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = WorksheetFunction.SUM(rCell, vResult)
End If
Next rCell
Else
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = 1 + vResult
End If
Next rCell
End If
ColorFunction = vResult
End Function
Другая функция, которой я попытался воспользоваться:
Код: Выделить весь код
 Function ColorIndex(CellColor As Range)  
    ColorIndex = CellColor.Interior.ColorIndex  
    End Function
Всё тоже самое. Пересчёт только после "редактирования" формулы.

С этим можно что-то сделать или придётся жить с этим?

Отправлено: 17:06, 14-10-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата subuday77:
посчитать ячейки определённого цвета. »
Посчитать что? Их количество? Посчитать где? Все ячейки на Рабочем листе? Во всей Рабочей книге? В выделенном диапазоне?

Цитата subuday77:
Но если я после этого убираю цвет у одной из ячеек или крашу ещё одну, результат всё ещё 3. »
Само собой. Даже волатильная функция данным способом не вызывается.

Отправлено: 18:22, 14-10-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


В общем, как я понимаю, автоматически, как обычная формула, работать не будет...
Жаль...

Отправлено: 19:24, 14-10-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


subuday77, будет. Но Вам-то сие чем поможет?! Событие пересчёта не возникает при форматировании ячеек, как бы Вы их не раскрашивали — данные-то никак не меняются.

Если Вы ответите на вопросы, заданные мною в предыдущем сообщении, возможно, я смогу Вам что-либо подсказать.

Отправлено: 23:37, 14-10-2018 | #4


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Если Вы ответите на вопросы, заданные мною в предыдущем сообщении, возможно, я смогу Вам что-либо подсказать. »
С удовольствием! ))

Дано:
Столбец с цифровыми данными, идущими в разнобой.
Ячейка, в которой с помощью COUNTA подсчитанно общее количество занятых ячеек в столбце.
После проверки данных (типа, солдатик сбегал и посмотрел - посчитал), проверенные данные выделяются зелёным.

Задача:
После того, как ячейка помечена, как проверенная, убрать её из общего подсчёта.

Как-то так.

Я предложил вариант решения через CELL.
Но поскольку CELL c цветами напрямую не работает, приходится извращаться с форматами.
Если есть что-то поизящнее, буду рад и благодарен за помощь.

Отправлено: 09:16, 15-10-2018 | #5


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Я нашёл удовлетворительное решение.
С помощью условного форматирования и формулы =not(isnumber(A1)) я перекрашиваю значения в зелёный цвет, если они не номера.
Пользователь проинструктирован, что для того, чтобы отметить ячейку, как проверенную, он должен перед номером поставить одиночную кавычку.
Внизу подсчёт с помощью COUNTIF(range,"*")

Работает.

Отправлено: 10:10, 15-10-2018 | #6



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Добавленная в Excel VBA функция не пересчитывает значения автоматически

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2013 - Функция, возвращающая три значения Invincible Microsoft Office (Word, Excel, Outlook и т.д.) 3 07-12-2016 03:35
VBA - [решено] VBA в EXCEL не освобождается память navuhodonosor Программирование и базы данных 5 12-08-2013 00:45
Разное - Задача Excel VBA JON4 Microsoft Office (Word, Excel, Outlook и т.д.) 8 12-12-2010 18:40




 
Переход