VBA számítás - most, munkafüzet, munkalap vagy tartomány

Ez az oktatóanyag megtanítja a VBA különböző számítási lehetőségeit.

Alapértelmezés szerint az Excel minden nyitott munkafüzetet kiszámít minden munkafüzet módosításkor. Ezt úgy hajtja végre, hogy követ egy számítási fát, ahol az A1 cella módosítása esetén frissíti az összes cellát, amely az A1 cellára és így tovább támaszkodik. Ez azonban a VBA -kód futtatását okozhatja rendkívül lassan, mint minden alkalommal, amikor egy cella megváltozik, az Excelnek újra kell számolnia.

A VBA sebesség növelése érdekében gyakran ki kell kapcsolnia az automatikus számításokat az eljárások elején:

1 Application.Calculation = xlManual

és a végén engedélyezze újra:

1 Alkalmazás. Számítás = xlAutomatikus

Mi van azonban akkor, ha az összes munkafüzetet (vagy annak egy részét) ki szeretné számítani az eljárás során? Az oktatóanyag többi része megtanítja, mit kell tennie.

Számoljon most

A Calculate paranccsal mindent újra kiszámíthat (minden nyitott munkafüzetben):

1 Kiszámítja

Általában ez a legjobb módszer. A jobb sebesség érdekében azonban szűkebb számításokat is végezhet.

Csak a lap kiszámítása

Azt is mondhatja a VBA -nak, hogy csak egy adott lapot számítson ki.

Ez a kód újraszámítja az aktív lapot:

1 ActiveSheet. Számítás

Ez a kód újraszámítja az 1. táblázatot:

1 Táblázatok ("Sheet1"). Számítsa ki

Tartomány kiszámítása

Ha szűkebb számítást igényel, akkor utasíthatja a VBA -t, hogy csak egy cellatartományt számítson ki:

1 Táblázatok ("Sheet1"). Tartomány ("a1: a10"). Számítsa ki

Egyéni képlet kiszámítása

Ez a kód csak az egyes cellák képletét számítja ki:

1 Tartomány ("a1"). Számítsa ki

Számítsa ki a munkafüzetet

Nincs VBA lehetőség, hogy csak egy teljes munkafüzetet számítson ki. Ha egy teljes munkafüzetet kell kiszámítania, akkor a legjobb megoldás a Calculate parancs használata:

1 Kiszámítja

Ez kiszámítja az összes nyitott munkafüzetet. Ha valóban aggódik a gyorsaság miatt, és egy teljes munkafüzetet szeretne kiszámítani, akkor lehet, hogy szelektívebben választja ki, hogy mely munkafüzetek vannak nyitva egyszerre.

Számítsa ki a munkafüzetet - nem működő módszerek

Van néhány módszer, amelyeket arra kényszeríthet, hogy kényszerítse a VBA -t, hogy csak egy munkafüzetet számítson ki, azonban egyikük sem fog megfelelően működni.

Ez a kód végigmegy a munkafüzet minden munkalapján, és egyenként újraszámítja a lapokat:

1234567 Újraszámítás_Munkafüzet ()Dim ws munkalapkéntMinden egyes munkalaphozws. Számítsa kiKövetkező wsEnd Sub

Ez a kód akkor működik jól, ha minden munkalapja „önálló”, vagyis egyik lapja sem tartalmaz olyan számításokat, amelyek más lapokra vonatkoznak.

Ha azonban a munkalapjai más lapokra hivatkoznak, előfordulhat, hogy a számítások nem frissülnek megfelelően. Például, ha a Sheet1-et a Sheet2 előtt számítja ki, de a Sheet1 képletei a Sheet2-ben elvégzett számításokra támaszkodnak, akkor a képletek nem tartalmazzák a legfrissebb értékeket.

Megpróbálhatja egyszerre kiválasztani az összes lapot, és kiszámítani az aktív lapot:

12 ThisWorkbook.Sheets.SelectActiveSheet. Számítás

Ez azonban ugyanazt a problémát okozza.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave