Pe cât de mișto pare să urmărești macrocomenzile VBA manipulând ecranul, poți ajuta Macro-ul să ruleze mai repede dacă oprești (dezactivezi) ScreenUpdating.
Dezactivați ScreenUpdating
1. Pentru a dezactiva ScreenUpdating, la începutul codului dvs. puneți această linie:
1 | Application.ScreenUpdating = Fals |
Activați ScreenUpdating
2. Pentru a reactiva ScreenUpdating, la sfârșitul codului, puneți această linie:
1 | Application.ScreenUpdating = Adevărat |
Exemplu VBA ScreenUpdating
Procedura dvs. va arăta astfel:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Fals'Fă cevaGama ("a1"). Gama de copiere ("b1")Gama ("a2"). Gama de copiere ("b2")Gama ("a3"). Gama de copiere ("b3")Application.ScreenUpdating = AdevăratSfârșitul Sub |
Actualizare ecran actualizare
Dezactivarea ScreenUpdating va face ca codul VBA să ruleze MULTE mai repede, dar vă va face și munca să pară mai profesională. Utilizatorii finali nu doresc de obicei să vadă acțiunile din culise ale procedurilor dvs. (mai ales atunci când procedura rulează lent). De asemenea, este posibil să nu doriți ca utilizatorii finali să vadă funcționalitatea din culise (de exemplu, foi de lucru ascunse). Vă recomandăm să dezactivați (și să reactivați) ScreenUpdating în practic toate procedurile dvs.
Cu toate acestea, există anumite momente când doriți ca ecranul să se reîmprospăteze. Pentru a reîmprospăta ecranul, va trebui să reveniți temporar la ScreenUpdating (nu există o comandă de „reîmprospătare” a ecranului):
123 | Application.ScreenUpdating = Adevărat'Fă cevaApplication.ScreenUpdating = Fals |
Setări VBA - Cod de accelerare
Există mai multe alte setări pentru a vă juca pentru a vă îmbunătăți viteza codului.
Dezactivarea calculelor automate poate face o diferență uriașă în viteză:
1 | Application.Calculation = xlManual |
Dezactivarea barei de stare va face, de asemenea, o mică diferență:
1 | Application.DisplayStatusBar = Fals |
Dacă registrul de lucru conține evenimente, ar trebui să dezactivați evenimentele la începutul procedurii:
1 | Application.EnableEvents = Fals |
În sfârșit, codul VBA poate fi încetinit atunci când Excel încearcă să recalculeze pauzele de pagină (Notă: nu toate procedurile vor fi afectate). Pentru a dezactiva afișarea întreruperilor de pagină, utilizați această linie de cod:
1 | ActiveSheet.DisplayPageBreaks = Fals |