Bármennyire is jól néz ki, ahogy a VBA makróját manipulálja a képernyőn, segíthet a makró gyorsabb futásában, ha kikapcsolja (letiltja) a ScreenUpdating funkciót.
A képernyőfrissítés letiltása
1. A ScreenUpdating letiltásához a kód elejére tegye ezt a sort:
1 | Application.ScreenUpdating = Hamis |
A ScreenUpdating engedélyezése
2. A ScreenUpdating újbóli engedélyezéséhez írja be ezt a sort a kód végére:
1 | Application.ScreenUpdating = Igaz |
Példa a VBA képernyőfrissítésére
Az eljárás így fog kinézni:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Hamis'Csinálj valamitTartomány ("a1"). Másolási tartomány ("b1")Tartomány ("a2"). Másolási tartomány ("b2")Tartomány ("a3"). Másolási tartomány ("b3")Application.ScreenUpdating = IgazEnd Sub |
Képernyő frissítése Frissítés
A képernyőfrissítés letiltása sokkal gyorsabbá teszi a VBA -kódot, de professzionálisabbá teszi a munkáját. A végfelhasználók általában nem akarják látni az eljárások kulisszatitkait (különösen akkor, ha az eljárás lassan fut). Ezenkívül nem kívánja, hogy a végfelhasználók lássák a kulisszák mögötti funkciókat (pl. Rejtett munkalapok). Javaslom, hogy tiltsa le (és engedélyezze újra) a képernyőfrissítést gyakorlatilag az összes eljárásban.
Vannak azonban olyan esetek, amikor frissíteni szeretné a képernyőt. A képernyő frissítéséhez ideiglenesen vissza kell kapcsolnia a ScreenUpdating funkciót (nincs képernyőfrissítési parancs):
123 | Application.ScreenUpdating = Igaz'Csinálj valamitApplication.ScreenUpdating = Hamis |
VBA beállítások - Gyorsítási kód
Számos más beállítással kell játszani a kód sebességének javítása érdekében.
Az automatikus számítások letiltása hatalmas különbséget jelenthet a sebességben:
1 | Application.Calculation = xlManual |
Az állapotsor letiltása szintén kis különbséget jelent:
1 | Application.DisplayStatusBar = Hamis |
Ha a munkafüzet eseményeket tartalmaz, akkor rendszerint tiltsa le az eseményeket az eljárás elején:
1 | Application.EnableEvents = Hamis |
Végül a VBA-kód lelassulhat, amikor az Excel megpróbálja újra kiszámítani az oldaltöréseket (Megjegyzés: nem minden eljárás lesz hatással). Az oldaltörések megjelenítésének letiltásához használja ezt a kódsort:
1 | ActiveSheet.DisplayPageBreaks = Hamis |