VBA Izračunaj - sada, radna knjiga, radni list ili raspon

Ovaj će vas vodič naučiti sve različite mogućnosti izračuna u VBA -i.

Prema zadanim postavkama Excel izračunava sve otvorene radne knjige svaki put kada se izvrši promjena radne knjige. To čini slijedeći stablo izračunavanja, ako se ćelija A1 promijeni, ažurira sve ćelije koje se oslanjaju na ćeliju A1 itd. Međutim, to može uzrokovati pokretanje vašeg VBA koda izuzetno sporo, kao i svaki put kad se ćelija promijeni, Excel mora ponovno izračunati.

Kako biste povećali brzinu VBA -a, često ćete htjeti onemogućiti automatske izračune na početku vaših postupaka:

1 Primjena.Izračun = xlPriručnik

i ponovno ga omogućiti na kraju:

1 Primjena.Izračun = xlAutomatski

Međutim, što ako želite izračunati sve (ili dio) svojih radnih bilježnica unutar svog postupka? Ostatak ovog vodiča naučit će vas što učiniti.

Izračunaj sada

Za ponovno izračunavanje svega (u svim otvorenim radnim knjigama) možete koristiti naredbu Izračunaj:

1 Izračunati

Ovo je obično najbolji način korištenja. Međutim, za poboljšanu brzinu možete izvesti i uske izračune.

Izračunajte samo list

Također možete reći VBA -i da izračuna samo određeni list.

Ovaj kôd će ponovno izračunati aktivni list:

1 ActiveSheet.Calculate

Ovaj kôd će ponovno izračunati List 1:

1 Listovi ("List1"). Izračunajte

Izračunaj raspon

Ako trebate uski izračun, VBA -u možete reći da izračuna samo raspon ćelija:

1 Listovi ("List1"). Raspon ("a1: a10"). Izračunajte

Izračunajte individualnu formulu

Ovaj kôd izračunat će samo formulu pojedinačne ćelije:

1 Raspon ("a1"). Izračunajte

Izračunajte radnu bilježnicu

Ne postoji VBA opcija za izračunavanje samo cijele radne knjige. Ako trebate izračunati cijelu radnu knjigu, najbolja opcija je korištenje naredbe Izračunaj:

1 Izračunati

To će izračunati sve otvorene radne knjige. Ako ste doista zabrinuti zbog brzine i želite izračunati cijelu radnu knjigu, možda biste mogli biti selektivniji u pogledu toga koje su radne knjige otvorene odjednom.

Izračunajte radnu knjigu - metode koje ne funkcioniraju

Postoji nekoliko metoda koje biste mogli doći u napast da biste prisilili VBA da izračuna samo radnu knjigu, no nitko od njih neće raditi ispravno.

Ovaj kôd će se provlačiti kroz svaki radni list u radnoj knjizi i ponovno izračunavati listove jedan po jedan:

1234567 Sub Recalculate_Workbook ()Zatamni kao radni listZa svaki ws u radnim listovimaws.IzračunajSljedeći wsKraj podm

Ovaj kôd će dobro funkcionirati ako su svi vaši radni listovi "samostalni", što znači da niti jedan vaš list ne sadrži izračune koji se odnose na druge listove.

Međutim, ako se vaši radni listovi odnose na druge listove, vaši se izračuni možda neće ispravno ažurirati. Na primjer, ako izračunate Sheet1 prije Sheet2, ali formule Sheet1 oslanjaju se na izračune izvedene u Sheet2, tada vaše formule neće sadržavati najnovije vrijednosti.

Također možete pokušati odabrati sve listove odjednom i izračunati aktivnu tablicu:

12 ThisWorkbook.Sheets.OdaberiActiveSheet.Calculate

Međutim, to će uzrokovati isti problem.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave