VBA apskaičiuoti - dabar, darbaknygė, darbalapis arba diapazonas

Ši pamoka išmokys jus visų skirtingų VBA skaičiavimo parinkčių.

Pagal numatytuosius nustatymus „Excel“ apskaičiuoja visas atidarytas darbaknyges kiekvieną kartą, kai keičiama darbaknygė. Tai daroma sekant skaičiavimo medį, kuriame pakeitus langelį A1, atnaujinamos visos ląstelės, kurios priklauso nuo langelio A1 ir pan. Tačiau dėl to jūsų VBA kodas gali būti paleistas nepaprastai lėtai, kaip ir kiekvieną kartą keičiant langelį, „Excel“ turi iš naujo apskaičiuoti.

Norėdami padidinti savo VBA greitį, procedūrų pradžioje dažnai norėsite išjungti automatinius skaičiavimus:

1 Application.Calculation = xlManual

ir vėl įjunkite pabaigoje:

1 Taikymas. Skaičiavimas = xlAutomatinis

Tačiau ką daryti, jei pagal procedūrą norite apskaičiuoti visas (ar dalį) savo darbaknygių? Likusi šios pamokos dalis išmokys jus, ką daryti.

Apskaičiuokite dabar

Galite naudoti komandą Apskaičiuoti, kad viską perskaičiuotumėte (visose atidarytose darbaknygėse):

1 Apskaičiuoti

Paprastai tai yra geriausias būdas naudoti. Tačiau taip pat galite atlikti siauresnius skaičiavimus, kad padidintumėte greitį.

Apskaičiuokite tik lapą

Taip pat galite nurodyti VBA apskaičiuoti tik konkretų lapą.

Šis kodas perskaičiuos aktyvų lapą:

1 ActiveSheet.Skaičiuoti

Šis kodas perskaičiuos „Sheet1“:

1 Lakštai („Sheet1“). Apskaičiuokite

Apskaičiuoti diapazoną

Jei jums reikia siauresnio skaičiavimo, galite nurodyti VBA apskaičiuoti tik langelių diapazoną:

1 Skaičiuoklės („Sheet1“). Diapazonas („a1: a10“). Apskaičiuokite

Apskaičiuokite individualią formulę

Šis kodas apskaičiuos tik atskirą langelio formulę:

1 Diapazonas ("a1"). Apskaičiuokite

Skaičiuoti darbo knygą

Nėra VBA parinkties apskaičiuoti tik visą darbo knygą. Jei reikia apskaičiuoti visą darbaknygę, geriausia naudoti komandą Apskaičiuoti:

1 Apskaičiuoti

Tai apskaičiuos visas atidarytas darbo knygas. Jei tikrai nerimaujate dėl greičio ir norite apskaičiuoti visą darbaknygę, galbūt galėsite būti atrankingesni, kurios darbo knygos vienu metu atidaromos.

Apskaičiuokite darbo knygą - metodai, kurie neveikia

Yra keli būdai, kuriais galite susigundyti, kad priverstumėte VBA apskaičiuoti tik darbaknygę, tačiau nė vienas iš jų neveiks tinkamai.

Šis kodas perkelia kiekvieną darbaknygės darbalapį ir po vieną perskaičiuoja lapus:

1234567 Iš naujo apskaičiuoti_darbo knygą ()Dim ws kaip darbalapisUž kiekvieną ws darbalapiuosews. ApskaičiuokiteKitas wsPabaiga Sub

Šis kodas veiks gerai, jei visi jūsų darbalapiai yra „savarankiški“, tai reiškia, kad nė viename jūsų lape nėra skaičiavimų, nurodančių kitus lapus.

Tačiau, jei jūsų darbalapiai nurodyti kituose lapuose, jūsų skaičiavimai gali būti netinkamai atnaujinti. Pvz., Jei apskaičiuosite „Sheet1“ prieš „Sheet2“, bet „Sheet1“ formulės bus pagrįstos „Sheet2“ skaičiavimais, tada jūsų formulėse nebus naujausių verčių.

Taip pat galite pabandyti pasirinkti visus lapus vienu metu ir apskaičiuoti aktyvųjį lapą:

12 ThisWorkbook.Sheets.SelectActiveSheet.Skaičiuoti

Tačiau tai sukels tą pačią problemą.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave