See õpetus õpetab teile kõiki VBA arvutusvalikuid.
Vaikimisi arvutab Excel kõik avatud töövihikud iga kord, kui töövihikut muudetakse. Ta teeb seda, järgides arvutuspuud, kus lahtri A1 muutmisel värskendatakse kõiki lahtreid A1 ja nii edasi tuginevaid lahtreid. See võib aga põhjustada teie VBA -koodi töötamise äärmiselt aeglaselt, nagu iga lahtri muutmisel, peab Excel uuesti arvutama.
VBA kiiruse suurendamiseks soovite sageli oma protseduuride alguses automaatsed arvutused keelata.
1 | Application.Calculation = xlManual |
ja lubage see lõpus uuesti:
1 | Rakendus.Kalkulatsioon = xlAutomaatne |
Aga mis siis, kui soovite oma protseduuri raames arvutada kõik (või osa) oma töövihikutest? Selle õpetuse ülejäänud osa õpetab teile, mida teha.
Arvutage kohe
Kõigi (kõikides avatud töövihikutes) uuesti arvutamiseks saate kasutada käsku Arvuta.
1 | Arvutama |
Tavaliselt on see parim viis kasutada. Kiiruse parandamiseks saate siiski teha ka kitsamaid arvutusi.
Arvuta ainult leht
Samuti võite öelda, et VBA arvutab ainult konkreetse lehe.
See kood arvutab aktiivse lehe uuesti:
1 | ActiveSheet. Arvutage |
See kood arvutab lehe 1 ümber:
1 | Arvutustabelid ("Leht1") |
Arvutage vahemik
Kui vajate kitsamat arvutust, võite käskida VBA -l arvutada ainult lahtrite vahemik.
1 | Arvutustabelid ("leht 1"). Vahemik ("a1: a10"). Arvutage |
Arvutage individuaalne valem
See kood arvutab ainult üksiku lahtri valemi:
1 | Vahemik ("a1"). Arvutage |
Arvuta töövihik
Puudub VBA võimalus arvutada ainult kogu töövihik. Kui peate arvutama kogu töövihiku, on parim võimalus kasutada käsku Arvuta:
1 | Arvutama |
See arvutab kõik avatud töövihikud. Kui olete tõesti mures kiiruse pärast ja soovite arvutada kogu töövihiku, võite olla valivam, millised töövihikud on korraga avatud.
Arvutage töövihik - meetodid, mis ei tööta
On paar meetodit, mida võiksite kiusata kasutada, et sundida VBA -d arvutama ainult töövihikut, kuid ükski neist ei tööta korralikult.
See kood vaatab läbi töövihiku iga töölehe ja arvutab lehed ükshaaval ümber:
1234567 | Alamarvestus_ töövihik ()Dim ws töölehenaIga ws töölehtedelws. ArvutageJärgmine wsEnd Sub |
See kood töötab hästi, kui kõik teie töölehed on iseseisvad, mis tähendab, et ükski leht ei sisalda arvutusi, mis viitavad teistele lehtedele.
Kui aga teie töölehed viitavad teistele lehtedele, ei pruugi teie arvutused korralikult uueneda. Näiteks kui arvutate Sheet1 enne Sheet2, kuid Sheet1 valemid toetuvad Sheet2-s tehtud arvutustele, ei sisalda teie valemid kõige värskemaid väärtusi.
Samuti võite proovida valida kõik lehed korraga ja arvutada aktiivlehe:
12 | ThisWorkbook.Sheets.SelectActiveSheet. Arvutage |
See põhjustab aga sama probleemi.