Tämä opetusohjelma opettaa sinulle kaikki eri laskentavaihtoehdot VBA: ssa.
Oletusarvoisesti Excel laskee kaikki avoimet työkirjat aina, kun työkirjan muutos tehdään. Se tekee tämän seuraamalla laskentapuuta, jossa jos solua A1 muutetaan, se päivittää kaikki solut, jotka tukeutuvat soluun A1 ja niin edelleen. Tämä voi kuitenkin aiheuttaa VBA -koodin suorittamisen erittäin hitaasti, kuten aina, kun solu muuttuu, Excelin on laskettava uudelleen.
Jos haluat lisätä VBA -nopeuttasi, haluat usein poistaa automaattiset laskelmat käytöstä toimenpiteiden alussa:
1 | Application.Calculation = xlManual |
ja ota se uudelleen käyttöön lopussa:
1 | Application.Calculation = xlAutomatic |
Entä jos haluat laskea kaikki (tai osan) työkirjoistasi menettelyn sisällä? Loput tästä opetusohjelmasta opettavat sinulle, mitä tehdä.
Laske nyt
Voit laskea kaiken uudelleen (kaikissa avoimissa työkirjoissa) Laske-komennolla:
1 | Laskea |
Tämä on yleensä paras tapa käyttää. Voit kuitenkin tehdä kapeampia laskelmia nopeuden parantamiseksi.
Laske vain arkki
Voit myös pyytää VBA: ta laskemaan vain tietyn taulukon.
Tämä koodi laskee aktiivisen taulukon uudelleen:
1 | ActiveSheet.Laske |
Tämä koodi laskee taulukon 1 uudelleen:
1 | Sheets ("Sheet1"). Laske |
Laske alue
Jos tarvitset kapeamman laskennan, voit pyytää VBA: ta laskemaan vain solualueen:
1 | Sheets ("Sheet1"). Alue ("a1: a10"). Laske |
Laske yksittäinen kaava
Tämä koodi laskee vain yksittäisen solukaavan:
1 | Alue ("a1"). Laske |
Laske työkirja
Ei ole VBA -vaihtoehtoa laskea vain koko työkirja. Jos sinun on laskettava koko työkirja, paras vaihtoehto on käyttää Laske -komentoa:
1 | Laskea |
Tämä laskee kaikki avoimet työkirjat. Jos olet todella huolissasi nopeudesta ja haluat laskea koko työkirjan, saatat pystyä olemaan valikoivampi siitä, mitkä työkirjat ovat avoinna kerralla.
Laske työkirja - menetelmät, jotka eivät toimi
On olemassa muutamia menetelmiä, joita saatat houkutella käyttämään pakottamaan VBA: n laskemaan vain työkirjan, mutta mikään niistä ei toimi kunnolla.
Tämä koodi kiertää työkirjan jokaisen laskentataulukon läpi ja laskee taulukot uudelleen yksi kerrallaan:
1234567 | Alalaskenta_työkirja ()Dim ws laskentataulukkonaJokaiselle viikolle laskentataulukoissaws. LaskeSeuraava wsEnd Sub |
Tämä koodi toimii hyvin, jos kaikki laskentataulukot ovat "itsenäisiä", eli mikään arkeistasi ei sisällä laskelmia, jotka viittaavat muihin arkeihin.
Jos laskentataulukosi viittaavat muihin arkeihin, laskelmasi eivät ehkä päivity kunnolla. Jos esimerkiksi lasket Sheet1 ennen Sheet2, mutta Sheet1: n kaavat perustuvat Sheet2: ssa tehtyihin laskelmiin, kaavat eivät sisällä uusimpia arvoja.
Voit myös yrittää valita kaikki taulukot kerralla ja laskea aktiivisen taulukon:
12 | ThisWorkbook.Sheets.SelectActiveSheet.Laske |
Tämä aiheuttaa kuitenkin saman ongelman.