Verklagsreglur „Function“ og „Sub“ í VBA

Innbyggðar VBA aðgerðir

Áður en þú byrjar að búa til þínar eigin VBA aðgerðir er gott að vita að Excel VBA hefur mikið safn af fyrirfram innbyggðum innbyggðum aðgerðum sem þú getur notað á meðan þú skrifar kóðann þinn.

Lista yfir þessar aðgerðir er hægt að skoða í VBA ritlinum:

  • Opnaðu Excel vinnubók og ræstu VBA ritilinn (smelltu til að gera þetta Alt + F11og ýttu síðan á F2.
  • Veldu bókasafn af fellilistanum efst til vinstri á skjánum VBA.
  • Listi yfir innbyggða VBA flokka og aðgerðir mun birtast. Smelltu á heiti aðgerðarinnar til að birta stutta lýsingu þess neðst í glugganum. þrýsta F1 mun opna nethjálparsíðuna fyrir þann eiginleika.

Að auki má finna heildarlista yfir innbyggðar VBA aðgerðir með dæmum í Visual Basic Developer Center.

Sérsniðnar verklagsreglur "Function" og "Sub" í VBA

Í Excel Visual Basic er sett af skipunum sem framkvæma tiltekið verkefni sett í verklag. virka (Virka) eða Sub (Undiráætlun). Helsti munurinn á aðferðunum virka и Sub er það málsmeðferðin virka skilar niðurstöðu, málsmeðferð Sub — ekki.

Þess vegna, ef þú þarft að framkvæma aðgerðir og fá einhverja niðurstöðu (til dæmis, leggja saman nokkrar tölur), þá er aðferðin venjulega notuð virka, og til þess að framkvæma nokkrar aðgerðir (til dæmis breyta sniði hóps frumna), þarftu að velja aðferðina Sub.

Rök

Hægt er að senda ýmis gögn til VBA verklagsreglna með því að nota rök. Röksemdalistinn er tilgreindur þegar lýst er yfir málsmeðferð. Til dæmis aðferðin Sub í VBA bætir tiltekinni heiltölu (Heiltala) við hverja reit á völdu sviði. Þú getur sent þessa tölu yfir í málsmeðferðina með því að nota rök, eins og þessa:

Sub AddToCells(i As Heiltala) ... End Sub

Hafðu í huga að hafa rök fyrir málsmeðferð virka и Sub í VBA er valfrjálst. Sumar aðferðir þurfa ekki rök.

Valfrjáls rök

VBA verklagsreglur geta haft valfrjáls rök. Þetta eru rök sem notandinn getur tilgreint ef hann vill og ef þeim er sleppt notar aðferðin sjálfgefna gildin fyrir þau.

Ef farið er aftur í fyrra dæmið, til að gera heiltöluarrök fyrir fall valfrjálsar, þá yrði það lýst þannig:

Sub AddToCells(Valfrjálst i Sem heiltala = 0)

Í þessu tilviki, heiltölu rökin i sjálfgefið verður 0.

Það geta verið nokkur valfrjáls rök í ferli, sem öll eru skráð aftast á rifrildalistanum.

Færa rök eftir gildi og með tilvísun

Hægt er að koma rökum í VBA yfir í málsmeðferð á tvo vegu:

  • ByVal - færa rök eftir gildi. Þetta þýðir að aðeins gildið (þ.e. afrit af röksemdafærslunni) er sent til málsmeðferðarinnar og því munu allar breytingar sem gerðar eru á röksemdinni inni í ferlinu glatast þegar ferlið hættir.
  • Eftir Ref – koma rökum til skila með tilvísun. Það er, raunverulegt heimilisfang staðsetningar röksemda í minni er sent til málsmeðferðarinnar. Allar breytingar sem gerðar eru á rökstuðningi inni í ferlinu verða vistaðar þegar ferlinu lýkur.

Að nota leitarorð ByVal or Eftir Ref í málsmeðferðaryfirlýsingunni geturðu tilgreint hvernig röksemdin er send til málsmeðferðarinnar. Þetta er sýnt í dæmum hér að neðan:

Sub AddToCells(ByVal i As Heiltala) ... End Sub
Í þessu tilviki, heiltölu rökin i framhjá verðmæti. Eftir að hafa yfirgefið málsmeðferðina Sub allt gert með i breytingar munu glatast.
Sub AddToCells(ByRef i As Heiltala) ... End Sub
Í þessu tilviki, heiltölu rökin i samþykkt með tilvísun. Eftir að hafa yfirgefið málsmeðferðina Sub allt gert með i breytingarnar verða geymdar í breytunni sem var send í verklag Sub.

Mundu að rök í VBA eru sjálfgefið samþykkt með tilvísun. Með öðrum orðum, ef leitarorð eru ekki notuð ByVal or Eftir Ref, þá verða rökin send með tilvísun.

Áður en haldið er áfram með málsmeðferðina virka и Sub nánar, það mun vera gagnlegt að kíkja aftur á eiginleika og muninn á þessum tveimur gerðum aðferða. Eftirfarandi eru stuttar umræður um verklagsreglur VBA virka и Sub og sýnd eru einföld dæmi.

VBA aðferð «Funktion»

VBA ritstjórinn viðurkennir aðferðina virkaþegar það rekst á hóp skipana sem eru á milli eftirfarandi upphafs- og lokayfirlýsinga:

Virkni ... Lokaaðgerð

Eins og fyrr segir er málsmeðferð virka í VBA (öfugt við Sub) skilar gildi. Eftirfarandi reglur gilda um skilgildi:

  • Tilgreina þarf gagnategund skilgildis í haus aðferðarinnar virka.
  • Breytan sem inniheldur skilgildið verður að heita það sama og aðferðin virka. Ekki þarf að gefa upp þessa breytu sérstaklega þar sem hún er alltaf til sem óaðskiljanlegur hluti af málsmeðferðinni. virka.

Þetta er vel útskýrt í eftirfarandi dæmi.

VBA aðgerð Dæmi: Framkvæma stærðfræðilega aðgerð á 3 tölum

Eftirfarandi er dæmi um VBA málsmeðferðarkóða virka, sem tekur þrjár röksemdir af gerðinni Tvöfaldur (tvínákvæmar flottölur). Þar af leiðandi skilar aðferðin öðru númeri af gerðinni Tvöfaldurjöfn summu fyrstu tveggja röksemda að frádregnum þriðja röksemdafærslu:

Fall SumMinus(dNum1 Sem tvöfalt, dNum2 Sem tvöfalt, dNum3 Sem tvöfalt) Sem tvöfalt SumMinus = dNum1 + dNum2 - dNum3 End Function

Þessi mjög einfalda VBA aðferð virka sýnir hvernig gögn eru send til málsmeðferðar með rökum. Þú getur séð að gagnategundin sem aðferðin skilar er skilgreind sem Tvöfaldur (orðin segja Sem tvöfaldur á eftir lista yfir rök). Þetta dæmi sýnir einnig hvernig niðurstaðan af málsmeðferðinni virka geymd í breytu með sama nafni og aðferðarheitið.

Að kalla VBA málsmeðferðina „Funktion“

Ef ofangreind einföld aðferð virka sett inn í einingu í Visual Basic ritlinum, það er hægt að kalla það frá öðrum VBA aðferðum eða nota á vinnublað í Excel vinnubók.

Kallaðu VBA málsmeðferð „Function“ frá annarri aðferð

Málsmeðferð virka hægt að kalla úr öðru VBA ferli með því einfaldlega að tengja það ferli við breytu. Eftirfarandi dæmi sýnir kalla á málsmeðferð Summinus, sem var skilgreint hér að ofan.

Sub main() Dim total as Double total = SumMinus(5, 4, 3) End Sub

Hringdu í VBA málsmeðferð „Function“ frá vinnublaði

VBA aðferð virka hægt að hringja úr Excel vinnublaði á sama hátt og önnur innbyggð Excel aðgerð. Þess vegna er aðferðin búin til í fyrra dæminu virka - Summinus er hægt að kalla fram með því að slá inn eftirfarandi segð í reit vinnublaðs:

=SumMinus(10, 5, 2)

VBA aðferð «Sub»

Ritstjóri VBA skilur að það er verklag fyrir framan það Subþegar það rekst á hóp skipana sem eru á milli eftirfarandi upphafs- og lokayfirlýsinga:

Sub ... End Sub

VBA aðferð „Sub“: Dæmi 1. Miðjujöfnun og leturstærð breytist í völdum hólfum

Lítum á dæmi um einfalda VBA aðferð Sub, sem hefur það hlutverk að breyta sniði valins sviðs frumna. Hólfin eru miðjusett (bæði lóðrétt og lárétt) og leturstærð er breytt í notendaskilgreint:

Sub Format_Centered_And_Sized(Valfrjálst iFontStærð sem heiltala = 10) Val.Lárétt jöfnun = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub

Þessi aðferð Sub framkvæmir aðgerðir en skilar ekki niðurstöðu.

Þetta dæmi notar einnig Valfrjáls rök Leturstærð. Ef rökin Leturstærð ekki farið í málsmeðferð Sub, þá er sjálfgefið gildi þess 10. Hins vegar, ef rökin Leturstærð farið í málsmeðferð Sub, þá verður valið svið hólfa stillt á leturstærð sem notandinn tilgreinir.

VBA undiraðferð: Dæmi 2: Miðjastilla og feitletruð leturgerð á völdum frumusviði

Eftirfarandi aðferð er svipuð þeirri sem nýlega var fjallað um, en að þessu sinni, í stað þess að breyta stærðinni, beitir það feitletruðum leturstíl á valið svið af frumum. Þetta er dæmi um aðferð Sub, sem tekur engin rök:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub

Að kalla „Sub“ málsmeðferð í Excel VBA

Kallaðu VBA málsmeðferð „Sub“ frá annarri aðferð

Til að kalla á VBA málsmeðferð Sub frá annarri VBA aðferð þarftu að skrifa leitarorðið Kalla, aðferðarheiti Sub og nánar innan sviga eru rök málsmeðferðarinnar. Þetta er sýnt í dæminu hér að neðan:

Sub main() Kalla Format_Centered_And_Sized(20) End Sub

Ef málsmeðferð Format_Centered_And_Sized hefur fleiri en ein rök, þá verða þau að vera aðskilin með kommum. Svona:

Sub main() Kalla Format_Centered_And_Sized(arg1, arg2, ...) End Sub

Hringdu í VBA málsmeðferð „Sub“ frá vinnublaði

Málsmeðferð Sub ekki hægt að færa beint inn í Excel blaðsreit eins og hægt er að gera með verklagi virkavegna málsmeðferðarinnar Sub skilar ekki gildi. Hins vegar verklagsreglur Sub, sem hafa engin rök og eru lýst sem Almenn (eins og sýnt er hér að neðan) verður aðgengilegt notendum vinnublaðsins. Svona, ef einfaldar aðferðir sem fjallað er um hér að ofan Sub sett inn í einingu í Visual Basic Editor, ferlið Format_Centered_And_Bold verður aðgengilegt til notkunar í Excel vinnublaði, og verklagsreglur Format_Centered_And_Sized – verður ekki í boði vegna þess að það hefur rök.

Hér er auðveld leið til að keyra (eða framkvæma) málsmeðferð Sub, aðgengilegt frá vinnublaðinu:

  • Press Alt + F8 (ýttu á takkann Alt og ýttu á takkann á meðan þú heldur honum niðri F8).
  • Í listanum yfir fjölva sem birtist skaltu velja þann sem þú vilt keyra.
  • Press Hlaupa (hlaupa)

Til að framkvæma málsmeðferð Sub fljótt og auðveldlega, þú getur tengt flýtilykla á það. Fyrir þetta:

  • Press Alt + F8.
  • Í listanum yfir fjölva sem birtist skaltu velja þann sem þú vilt tengja flýtilykla fyrir.
  • Press breytur (Valkostir) og í glugganum sem birtist skaltu slá inn flýtilykilinn.
  • Press OK og lokaðu glugganum Macro (Makro).

Athugið: Þegar þú úthlutar flýtilykla á fjölvi skaltu ganga úr skugga um að hún sé ekki notuð sem staðalbúnaður í Excel (td. Ctrl + C). Ef þú velur lyklaborðsflýtileið sem þegar er til verður henni endurúthlutað á fjölva og þar af leiðandi gæti notandinn ræst fjölva fyrir slysni.

Umfang VBA málsmeðferðar

Hluti 2 af þessari kennslu fjallaði um umfang breyta og fasta og hlutverk leitarorða. Almenn и Einka. Þessi leitarorð er einnig hægt að nota með VBA aðferðum:

Public Sub AddToCells(i As Heiltala) ... End Sub
Ef leitarorðið er á undan verklagsyfirlýsingunni Almenn, þá verður aðferðin aðgengileg öllum einingum í því VBA verkefni.
Private Sub AddToCells(i As Heiltala) ... End Sub
Ef leitarorðið er á undan verklagsyfirlýsingunni Einka, þá verður þessi aðferð aðeins tiltæk fyrir núverandi einingu. Það er ekki hægt að kalla það í neinni annarri einingu eða úr Excel vinnubók.

Mundu að ef áður en lýst er yfir VBA málsmeðferð virka or Sub leitarorð er ekki sett inn, sjálfgefna eiginleiki er stilltur fyrir ferlið Almenn (þ.e. það verður aðgengilegt alls staðar í þessu VBA verkefni). Þetta er öfugt við breytilega yfirlýsingar, sem sjálfgefið er Einka.

Snemma hætta úr VBA aðferðum „Function“ og „Sub“

Ef þú þarft að hætta framkvæmd VBA málsmeðferðar virka or Sub, án þess að bíða eftir náttúrulegum endalokum þess, þá eru fyrir þetta rekstraraðilar Hætta aðgerð и Hætta undir. Notkun þessara rekstraraðila er sýnd hér að neðan með einföldu ferli sem dæmi. virkaA sem býst við að fá jákvæð rök til að framkvæma frekari aðgerðir. Ef ójákvætt gildi er sent til aðgerðarinnar, þá er ekki hægt að framkvæma frekari aðgerðir, þannig að notandinn ætti að fá villuboð og aðferðin ætti að hætta strax:

Aðgerð VAT_Amount(sVAT_Rate As Single) As Single VAT_Amount = 0 Ef sVAT_Rate <= 0 Then MsgBox "Vænti jákvætt gildi sVAT_Rate but Received " & sVAT_Rate Hætta falli End If ... End Function

Vinsamlegast athugaðu að áður en þú lýkur málsmeðferðinni virka - VSK_Upphæð, innbyggð VBA aðgerð er sett inn í kóðann MsgBox, sem birtir viðvörunarsprettiglugga fyrir notandann.

Skildu eftir skilaboð