VBA fyrir Excel 2016 er hratt, en það er ekki alltaf nógu hratt. (Tölvuforrit eru aldrei nógu hröð.) Haltu áfram að lesa til að uppgötva nokkur forritunardæmi sem þú getur notað til að flýta fyrir fjölvunum þínum.
Slökkt á skjáuppfærslu
Þegar þú keyrir makró geturðu hallað þér aftur og horft á allar aðgerðir á skjánum sem eiga sér stað í makróinu. Þó að það geti verið lærdómsríkt að gera þetta, er það oft pirrandi eftir að þú færð makróið að virka almennilega og getur dregið verulega úr afköstum makrósins þíns. Sem betur fer geturðu slökkt á skjáuppfærslunni sem venjulega á sér stað þegar þú keyrir fjölvi. Til að slökkva á skjáuppfærslu skaltu nota eftirfarandi yfirlýsingu:
Application.ScreenUpdating = False
Ef þú vilt að notandinn sjái hvað er að gerast hvenær sem er meðan á fjölvi stendur, notaðu eftirfarandi yfirlýsingu til að kveikja aftur á skjáuppfærslu:
Application.ScreenUpdating = True
Til að sýna fram á muninn á hraða skaltu framkvæma þetta einfalda fjölvi, sem fyllir svið með tölum:
Sub FillRange()
Dimm r eins lengi, c eins lengi
Dim tala eins löng
Tala = 0
Fyrir r = 1 til 50
Fyrir c = 1 til 50
Tala = Tala + 1
Hólf (r, c). Veldu
Frumur(r, c).Value = Number
Næst c
Næsta r
End Sub
Þú sérð hvern reit vera valinn og gildið fært inn í reitina. Settu nú eftirfarandi yfirlýsingu inn í byrjun málsmeðferðarinnar og framkvæmdu hana aftur:
Application.ScreenUpdating = False
Sviðið fyllist miklu hraðar og þú sérð ekki niðurstöðuna fyrr en makróinu er lokið og skjáuppfærsla er (sjálfkrafa) stillt á True.
Þegar þú ert að kemba kóða endar keyrsla forrita stundum einhvers staðar í miðjunni án þess að þú hafir kveikt aftur á skjáuppfærslu. Þetta veldur stundum að forritsgluggi Excel verður algjörlega ósvörun. Leiðin út úr þessu frosna ástandi er einföld: Farðu aftur í VBE og keyrðu eftirfarandi setningu í Immediate glugganum:
Application.ScreenUpdating = True
Slökkt á sjálfvirkum útreikningum
Ef þú ert með vinnublað með mörgum flóknum formúlum gætirðu komist að því að þú getur hraðað töluvert með því að stilla útreikningshaminn á handvirkt á meðan fjölvi er keyrt. Þegar makróinu lýkur skaltu stilla útreikningshaminn aftur á sjálfvirkan.
Eftirfarandi yfirlýsing setur Excel útreikningsham á handvirkt:
Application.Calculation = xlCalculationManual
Framkvæmdu næstu setningu til að stilla útreikningshaminn á sjálfvirkan:
Application.Calculation = xlCalculationAutomatic
Ef kóðinn þinn notar frumur með formúluliðurstöður þýðir það að slökkva á útreikningi að frumurnar verða ekki endurreiknaðar nema þú segir Excel beinlínis að gera það!
Útrýma þessum leiðinlegu viðvörunarskilaboðum
Eins og þú veist getur fjölvi sjálfkrafa framkvæmt röð aðgerða. Í mörgum tilfellum geturðu byrjað á macro og farið svo að hanga í pásuherberginu á meðan Excel gerir sitt. Sumar Excel-aðgerðir birta hins vegar skilaboð sem krefjast mannlegra viðbragða. Þessar gerðir af skilaboðum þýða að þú getur ekki skilið Excel eftir eftirlitslaus á meðan það keyrir makróið þitt - nema þú þekkir leyndarmálið.

