10 võimalust makrode kiirendamiseks

Kui teie Exceli makrod muutuvad üha tugevamaks ja keerukamaks, võite avastada, et nende jõudlus väheneb. Makrode üle arutledes on sõna jõudlus tavaliselt kiiruse sünonüümiks . Kiirus on see, kui kiiresti teie VBA protseduurid ettenähtud ülesanded täidavad. Järgmised on kümme viisi, kuidas hoida oma Exceli makrosid optimaalsel jõudluse tasemel.

Lehtarvutuste peatamine

Kas teadsite, et iga kord, kui lahtrit, mis mõjutab teie arvutustabeli valemit, muudetakse või manipuleeritakse, arvutab Excel kogu töölehe ümber? Töölehtedel, millel on palju valemeid, võib see käitumine teie makrosid drastiliselt aeglustada.

Saate kasutada atribuuti Application.Calculation, et käskida Excelil lülituda käsitsi arvutamise režiimi. Kui töövihik on käsitsi arvutamise režiimis, ei arvuta töövihikut uuesti enne, kui käivitate arvutuse, vajutades klahvi F9.

Asetage Excel käsitsi arvutamise režiimi, käivitage kood ja lülitage seejärel tagasi automaatsele arvutusrežiimile.

Alammakro1()
Application.Calculation = xlCalculationManual
 'Paigutage oma makrokood siia
Application.Calculation = xlCalculationAutomatic
Lõpeta alam

Kui seadistate arvutusrežiimi tagasi olekusse xlCalculationAutomatic, käivitatakse automaatselt töölehe ümberarvutamine, nii et pärast makro käivitamist pole vaja klahvi F9 vajutada.

Leheekraani värskendamise keelamine

Võite märgata, et makrode käitamisel ekraan vilgub üsna palju. See vilkumine tähendab, et Excel üritab ekraani ümber joonistada, et näidata töölehe hetkeseisu. Kahjuks võtab Excel iga kord, kui ekraani ümber joonistab, mäluressursse.

Saate kasutada atribuuti Application.ScreenUpdating, et keelata ekraanivärskendused, kuni makro on lõpetatud. Ekraani värskendamise keelamine säästab aega ja ressursse, võimaldades teie makrol veidi kiiremini töötada. Kui teie makrokood on töötamise lõpetanud, saate ekraani värskendamise uuesti sisse lülitada.

Alammakro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = Vale
 'Paigutage oma makrokood siia
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = Tõene
Lõpeta alam

Kui olete atribuudi ScreenUpdating väärtusele True tagasi seadnud, käivitab Excel automaatselt ekraani uuesti joonistamise.

Olekuriba värskenduste väljalülitamine

Exceli akna allservas kuvatav Exceli olekuriba kuvab tavaliselt teatud toimingute edenemist Excelis. Kui teie makro töötab suure hulga andmetega, võtab olekuriba osa ressurssidest.

Oluline on märkida, et ekraani värskendamise väljalülitamine on olekuriba kuva väljalülitamisest erinev. Olekuriba värskendamine jätkub ka siis, kui keelate ekraani värskendamise. Saate kasutada atribuuti Application.DisplayStatusBar mis tahes olekuriba värskenduste ajutiseks keelamiseks, parandades veelgi oma makro jõudlust.

Alammakro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = Vale
Application.DisplayStatusBar = Vale
 'Paigutage oma makrokood siia
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = Tõene
Application.DisplayStatusBar = Tõene
Lõpeta alam

Käske Excelil sündmusi ignoreerida

Saate rakendada makrosid sündmuste protseduuridena, käsitades Excelil käivitada teatud koodi, kui tööleht või töövihik muutub.

Mõnikord teevad standardsed makrod muudatusi, mis käivitavad sündmuse protseduuri. Näiteks kui teil on standardmakro, mis manipuleerib mitut lahtrit lehel Sheet1, siis iga kord, kui sellel lehel mõnda lahtrit muudetakse, peab teie makro sündmuse Worksheet_Change käitamise ajaks peatama.

Saate lisada veel ühe jõudluse suurendamise taseme, kasutades atribuuti EnableEvents, et käskida Excelil makro käitamise ajal sündmusi ignoreerida.

Enne makro käivitamist määrake atribuudi EnableEvents väärtuseks False. Kui teie makrokood on töötamise lõpetanud, saate atribuudi EnableEvents väärtuseks uuesti määrata True.

Alammakro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = Vale
Application.DisplayStatusBar = Vale
Application.EnableEvents = Vale
 'Paigutage oma makrokood siia
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = Tõene
Application.DisplayStatusBar = Tõene
Application.EnableEvents = Tõene
Lõpeta alam

Lehekülgede peitmine

