Lahtri väärtuse värskendamisel läbib Excel töövihiku ümberarvutamise protsessi. Otse Excelis töötades soovite, et see juhtuks 99,9% juhtudest (erandiks on see, kui töötate äärmiselt suure töövihikuga). See võib aga teie VBA -koodi tõesti aeglustada. Hea tava on määrata arvutused makrode alguses käsitsi ja taastada arvutused makrode lõpus. Kui teil on vaja töövihik uuesti arvutada, saate käsu Excelil arvutada.
Lülitage automaatsed arvutused välja
Saate makro abil automaatse arvutamise välja lülitada, määrates selle väärtuseks xlmanual. Kasutage järgmist VBA koodi:
1 | Application.Calculation = xlManual |
Lülitage automaatsed arvutused uuesti sisse
Automaatse arvutamise sisselülitamiseks seadistusega xlAutomatic toimige järgmiselt.
1 | Rakendus.Kalkulatsioon = xlAutomaatne |
Soovitan keelata automaatsed arvutused kohe protseduuri alguses ja lubada automaatsed arvutused uuesti lõpus. See näeb välja selline:
Keela automaatsete arvutuste makro näide
12345678 | Alam -automaatsed_näidised ()Application.Calculation = xlManual'Tee midagiRakendus.Kalkulatsioon = xlAutomaatneEnd Sub |
Käsitsi arvutamine
Kui automaatsed arvutused on keelatud, saate kasutada Arvutama käsk sundida Excel uuesti arvutama:
1 | Arvutama |
Samuti saate Excelile öelda, et ta arvutaks ümber ainult üksiku töölehe.
1 | Töölehed ("leht1"). Arvutage |
Samuti võite öelda, et VBA arvutab ümber ainult vahemiku (klõpsake meie artikli lugemiseks VBA arvutusmeetodite kohta)
Makro sees võib see välja näha järgmine.
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Tee midagi„Arvuta uuestiArvutama'Tehke rohkem asjuRakendus.Kalkulatsioon = xlAutomaatneEnd Sub |
VBA seaded - kiirenduskood
Kui teie eesmärk on koodi kiirendada, peaksite kaaluma ka nende muude sätete kohandamist.
Ekraaniuuenduse keelamine võib kiiruses tohutult muuta:
1 | Application.ScreenUpdating = Vale |
Olekuriba väljalülitamisel on ka väike erinevus:
1 | Application.DisplayStatusBar = Vale |
Kui teie töövihik sisaldab sündmusi, peaksite toimingute alguses sündmused ka keelama (koodi kiirendamiseks ja lõputute silmuste vältimiseks!):
1 | Application.EnableEvents = Vale |
Lõpuks võib teie VBA-koodi aeglustada, kui Excel proovib lehekatkestusi uuesti arvutada (Märkus: see ei mõjuta kõiki protseduure). DisplayPageBreaks'i väljalülitamiseks kasutage järgmist koodirida:
1 | ActiveSheet.DisplayPageBreaks = Vale |