Excel: повреждение таблицы с условным форматированием по формуле UDF на большом диапазоне - PullRequest
0 голосов
/ 04 ноября 2019

В Windows 10 Pro 64 v 1903 под управлением Excel 2019 я хочу использовать функцию для переопределения условного форматирования, как описано в разделе форума MS, Ручное переопределение условного форматирования. . Поэтому я написал функцию:

Option Explicit

Public Function bNoCondlColorFill(rCell As Range) As Boolean

bNoCondlColorFill = (Cells(rCell.Row, rCell.Column).Interior.ColorIndex <> xlColorIndexNone)

End Function

Затем в условном форматировании я создал новое правило:

=bNoCondlColorFill(J4)

и применил его к области:

=$J$4:$BX$51

После этого я обнаружил, что электронная таблица ведет себя хаотично. Первое, что произошло, было то, что когда я выбрал строку и нажал shift-delete, книга закрылась без запроса сохранения.

Чтобы проверить это дальше, я сделал следующее:

  • Создана новая рабочая книга.
  • Добавлен модуль только с вышеуказанной функцией.
  • Введен текст "Тест" во все ячейки диапазона A1: BZ50
  • Установить условноформатирование по формуле =bNoCondlColorFill(A1) для применения к =$A$1 без установленного формата и без проверки «Остановить при истине».
  • Сохранение книги.

Я не наблюдал никакихпроблема с этой книгой. Затем я экспериментировал с внесением следующих изменений:

  • Измените содержимое ячеек с «Тест» на 55 копий «Тест» (т. Е. «Тест Тест-тест ...», длиной 275 символов).
  • Измените диапазон «применено к» с =$A$1 на =$A$1:$BZ$50.

Когда я внес одно из этих изменений в тестовую книгу, я не заметил никакихпроблема. Но когда я внес оба эти изменения, а затем сохранил файл, снова открыл его и попытался сохранить его снова, я получил сообщение «Расчет не завершен. Пересчитать перед сохранением?»Если я нажимал «да», я получал одно и то же сообщение повторно. В строке состояния не было указаний на то, что она рассчитывает. Так что что-то напутало.

Есть ли способ заставить эту формулу условного форматирования работать на большом (но не огромном) диапазоне?

...