Nii lahe kui see ka välja näeb, vaadates, kuidas teie VBA makro ekraaniga manipuleerib, saate aidata oma makro kiiremal töötamisel, kui lülitate ScreenUpdating välja (keelate).
Keela ScreenUpdating
1. ScreenUpdatingi keelamiseks sisestage oma koodi algusesse see rida:
1 | Application.ScreenUpdating = Vale |
Luba ekraaniuuendus
2. ScreenUpdating uuesti lubamiseks sisestage oma koodi lõppu see rida:
1 | Application.ScreenUpdating = Tõsi |
VBA ekraaniuuenduse näide
Seejärel näeb teie protseduur välja selline:
1234567891011 | Alamekraani värskendamise_näide ()Application.ScreenUpdating = Vale'Tee midagiVahemik ("a1"). Kopeeri vahemik ("b1")Vahemik ("a2"). Kopeeri vahemik ("b2")Vahemik ("a3"). Kopeeri vahemik ("b3")Application.ScreenUpdating = TõsiEnd Sub |
Ekraani värskendamine Värskenda
ScreenUpdatingi keelamine muudab teie VBA -koodi PALJU kiiremaks, kuid muudab teie töö ka professionaalsemaks. Lõppkasutajad ei taha tavaliselt näha teie protseduuride kulisside taga toiminguid (eriti kui protseduur kulgeb aeglaselt). Samuti ei pruugi te soovida, et lõppkasutajad näeksid kulisside taga funktsioone (nt peidetud töölehed). Soovitan ekraaniuuenduse keelata (ja uuesti lubada) peaaegu kõigis teie protseduurides.
Siiski on aegu, mil soovite ekraani värskendada. Ekraani värskendamiseks peate ajutiselt uuesti sisse lülitama ScreenUpdating (ekraani värskendamise käsku pole):
123 | Application.ScreenUpdating = Tõsi'Tee midagiApplication.ScreenUpdating = Vale |
VBA seaded - kiirenduskood
Koodikiiruse parandamiseks tuleb mängida veel mitmete sätetega.
Automaatarvutuste väljalülitamine võib tohutult muuta kiirust:
1 | Application.Calculation = xlManual |
Olekuriba keelamisel on ka väike erinevus:
1 | Application.DisplayStatusBar = Vale |
Kui teie töövihik sisaldab sündmusi, peaksite tavaliselt protseduuri alguses sündmused keelama.
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). Lehevahetuste kuvamise keelamiseks kasutage seda koodirida:
1 | ActiveSheet.DisplayPageBreaks = Vale |