Čeprav je videti kul, ko opazujete, da vaš makro VBA manipulira z zaslonom, lahko pomagate hitrejšemu delovanju makra, če izklopite (onemogočite) posodabljanje zaslona.
Onemogoči posodabljanje zaslona
1. Če želite onemogočiti posodabljanje zaslona, na začetku kode vnesite to vrstico:
1 | Application.ScreenUpdating = Napačno |
Omogoči posodabljanje zaslona
2. Če želite znova omogočiti posodabljanje zaslona, na koncu kode vnesite to vrstico:
1 | Application.ScreenUpdating = Res |
Primer posodabljanja zaslona VBA
Nato bo vaš postopek videti tako:
1234567891011 | PodzaslonUpdating_Example ()Application.ScreenUpdating = Napačno'Naredi kajObseg ("a1"). Kopiraj obseg ("b1")Obseg ("a2"). Kopiraj obseg ("b2")Obseg ("a3"). Kopiraj obseg ("b3")Application.ScreenUpdating = ResEnd Sub |
Posodobitev zaslona Osveži
Če onemogočite posodabljanje zaslona, bo vaša koda VBA delovala veliko hitreje, hkrati pa bo vaše delo videti bolj profesionalno. Končni uporabniki običajno ne želijo videti zakulisnih dejanj vaših postopkov (še posebej, če postopek teče počasi). Prav tako si morda ne želite, da bi končni uporabniki videli funkcijo zakulisja (npr. Skriti delovni listi). Priporočam, da v skoraj vseh vaših postopkih onemogočite (in znova omogočite) posodabljanje zaslona.
Vendar pa včasih želite, da se zaslon osveži. Če želite osvežiti zaslon, boste morali začasno znova vklopiti posodabljanje zaslona (ni ukaza za osvežitev zaslona):
123 | Application.ScreenUpdating = Res'Naredi kajApplication.ScreenUpdating = Napačno |
Nastavitve VBA - Koda za pospešitev
Za izboljšanje hitrosti kode je na voljo več drugih nastavitev.
Če onemogočite samodejne izračune, lahko Hitro spreminjate hitrost:
1 | Application.Calculation = xlPriročnik |
Onemogočanje vrstice stanja bo prav tako naredilo majhno razliko:
1 | Application.DisplayStatusBar = False |
Če vaš delovni zvezek vsebuje dogodke, morate običajno onemogočiti dogodke na začetku postopka:
1 | Application.EnableEvents = False |
Nazadnje, kodo VBA lahko upočasnite, ko Excel poskuša znova izračunati prelome strani (Opomba: ne bodo vplivali na vse postopke). Če želite onemogočiti prikaz prelomov strani, uporabite to vrstico kode:
1 | ActiveSheet.DisplayPageBreaks = False |