Kedykoľvek aktualizujete hodnotu bunky, Excel prejde procesom prepočtu zošita. Pri práci priamo v programe Excel chcete, aby sa to stalo 99,9% času (výnimkou je prípad, keď pracujete s extrémne veľkým zošitom). To však môže skutočne spomaliť váš kód VBA. Je dobrým zvykom nastaviť svoje výpočty na manuálne na začiatku makier a obnoviť výpočty na konci makier. Ak potrebujete zošit prepočítať, môžete Excelu vypočítať manuálne.
Vypnite automatické výpočty
Automatický výpočet môžete vypnúť pomocou makra nastavením na xlmanual. Použite nasledujúci kus kódu VBA:
1 | Application.Calculation = xlManual |
Automatické výpočty znova zapnite
Ak chcete znova zapnúť automatický výpočet s nastavením xlAutomatic:
1 | Application.Calculation = xlAutomatic |
Odporúčame zakázať automatické výpočty na úplnom začiatku postupu a automatické výpočty znova povoliť na konci. Bude to vyzerať takto:
Vypnite príklad makra automatických výpočtov
12345678 | Sub auto_Calcs_Example ()Application.Calculation = xlManual'Urob niečoApplication.Calculation = xlAutomaticKoniec pod |
Ručný výpočet
Keď sú automatické výpočty vypnuté, môžete použiť Vypočítajte príkaz na prinútenie Excelu prepočítať:
1 | Vypočítajte |
Tiež môžete Excelu povedať, aby prepočítal iba jednotlivý pracovný hárok:
1 | Pracovné listy („list1“). Vypočítajte |
Môžete tiež povedať VBA, aby prepočítala iba rozsah (kliknutím si prečítajte náš článok o metódach výpočtu VBA)
Takto to môže vyzerať v makre:
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Urob niečo„Prepočítaj si toVypočítajte„Rob viac vecíApplication.Calculation = xlAutomaticKoniec pod |
Nastavenia VBA - Zrýchlite kód
Ak je vašim cieľom zrýchlenie kódu, mali by ste tiež zvážiť úpravu týchto ďalších nastavení:
Deaktivácia Screenupdating môže znamenať obrovský rozdiel v rýchlosti:
1 | Application.ScreenUpdating = False |
Vypnutie stavového riadka bude mať tiež malý rozdiel:
1 | Application.DisplayStatusBar = False |
Ak váš zošit obsahuje udalosti, mali by ste tiež zakázať udalosti na začiatku vašich procedúr (na urýchlenie kódu a zabránenie nekonečným slučkám!):
1 | Application.EnableEvents = False |
Nakoniec sa váš kód VBA môže spomaliť, keď sa Excel pokúsi znova vypočítať konce strán (Poznámka: Neovplyvní to všetky postupy). Na vypnutie rozhrania DisplayPageBreaks použite tento riadok kódu:
1 | ActiveSheet.DisplayPageBreaks = Nepravda |