Iga kord, kui teie makro muudab ridade arvu, veergude arvu või muudab töölehe lehekülje seadistust, on Excel sunnitud võtma aega, et arvutada lehel kuvatud leheküljevahed.

Seda käitumist saate vältida, kui peidate enne makro käivitamist lehepaused.

Lehepiiride peitmiseks määrake lehe atribuudi DisplayPageBreaks väärtuseks False. Kui soovite pärast makro käitamist jätkata lehevahede kuvamist, määrake lehe atribuudi DisplayPageBreaks väärtuseks tagasi Tõene.

Alammakro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = Vale
Application.DisplayStatusBar = Vale
Application.EnableEvents = Vale
Activesheet.DisplayPageBreaks = Vale
 'Paigutage oma makrokood siia
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = Tõene
Application.DisplayStatusBar = Tõene
Application.EnableEvents = Tõene
Activesheet.DisplayPageBreaks = Tõene
Lõpeta alam

Pivot-tabeli värskenduste peatamine

Kui teie makro manipuleerib pivot-tabeleid, mis sisaldavad suuri andmeallikaid, võite toimida halvasti, kui teete toiminguid, näiteks dünaamilist liigendväljade lisamist või teisaldamist.

Saate parandada oma makro jõudlust, peatades liigendtabeli ümberarvutamise seni, kuni kõik pöördevälja muudatused on tehtud. Ümberarvutamise edasilükkamiseks määrake lihtsalt atribuudi PivotTable.ManualUpdate väärtuseks Tõene, käivitage oma makrokood ja seejärel määrake ümberarvutamise käivitamiseks atribuudi PivotTable.ManualUpdate väärtuseks False.

Alammakro1()
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=True
 'Paigutage oma makrokood siia
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=False
Lõpeta alam

Vältige kopeerimist ja kleepimist

Oluline on meeles pidada, et kuigi Macro Recorder säästab teie eest VBA-koodi kirjutamisega aega, ei kirjuta see alati kõige tõhusamat koodi. Hea näide on see, kuidas Macro Recorder jäädvustab kõik kopeerimis- ja kleepimistoimingud, mida te salvestamise ajal teete.

Saate anda oma makrodele väikese tõuke, lõigates välja vahendaja ja kopeerides otse ühest lahtrist sihtlahtrisse. See alternatiivne kood kasutab lõikepuhvrist möödahiilimiseks ja lahtri A1 sisu otse lahtrisse B1 kopeerimiseks argumendi Destination.

Vahemik("A1").Kopeeri sihtkoht:=Range("B1")

Kui teil on vaja kopeerida ainult väärtusi (mitte vormindamist ega valemeid), saate jõudlust veelgi parandada, vältides kopeerimismeetodit. Lihtsalt määrake sihtlahtri väärtuseks sama väärtus, mis leiti lähtelahtris. See meetod on umbes 25 korda kiirem kui kopeerimismeetodi kasutamine:

Vahemik("B1").Väärtus = Vahemik("A1").Väärtus

Kui teil on vaja ühest lahtrist teise kopeerida ainult valemeid (mitte väärtusi ega vormindamist), saate sihtlahtri valemi määrata samale valemile, mis sisaldub lähtelahtris:

Vahemik("B1").Valem = Vahemik("A1").Valem

Kasutades lauset With

Makrode salvestamisel manipuleerite sageli sama objektiga rohkem kui üks kord. Saate säästa aega ja parandada jõudlust, kui kasutate käsku With, et sooritada antud objektil ühe pildiga mitu toimingut.

Järgmises näites kasutatav avaldus käseb Excelil rakendada kõiki vormingumuudatusi korraga:

    Vahemikuga("A1").Font
    .Bold = tõsi
    .Italic = Tõsi
    .Underline = xlUnderlineStyleSingle
    Lõpeta

Kui hakkate harjumuseks tükeldada tegevusi With-lausetesse, ei muuda teie makrod mitte ainult kiiremini töös, vaid hõlbustab ka makrokoodi lugemist.

Valiku meetodi vältimine

Makrosalvestile meeldib kasutada valikumeetodit, et objekte enne nendega toimingute tegemist selgesõnaliselt valida. Üldiselt pole objekte enne nendega töötamist vaja valida. Tegelikult saate makro jõudlust märkimisväärselt parandada, kui ei kasuta Select-meetodit.

Pärast makrode salvestamist muutke loodud koodi valimise meetodite eemaldamiseks harjumuseks. Sel juhul näeks optimeeritud kood välja järgmine:

    Sheets("Leht1"). Vahemik("A1"). ValemR1C1 = "1000"
    Sheets("Leht2"). Vahemik("A1"). ValemR1C1 = "1000"
    Sheets("Sheet3"). Vahemik("A1"). ValemR1C1 = "1000"

