Переименование листа дает «Недостаточно памяти»; Свойство CurrentRegion не выполняется - PullRequest
0 голосов
/ 13 января 2020

Мой работодатель недавно обновил с

Excel 2013 (15.0.4805.1001) MSO (15.0.4919.1002) до Excel для Office 365 MSO (16.0.11328.20362) 32-разрядный

Нет активных надстроек (кроме указанных ниже при загрузке).

Созданная мной надстройка Excel (xlam) больше не работает правильно.

Надстройка Он работает с открытой рабочей книгой и форматирует много «сырых» данных в виде таблиц (списков объектов), а также создает несколько сводных таблиц и диаграмм в макете в виде панели управления. В ходе этого процесса некоторые пустые листы копируются из надстройки в открытую книгу и переименовываются по мере необходимости.

В большинстве случаев все работает нормально (созданы сводные таблицы, создана панель мониторинга). В конце процесса я создаю индексный лист, копируя пустой лист из надстройки и переименовывая его (как ... индекс). Вот где что-то не так. Excel, казалось, просто «завис». В ходе расследования я обнаружил, что лист не был переименован (поэтому дальнейшая обработка остановлена).

Более подробное описание этого процесса с отключенным перехватом ошибок. Если я пытаюсь переименовать лист, используя непосредственное окно, я получаю

ошибка времени выполнения 7 Недостаточно памяти

Далее, если я вручную переименую лист (интерфейс Excel), а затем установлю код, выполняющийся с этой точки, я обнаружил, что не могу использовать свойство CurrentRegion (некоторая сортировка выполняется на недавно вставленный лист). Любая попытка использования CurrentRegion приводит к

Невозможно получить свойство CurrentRegion класса диапазона

Это также относится к использованию непосредственного окна на ЛЮБОЙ открытой книге ( например, ?Activesheet.range("A1").CurrentRegion.Rows.Count)

Эти ошибки сохраняются во время текущего сеанса Excel (то есть я могу создать пустую книгу и попытаться переименовать лист с помощью VBA, но получаю ошибку; ручное переименование вкладки - это нормально). Если я перезапущу Excel, то все в порядке.

Мне нужно использовать некоторые глобальные переменные / publi c, но (учитывая, что все работает в Excel 2013) не вижу, что это будет проблемой.

Есть идеи?

1 Ответ

0 голосов
/ 13 января 2020

После еще нескольких часов изучения этой проблемы я установил, что ошибка каким-то образом связана с модулем, добавляющим срезы на панель инструментов. На самом деле были добавлены слайсеры (и пошаговое выполнение кода не вызывало ошибок).

Добавление слайсеров немного по-другому, кажется, обошло проблему, хотя я до сих пор не знаю, почему это произошло вообще (оригинальный код для слайсеров работал отлично в Excel 2013).

...