Šī apmācība iemācīs jums dažādas VBA aprēķināšanas iespējas.
Pēc noklusējuma programma Excel aprēķina visas atvērtās darbgrāmatas katru reizi, kad tiek mainīta darbgrāmata. Tas tiek darīts, sekojot aprēķinu kokam, kur, mainot šūnu A1, tā atjaunina visas šūnas, kas paļaujas uz šūnu A1 utt. Tomēr tas var izraisīt jūsu VBA koda darbību ārkārtīgi lēni, tāpat kā katru reizi, kad mainās šūna, programmai Excel ir jāveic pārrēķins.
Lai palielinātu VBA ātrumu, procedūru sākumā bieži vēlaties atspējot automātiskos aprēķinus:
1 | Lietojumprogramma. Aprēķins = xlManual |
un beigās to atkal iespējojiet:
1 | Pielietojums. Aprēķins = xl Automātisks |
Tomēr, ko darīt, ja procedūras laikā vēlaties aprēķināt visas (vai daļu) darbgrāmatu? Pārējā šīs apmācības daļa iemācīs jums, kā rīkoties.
Aprēķiniet tūlīt
Varat izmantot komandu Aprēķināt, lai visu pārrēķinātu (visās atvērtās darbgrāmatās):
1 | Aprēķināt |
Parasti šī ir labākā izmantotā metode. Tomēr, lai uzlabotu ātrumu, varat veikt arī šaurākus aprēķinus.
Aprēķināt tikai lapu
Jūs varat arī pateikt VBA aprēķināt tikai noteiktu lapu.
Šis kods pārrēķinās aktīvo lapu:
1 | ActiveSheet. Aprēķināt |
Šis kods pārrēķinās lapu 1:
1 | Izklājlapas ("Sheet1"). Aprēķināt |
Aprēķināt diapazonu
Ja jums ir nepieciešams šaurāks aprēķins, varat pateikt VBA aprēķināt tikai šūnu diapazonu:
1 | Izklājlapas ("Sheet1"). Diapazons ("a1: a10"). Aprēķināt |
Aprēķiniet individuālo formulu
Šis kods aprēķinās tikai atsevišķu šūnu formulu:
1 | Diapazons ("a1"). Aprēķiniet |
Aprēķināt darbgrāmatu
Nav VBA iespēju aprēķināt tikai visu darbgrāmatu. Ja jums ir jāaprēķina visa darbgrāmata, labākā iespēja ir izmantot komandu Aprēķināt:
1 | Aprēķināt |
Tādējādi tiks aprēķinātas visas atvērtās darbgrāmatas. Ja jūs patiešām uztrauc ātrums un vēlaties aprēķināt visu darbgrāmatu, iespējams, varēsit būt selektīvāks par to, kuras darbgrāmatas ir atvērtas vienlaikus.
Aprēķiniet darbgrāmatu - metodes, kas nedarbojas
Ir vairākas metodes, kuras jūs varētu izmantot kārdinājums izmantot, lai piespiestu VBA aprēķināt tikai darbgrāmatu, taču neviena no tām nedarbosies pareizi.
Šis kods pārvietos katru darbgrāmatas darblapu un pārrēķinās lapas pa vienam:
1234567 | Pārrēķināt_darba grāmatu ()Dim ws kā darblapaPar katru ws darblapāsws. AprēķinātNākamais wsBeigu apakš |
Šis kods darbosies labi, ja visas jūsu darblapas ir “autonomas”, kas nozīmē, ka nevienā no jūsu lapām nav aprēķinu, kas attiecas uz citām lapām.
Tomēr, ja jūsu darblapas attiecas uz citām lapām, jūsu aprēķini var netikt pareizi atjaunināti. Piemēram, ja aprēķināt lapu Sheet1 pirms Sheet2, bet Sheet1 formulas balstās uz Sheet2 veiktajiem aprēķiniem, tad formulas nesatur visjaunākās vērtības.
Varat arī mēģināt atlasīt visas lapas vienlaikus un aprēķināt aktīvo lapu:
12 | ThisWorkbook.Sheets.SelectActiveSheet. Aprēķināt |
Tomēr tas radīs to pašu problēmu.