Pange tähele, et mitte midagi valitakse. Kood kasutab vajalike toimingute rakendamiseks lihtsalt objekti hierarhiat.

Reiside piiramine töölehele

Teine viis makrode kiirendamiseks on piirata koodis töölehe andmetele viitamise kordade arvu. Töölehelt andmete hankimine on alati vähem tõhus kui mälust. See tähendab, et teie makrod töötavad palju kiiremini, kui nad ei pea töölehega korduvalt suhtlema.

Näiteks sunnib järgmine lihtne kood VBA-d pidevalt naasma rakendusse Sheets (“Sheet1”).Range (“A1”), et saada If-lauses tehtava võrdluse jaoks vajalik arv:

Aruandekuu jaoks = 1 kuni 12
     Kui Vahemik("A1").Väärtus = AruandeKuu Siis
     MsgBox 1000000 / Aruannekuu
Lõpeta Kui
Järgmine aruannekuu

Palju tõhusam meetod on salvestada väärtus Sheets(“Sheet1”).Range(“A1”) muutujasse nimega MyMonth. Sel viisil viitab kood töölehe asemel muutujale MyMonth:

Dim MyMonth täisarvuna
Minukuu = Vahemik("A1").Väärtus
Aruandekuu jaoks = 1 kuni 12
Kui Minukuu = Aruandekuu Siis
MsgBox 1000000 / Aruannekuu
Lõpeta Kui
Järgmine aruannekuu

Kaaluge muutujate võimendamist mälus olevate andmetega töötamiseks, mitte töölehtede otsesele viitamisele.

Leave a Comment

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

Uurige kümmet nõuannet Microsoft Teamsiga parema koosolekukogemuse saamiseks, sealhulgas märkmete tegemine, tausta hägustamine, vaigistamine ja koosolekute salvestamine.

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Lühikeses Word 2013 dokumendis saate kommentaare hõlpsalt sirvida ja uurida. Siit leiate samm-sammult, kuidas kommentaare lugeda ja eemaldada.

Kuidas parandada Word 2016 tavalist malli

Kuidas parandada Word 2016 tavalist malli

Mõnikord varitseb kurjus selles, mis peaks olema Word 2016 peamises mõistlikkuse hoidlas: tavalises mallifailis. Õpi, kuidas taastada normaalne mall ja eemaldada probleemid.

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s, et luua selgem ja professionaalsem ilme. Meie juhend aitab sul lihtsasti navigeerida Wordi funktsioonide kaudu ja tutvustab esimeses reas taande ning rippuva taande lisamise viise.

Kuidas Outlook 2016-s uusi kiireid samme luua

Kuidas Outlook 2016-s uusi kiireid samme luua

Lisaks kuuele kiirtoimingule, mis kuvatakse Outlooki esmakordsel installimisel, on teil valida veelgi rohkemate Quick Step mallide hulgast.

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kui olete esitluse ajal PowerPointi slaididele joonistamiseks kasutanud pliiatsit või markerit, saate joonised järgmise esitluse jaoks salvestada või need kustutada, nii et järgmisel näitamisel alustate puhaste PowerPointi slaididega. Pliiatsi ja markeri jooniste kustutamiseks järgige neid juhiseid: joonte kustutamine […]

Stiili teegi sisu rakenduses SharePoint 2010

Stiili teegi sisu rakenduses SharePoint 2010

Style'i teek sisaldab CSS-faile, XSL-faile ja eelmääratletud mallilehtede, lehepaigutuste ja juhtelementide poolt kasutatavaid pilte rakenduses SharePoint 2010. CSS-failide leidmiseks avaldamissaidi stiiliteegist: valige saidi toimingud → vaade. Kogu saidi sisu. Ilmub saidi sisu. Style raamatukogu asub […]

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Ärge uputage oma publikut tohutute numbritega. Microsoft Excelis saate parandada oma armatuurlaudade ja aruannete loetavust, vormindades numbrid tuhandetes või miljonites.

Kuidas SharePointi saite jagada ja jälgida

Kuidas SharePointi saite jagada ja jälgida

Siit saate teada, kuidas kasutada SharePointi suhtlusvõrgustiku tööriistu, mis võimaldavad üksikisikutel ja rühmadel suhelda, koostööd teha, jagada ja ühendada.

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Julia kuupäevi kasutatakse tootmiskeskkondades sageli ajatemplina ja partiinumbri kiirviitena. Seda tüüpi kuupäevade kodeerimine võimaldab jaemüüjatel, tarbijatel ja teenindusagentidel tuvastada toote valmistamise aja ja seega toote vanuse. Juliuse kuupäevi kasutatakse ka programmeerimises, sõjaväes ja astronoomias. Erinevad […]