Lai cik forši izskatās, skatoties, kā VBA makro manipulē ar ekrānu, jūs varat palīdzēt makro darboties ātrāk, ja izslēdzat (atspējojat) ScreenUpdating.
Atspējot ekrāna atjaunināšanu
1. Lai atspējotu ScreenUpdating, koda sākumā ievietojiet šo rindu:
1 | Application.ScreenUpdating = Nepareizi |
Iespējot ekrāna atjaunināšanu
2. Lai atkārtoti iespējotu ScreenUpdating, koda beigās ievietojiet šo rindu:
1 | Application.ScreenUpdating = Patiess |
VBA ekrāna atjaunināšanas piemērs
Tad jūsu procedūra izskatīsies šādi:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Nepareizi'Dari kaut koDiapazons ("a1"). Kopēt diapazonu ("b1")Diapazons ("a2"). Kopēt diapazonu ("b2")Diapazons ("a3"). Kopēt diapazonu ("b3")Application.ScreenUpdating = PatiessBeigu apakš |
Ekrāna atjaunināšanas atsvaidzināšana
Atspējojot ekrāna atjaunināšanu, jūsu VBA kods darbosies DAUDZ ātrāk, taču tas padarīs jūsu darbu arī profesionālāku. Galalietotāji parasti nevēlas redzēt jūsu procedūru darbības aiz ainas (īpaši, ja procedūra notiek lēni). Tāpat jūs, iespējams, nevēlaties, lai galalietotāji redzētu aizkulišu funkcionalitāti (piemēram, slēptās darblapas). Es iesaku atspējot (un atkārtoti iespējot) ekrāna atjaunināšanu praktiski visās jūsu procedūrās.
Tomēr dažos gadījumos vēlaties, lai ekrāns tiktu atsvaidzināts. Lai atsvaidzinātu ekrānu, jums īslaicīgi jāieslēdz ScreenUpdating (nav ekrāna atsvaidzināšanas komandas):
123 | Application.ScreenUpdating = Patiess'Dari kaut koApplication.ScreenUpdating = Nepareizi |
VBA iestatījumi - paātrinājuma kods
Lai uzlabotu koda ātrumu, ir jāspēlē vairāki citi iestatījumi.
Automātisko aprēķinu atspējošana var radīt milzīgas atšķirības ātrumā:
1 | Lietojumprogramma. Aprēķins = xlManual |
Statusa joslas atspējošana arī nedaudz mainīsies:
1 | Application.DisplayStatusBar = Nepareizs |
Ja darbgrāmatā ir notikumi, procedūras sākumā parasti ir jāatspējo notikumi.
1 | Application.EnableEvents = Nepareizi |
Visbeidzot, jūsu VBA kods var tikt palēnināts, kad programma Excel mēģina pārrēķināt lappušu pārtraukumus (piezīme: tas neietekmēs visas procedūras). Lai atspējotu lapu pārtraukumu parādīšanu, izmantojiet šo koda rindu:
1 | ActiveSheet.DisplayPageBreaks = Nepareizi |