Kad god ažurirate vrijednost ćelije, Excel prolazi kroz postupak ponovnog izračuna radne knjige. Kada radite izravno u programu Excel, želite da se to dogodi 99,9% vremena (iznimka je ako radite s iznimno velikom radnom knjigom). Međutim, to može jako usporiti vaš VBA kôd. Dobra je praksa postaviti svoje izračune na ručne na početku makronaredbi i vratiti izračune na kraju makronaredbi. Ako trebate ponovno izračunati radnu knjigu, možete ručno reći Excelu da izračuna.
Isključite automatske izračune
Automatski izračun s makronaredbom možete isključiti postavljanjem na xlmanual. Upotrijebite sljedeći dio VBA koda:
1 | Primjena.Izračun = xlPriručnik |
Ponovo uključite automatske proračune
Za ponovno uključivanje automatskog izračuna s postavkom xlAutomatic:
1 | Primjena.Izračun = xlAutomatski |
Preporučujem da onemogućite automatske izračune na samom početku postupka i ponovno omogućite automatske izračune na kraju. To će izgledati ovako:
Onemogućite primjer makroa automatskih izračuna
12345678 | Sub Auto_Calcs_Example ()Primjena.Izračun = xlPriručnik'Učini neštoPrimjena.Izračun = xlAutomatskiKraj podm |
Ručni izračun
Kada su automatski izračuni onemogućeni, možete koristiti Izračunati naredba za prisiljavanje Excela na ponovni izračun:
1 | Izračunati |
Također možete reći Excelu da ponovno izračuna samo pojedinačni radni list:
1 | Radni listovi ("list1"). Izračunajte |
Također možete reći VBA da ponovno izračuna samo raspon (kliknite da biste pročitali naš članak o metodama izračuna VBA)
Evo kako bi ovo moglo izgledati unutar makronaredbe:
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Primjena.Izračun = xlPriručnik'Učini nešto»Ponovno izračunajIzračunati'Učinite više stvariPrimjena.Izračun = xlAutomatskiKraj podm |
VBA postavke - kod za ubrzanje
Ako vam je cilj ubrzati kôd, razmislite i o prilagodbi ovih drugih postavki:
Onemogućavanje ažuriranja zaslona može napraviti veliku razliku u brzini:
1 | Application.ScreenUpdating = Netačno |
Isključivanje statusne trake također će napraviti malu razliku:
1 | Application.DisplayStatusBar = Netačno |
Ako vaša radna knjiga sadrži događaje, trebali biste onemogućiti i događaje na početku vaših postupaka (kako biste ubrzali kôd i spriječili beskonačne petlje!):
1 | Application.EnableEvents = Netačno |
Na kraju, vaš VBA kôd može se usporiti kada Excel pokuša ponovno izračunati prijelome stranica (Napomena: neće utjecati na sve postupke). Da biste isključili DisplayPageBreaks, upotrijebite ovaj redak koda:
1 | ActiveSheet.DisplayPageBreaks = Netačno |