فردریک در مورد مشکلی که با یک ماکرو داشت نوشت. هنگامی که او ماکرو را در ویرایشگر VB با استفاده از F8 اجرا می کند (گام در ماکرو) تنها در چند دقیقه کامل می شود. هنگامی که او ماکرو را مستقیم اجرا می کند، به نظر می رسد اجرای آن برای همیشه طول می کشد، اغلب 20 دقیقه یا بیشتر اجرا می شود. اگرچه کتاب کار فردریکز بزرگ است (46 مگابایت)، تفاوت زمانی بین دو روش اجرا آزاردهنده است.
مشکلاتی از این دست ممکن است گیج کننده باشند، و اغلب برای پی بردن به آن، تحلیل های سنگینی را انجام می دهند. یک مکان خوب برای شروع این است که مقداری "کد تایمر" را در ماکرو خود اضافه کنید. یک روال کوچک اضافه کنید که مقدار زمان را ذخیره می کند و روال دیگری که مقدار ذخیره شده را با زمان فعلی مقایسه می کند و تفاوت را نشان می دهد. در ابتدای بخشی از کدی که می خواهید آنالیز کنید، روتین اول را فرا می خوانید (که باعث صرفه جویی در زمان شروع می شود) و سپس در پایان بخش کد روتین دوم را فراخوانی می کنید. به این ترتیب، می توانید تعیین کنید که کدام بخش از کد شما طولانی ترین زمان را برای اجرا می گیرد. اینها بخش های کدی هستند که سپس روی آنها تمرکز می کنید، بنابراین می توانید بفهمید که آنها چه کاری انجام می دهند که این همه طول می کشد.
نکته دیگر این است که مطمئن شوید این دو خط را در ابتدای ماکرو خود اضافه کرده اید:
Application.ScreenUpdating = False
Application.EnableEvents = False
اینها به روز رسانی صفحه را خاموش می کنند، که می تواند سرعت یک ماکرو در حال اجرا را کاهش دهد و رویدادها را غیرفعال کند. این خط آخر گنجانده شده است تا تغییرات انجام شده توسط ماکرو در کاربرگ شما باعث ایجاد روال های محاسبه مجدد Excels نشود. اگر ماکرو شما تغییرات زیادی در دادههای کاربرگ ایجاد میکند و پس از هر تغییر، یک محاسبه مجدد کامل آغاز میشود، با چنین کتاب کار بزرگی، میتوان زمان زیادی را صرف انجام محاسبه مجدد کرد. در پایان ماکرو، اثر دو خطی که اضافه کردهاید را معکوس میکنید:
Application.EnableEvents = True
Application.ScreenUpdating = True
همچنین ممکن است بخواهید زمانی که ماکرو شما در حال اجرا است، محاسبه خودکار را خاموش کنید. با انجام این کار مطمئن شوید که اکسل در حالی که ماکرو چیزها را جابجا می کند یا در غیر این صورت با داده ها کار می کند، سعی نمی کند نتایج متوسط را محاسبه کند. برای خاموش کردن محاسبه خودکار، از این خط در ابتدای ماکرو استفاده کنید:
Application.Calculation = xlCalculationManual
این ایده خوبی است که فقط در صورتی که ماکرو شما به اطلاعات محاسبه شده در کاربرگ متکی نباشد، محاسبه خودکار را در ماکرو خاموش کنید. اگر آن را خاموش کنید، بعداً می توانید با قرار دادن خط زیر در انتهای ماکرو، محاسبه خودکار را دوباره فعال کنید:
Application.Calculation = xlCalculationAutomatic
یکی از خوانندگان پیشنهاد داد در حالی که ماکرو در کاربرگ اکسل در حال اجرا است، به برنامه دیگری تمرکز کنید. به عنوان مثال، Notepad را باز کرده و آن پنجره را فعال کنید. هنگامی که اکسل دیگر فعال نیست، سرعت ماکرو به میزان قابل توجهی افزایش می یابد. گزینه دیگری که باید امتحان کنید این است که نشانگر ماوس را به جای قرار دادن آن در کاربرگ فعال اکسل به سمت پایین به ناحیه نوار وظیفه ببرید.