Þú getur gefið Excel fyrirmæli um að birta ekki þessar tegundir viðvarana meðan á fjölvi stendur.
Leyndarmálið til að forðast þessi viðvörunarskilaboð er að setja eftirfarandi VBA yfirlýsingu inn í fjölvi þinn:
Application.DisplayAlerts = False
Excel framkvæmir sjálfgefna aðgerð fyrir þessar tegundir skilaboða. Ef blað er eytt er sjálfgefin aðgerð Eyða. Ef þú ert ekki viss um hver sjálfgefna aðgerðin er skaltu framkvæma próf til að sjá hvað gerist.
Þegar ferlinu lýkur endurstillir Excel eiginleikann DisplayAlerts sjálfkrafa á True. Ef þú þarft að kveikja aftur á viðvörunum áður en ferlinu lýkur skaltu nota þessa yfirlýsingu:
Application.DisplayAlerts = True
Einfaldar tilvísanir í hlut
Eins og þú veist líklega nú þegar geta tilvísanir í hluti orðið mjög langar. Til dæmis getur fullgild tilvísun í Range hlut litið svona út:
Vinnubækur(„MyBook.xlsx“). Vinnublöð(“Sheet1“) _
.Range(„Vextir“)
Ef fjölvi notar þetta svið oft gætirðu viljað búa til hlutbreytu með því að nota Setja skipunina. Til dæmis, eftirfarandi setning úthlutar þessum Range hlut til hlutbreytu sem heitir Rate:
Stilla hlutfall = Workbooks(“MyBook.xlsx”) _
.Worksheets(„Sheet1“).Range(„Vextir“)
Eftir að hafa skilgreint þessa hlutbreytu geturðu notað breytuna Rate frekar en langa tilvísunina. Til dæmis geturðu breytt gildi reitsins sem heitir Vextir:
Rate.Value = .085
Þetta er miklu auðveldara að slá inn en eftirfarandi fullyrðingu:
Vinnubækur ("MyBook.xlsx"). Vinnublöð ("Sheet1"). _
Range(„Vextir“) = .085
Auk þess að einfalda kóðun þína, þá hraðar fjölvunum þínum verulega með því að nota hlutbreytur.
Lýsa breytutegundum
Þú þarft venjulega ekki að hafa áhyggjur af tegund gagna sem þú úthlutar breytu. Excel sér um allar upplýsingar fyrir þig á bak við tjöldin. Til dæmis, ef þú ert með breytu sem heitir MyVar, geturðu úthlutað fjölda af hvaða gerð sem er á þá breytu. Þú getur jafnvel tengt honum textastreng síðar í ferlinu.
Ef þú vilt að verklagsreglur þínar gangi eins hratt og mögulegt er, segðu Excel hvaða tegund gagna verður úthlutað á hverja breytu þína. Þetta er þekkt sem að lýsa yfir gerð breytu.
Almennt séð ættir þú að nota þá gagnategund sem krefst minnsta fjölda bæta en getur samt séð um öll gögn sem henni er úthlutað. Þegar VBA vinnur með gögn fer hraðinn fram eftir fjölda bæta sem VBA hefur yfir að ráða. Með öðrum orðum, því færri bæti sem gögn nota, því hraðar getur VBA fengið aðgang að og meðhöndlað gögnin. Undantekning frá þessu er heiltala gagnategundin. Ef hraði er mikilvægur skaltu nota langa gagnategundina í staðinn.
Ef þú notar hlutbreytu geturðu lýst breytunni sem tiltekinni hlutargerð. Hér er dæmi:
Dimmt hlutfall sem svið
Stilla hlutfall = Workbooks(“MyBook.xlsx”) _
.Worksheets(„Sheet1“).Range(„Vextir“)
Notkun With-End With uppbyggingu
Þarftu að stilla fjölda eiginleika fyrir hlut? Kóðinn þinn keyrir hraðar ef þú notar With-End With uppbyggingu. Viðbótar ávinningur er að kóðinn þinn gæti verið auðveldari að lesa.
Eftirfarandi kóða notar ekki With-End With:
Selection.Horizontal Alignment = xlCenter
Val.VerticalAlignment = xlCenter
Selection.WrapText = True
Val. Stefna = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False
Hér er sami kóðinn, endurskrifaður til að nota With-End With:
Með Úrvali
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Stefna = 0
.ShrinkToFit = Ósatt
.MergeCells = False
Enda með
Þegar þú notar With-End With skaltu ganga úr skugga um að hver staðhæfing byrji á punkti.