Ikreiz, kad atjaunināt šūnas vērtību, Excel veic darbgrāmatas pārrēķināšanas procesu. Strādājot tieši programmā Excel, jūs vēlaties, lai tas notiktu 99,9% gadījumu (izņēmums ir tad, ja strādājat ar ārkārtīgi lielu darbgrāmatu). Tomēr tas patiešām var palēnināt jūsu VBA kodu. Laba prakse ir iestatīt manuālos aprēķinus makro sākumā un atjaunot aprēķinus makro beigās. Ja jums ir jāpārrēķina darbgrāmata, varat manuāli likt Excel aprēķināt.
Izslēdziet automātiskos aprēķinus
Automātisko aprēķinu ar makro varat izslēgt, iestatot to uz xlmanual. Izmantojiet šādu VBA koda daļu:
1 | Lietojumprogramma. Aprēķins = xlManual |
Ieslēdziet automātiskos aprēķinus
Lai atkal ieslēgtu automātisko aprēķinu ar iestatījumu xlAutomatic:
1 | Pielietojums. Aprēķins = xl Automātisks |
Es iesaku atspējot automātiskos aprēķinus procedūras sākumā un atkārtoti iespējot automātiskos aprēķinus. Tas izskatīsies šādi:
Atspējot automātisko aprēķinu makro piemēru
12345678 | Sub Auto_Calcs_Example ()Lietojumprogramma. Aprēķins = xlManual'Dari kaut koPielietojums. Aprēķins = xl AutomātisksBeigu apakš |
Manuālais aprēķins
Ja automātiskie aprēķini ir atspējoti, varat izmantot Aprēķināt komanda, lai piespiestu Excel pārrēķināt:
1 | Aprēķināt |
Varat arī likt programmai Excel pārrēķināt tikai atsevišķu darblapu.
1 | Darba lapas ("lapa1"). Aprēķināt |
Varat arī likt VBA pārrēķināt tikai diapazonu (noklikšķiniet, lai izlasītu mūsu rakstu par VBA aprēķināšanas metodēm)
Lūk, kā tas varētu izskatīties makro iekšpusē:
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Lietojumprogramma. Aprēķins = xlManual'Dari kaut ko'PārrēķinātAprēķināt'Dari vairāk lietuPielietojums. Aprēķins = xl AutomātisksBeigu apakš |
VBA iestatījumi - paātrinājuma kods
Ja jūsu mērķis ir paātrināt kodu, apsveriet arī šo citu iestatījumu pielāgošanu.
Ekrāna atjaunināšanas atspējošana var ievērojami mainīt ātrumu:
1 | Application.ScreenUpdating = Nepareizi |
Izslēdzot statusa joslu, būs arī neliela atšķirība:
1 | Application.DisplayStatusBar = Nepareizs |
Ja jūsu darbgrāmatā ir notikumi, jums vajadzētu atspējot notikumus arī procedūru sākumā (lai paātrinātu kodu un novērstu nebeidzamas cilpas!):
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 izslēgtu DisplayPageBreaks, izmantojiet šo koda rindu:
1 | ActiveSheet.DisplayPageBreaks = Nepareizi |