Определение необходимости расчета (Microsoft Excel)
Excel позволяет вам контролировать, когда он пересчитывает рабочий лист. Обычно Excel выполняет пересчет каждый раз, когда вы что-то меняете в ячейке. Если вы работаете с очень большими листами, содержащими много формул, вы можете отключить функцию автоматического пересчета. Вы можете отключить автоматический пересчет с помощью элементов управления на вкладке «Расчет» диалогового окна «Параметры».
Ваши макросы также могут заставить Excel пересчитать ваш рабочий лист. Если у вас включен автоматический пересчет, то любое изменение вашего макроса на листе заставит Excel пересчитать. Если у вас отключен автоматический пересчет, вы можете использовать метод Calculate для пересчета рабочего листа:
ActiveSheet.Calculate
Конечно, если на выполнение перерасчета уходит много времени, вы можете проверить, необходим ли перерасчет, прежде чем его выполнять. Похоже, что нет флага, который можно было бы напрямую проверить, чтобы узнать, нужен ли пересчет. Ближе всего нужно проверить свойство Saved объекта Workbook. Это свойство по существу действует как «грязный флаг» для всей книги. Если в книге есть несохраненные изменения, то свойство Saved имеет значение False; если все сохранено, то это Истина.
Как это поможет вам понять, нужен ли пересчет?
Помните, что расчет необходим только тогда, когда на листе есть изменения. При изменении чего-либо на листе для свойства Saved книги также устанавливается значение False. Таким образом, вы можете проверить свойство Saved перед выполнением пересчета, как показано здесь:
If Not ActiveWorkbook.Saved Then ActiveSheet.Calculate End If
Конечно, есть только одна проблема с этим подходом — свойство Saved имеет значение True только в том случае, если книга действительно сохранена. Это означает, что вы можете пересчитывать несколько раз без особой необходимости, если только вы не свяжете сохранение и пересчет вместе, как показано здесь:
If Not ActiveWorkbook.Saved Then ActiveSheet.Calculate ActiveWorkbook.Save End If
Разумность подхода к этой проблеме таким образом зависит от характера вашей конкретной ситуации. Если для сохранения книги требуется больше времени, чем для простого пересчета, этот подход не сработает. Однако, если пересчет занимает больше времени (что вполне возможно с некоторыми типами операций), этот подход может работать хорошо.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2323) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Determining_if_Calculation_is_Needed [Определение необходимости расчета]
.