У меня есть UDF, который проверяет наличие комментария. Я использую это в CF, потому что хочу окрасить ячейку, если 1. Ячейка не пустая и 2. Нет комментариев. Это отлично работает с 2007 и 2010 годами, но теперь у меня есть 2016 год, а Excel немного странный.Условное форматирование с проблемами udf с Office 2016/Office 365
UDF:
Function HasCmt(Rng As Range)
Application.Volatile
HasCmt = IIf(Not Rng.Comment Is Nothing, True, False)
End Function
CF: = AND (NOT (ISBLANK (B6)), HasCmt (B6) = FALSE)
Теперь, когда я отвечать критериям, форматирование применяется и затем снова уходит. Если я отключу автоматический расчет, он будет вести себя нормально, пока я не пересчитаю. Я также получаю ошибки при сохранении документа. «Расчет неполный ...».
Кто-нибудь знает, какое исправление я могу применить к моим многочисленным книгам, которые у меня есть, которые используют этот CF? Что-то изменилось в предложении Excel в 2016 году?
Любая помощь была бы принята с благодарностью.
Благодаря
Это приложение.независимое должно сильно ударить по рабочей книге. Кроме того, похоже, что он не соответствует вашим двум критериям, поэтому вы должны использовать ISBLANK поверх него. За исключением вопроса 2016 года, рассмотрели ли вы какие-либо другие (более эффективные) методы? Строго говоря, .volatile ничего не делает, чтобы фактически изменить статус ячейки, когда она получает комментарий; это происходит только тогда, когда что-то внутри рабочей книги изменяет, что ВСЕ ячейки повторно оцениваются. – Jeeped
Спасибо, Jeeped. Я не могу придумать альтернативный способ достижения этого, тем более, что с 07 по 2010 год он просто «работал» –
Я удалил application.volatile из UDF и изменил логику на «If Not IsEmpty (rng) Then HasCmt = CBool (Не rng.Comment ничего). При вычислении, установленном в автоматическом режиме, UDF выполнялся, как ожидалось, в правиле CF. Это было в Excel 2013. Я попытаюсь проверить excel 2016 немного позже. – Jeeped