Amikor frissít egy cellaértéket, az Excel végigmegy a munkafüzet újraszámításán. Ha közvetlenül az Excelben dolgozik, azt szeretné, hogy ez az esetek 99,9% -ában megtörténjen (kivétel, ha rendkívül nagy munkafüzettel dolgozik). Ez azonban valóban lelassíthatja a VBA -kódot. Jó gyakorlat, ha a makrók elején manuálisra állítja a számításokat, a makrók végén pedig visszaállítja a számításokat. Ha újra kell számolnia a munkafüzetet, akkor manuálisan utasíthatja az Excel számítását.
Kapcsolja ki az automatikus számításokat
Az automatikus számítást egy makróval kikapcsolhatja, ha xlmanual értékre állítja. Használja a következő VBA kódot:
1 | Application.Calculation = xlManual |
Kapcsolja be újra az automatikus számításokat
Az automatikus számítás bekapcsolása az xlAutomatic beállítással:
1 | Alkalmazás. Számítás = xlAutomatikus |
Javaslom, hogy az eljárás legelején tiltsa le az automatikus számításokat, és a végén engedélyezze újra az automatikus számításokat. Így fog kinézni:
Példa az automatikus számítások makró letiltására
12345678 | Részautomatikus_számlázási_példa ()Application.Calculation = xlManual'Csinálj valamitAlkalmazás. Számítás = xlAutomatikusEnd Sub |
Kézi számítás
Ha az automatikus számítások le vannak tiltva, használhatja a Kiszámítja parancs az Excel újraszámítására:
1 | Kiszámítja |
Azt is mondhatja az Excelnek, hogy csak egy munkalapot számítson újra:
1 | Munkalapok ("lap1"). Számolja ki |
Azt is mondhatja a VBA -nak, hogy számoljon át csak egy tartományt (kattintson a VBA számítási módszerekről szóló cikkünk elolvasásához)
Így nézhet ki ez a makró belsejében:
12345678910111213 | Automatikus_alkalmazások_minta_manuális_számítás ()Application.Calculation = xlManual'Csinálj valamit'ÚjraszámításKiszámítja'Csinálj több dolgotAlkalmazás. Számítás = xlAutomatikusEnd Sub |
VBA beállítások - Gyorsítási kód
Ha a célja a kód felgyorsítása, akkor fontolja meg a következő beállítások módosítását is:
A képernyőfrissítés letiltása hatalmas különbséget jelenthet a sebességben:
1 | Application.ScreenUpdating = Hamis |
Az állapotsor kikapcsolása szintén kis különbséget jelent:
1 | Application.DisplayStatusBar = Hamis |
Ha a munkafüzet eseményeket tartalmaz, akkor az eljárások elején is tiltsa le az eseményeket (a kód felgyorsítása és a végtelen ciklusok megelőzése érdekében):
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). A DisplayPageBreaks kikapcsolásához használja ezt a kódsort:
1 | ActiveSheet.DisplayPageBreaks = Hamis |