Фредрик написал о проблеме, с которой он столкнулся с макросом. Когда он запускает макрос в редакторе VB с помощью F8 (пошаговое выполнение макроса), он завершается всего за несколько минут. Когда он запускает макрос сразу, кажется, что он выполняется бесконечно, часто на выполнение требуется 20 минут или больше. Несмотря на то, что рабочая тетрадь Фредрика велика (46 МБ), разница во времени между двумя методами бега утомляет.

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

а затем в конце раздела кода вы вызываете вторую процедуру.

Таким образом вы можете определить, какие части вашего кода выполняются дольше всего. Это те разделы кода, на которых вы затем сосредотачиваетесь, чтобы вы могли понять, что они делают, что занимает так много времени.

Еще нужно убедиться, что вы добавляете эти две строки в начало макроса:

Application.ScreenUpdating = False Application.EnableEvents = False

Они отключают обновление экрана, что может замедлить выполнение макроса, и отключать события. Эта последняя строка включена, чтобы изменения, сделанные макросом на вашем листе, не запускали процедуры пересчета Excel. Если ваш макрос вносит много изменений в данные на листе, и после каждого изменения запускается полный пересчет, то с такой большой книгой можно потратить много-много времени, просто делая пересчет. В конце макроса вы отменяете эффект двух добавленных вами строк:

Application.EnableEvents = True Application.ScreenUpdating = True

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2436) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Macro_Runs_Slowly_but_Steps_Quickly [макрос выполняется медленно, но шагает быстро].