Настройка автоматического расчета в Excel - PullRequest
2 голосов
/ 18 июля 2011

У меня сложный проект в Microsoft Office Excel 2007, в котором используется большое количество пользовательских функций. Через VBA в событии Workbook_Open я установил автоматический расчет Excel на OFF и стратегически размещенный метод Calculate , чтобы вручную вычислять ячейки всякий раз, когда мне это нужно, чтобы UDF не выполнял пересчет неумышленно.

Если рабочая книга является ТОЛЬКО открытой (или первая , чтобы открыть) в экземпляре Excel, все работает отлично. Только когда он откроет ПОСЛЕ другой книги (в том же экземпляре), мой проект унаследует настройку автоматического вычисления из книги FIRST и выполнит бесконечные вычисления для моих пользовательских функций. Код отключения, помещенный в событие Workbook_Open, не выполняется до тех пор, пока UDF не завершит вычисление (что может длиться вечно). Это происходит только в том случае, если мой проект НЕ тот, который был открыт первым.

Через http://www.decisionmodels.com/calcsecretse.htm, Я обнаружил, что Excel выполняет природу процесса вычисления ДО Событие Workbook_Open выполняется.

Таким образом, у меня, очевидно, вопрос к открытому проекту ПОСЛЕ открывается другая рабочая книга с включенным автоматическим расчетом:

  1. Как заставить мой проект отключить автоматический расчет без выполнения сначала пересчета (помните, только проблема происходит, когда проект открывается не первым, так как следуйте настройкам из ранее открытой книги) ИЛИ ...
  2. Как заставить проект открываться в ДРУГОЙ ИНСТАНЦИИ (при двойном щелчке), чтобы избежать наследование настройки автоматического расчета из предыдущей книги.

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

Спасибо

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Один из способов - использовать другую рабочую книгу (Opener.xls) для инициации открытия рабочей книги UDF (udf.xls).

в Opener.xls код Workbook_Open- устанавливает расчет на ручной- открывает udf.xls

0 голосов
/ 17 марта 2015

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

Используйте VBA и запускайте макросы VBA, чтобы изменить эту опцию только для вашего активного листа, как только вам понадобится рассчитать; используя это так:

With ActiveSheet
  .EnableCalculation = False
  .EnableCalculation = True
  .Calculate
End With

Другими способами, которые могут вам понадобиться, вы можете прочитать эту часть статьи MSDN .

...