Awọn ilana "Iṣẹ" ati "Ipin" ni VBA

Awọn iṣẹ VBA ti a ṣe sinu

Ṣaaju ki o to bẹrẹ ṣiṣẹda awọn iṣẹ VBA tirẹ, o dara lati mọ pe Excel VBA ni akojọpọ ọlọrọ ti awọn iṣẹ ti a ti kọ tẹlẹ ti o le lo lakoko kikọ koodu rẹ.

Akojọ awọn iṣẹ wọnyi ni a le wo ni olootu VBA:

  • Ṣii iwe iṣẹ Excel kan ki o ṣe ifilọlẹ olootu VBA (tẹ lati ṣe eyi F11 giga +), ati lẹhinna tẹ F2.
  • Yan ile-ikawe kan lati atokọ jabọ-silẹ ni apa osi ti iboju naa VBA.
  • Atokọ ti awọn kilasi VBA ti a ṣe sinu ati awọn iṣẹ yoo han. Tẹ orukọ iṣẹ lati ṣafihan apejuwe kukuru rẹ ni isalẹ ti window naa. titẹ F1 yoo ṣii oju-iwe iranlọwọ lori ayelujara fun ẹya yẹn.

Ni afikun, atokọ pipe ti awọn iṣẹ VBA ti a ṣe sinu pẹlu awọn apẹẹrẹ ni a le rii ni Ile-iṣẹ Olùgbéejáde Ipilẹ Visual.

Awọn ilana aṣa "Iṣẹ" ati "Ipin" ni VBA

Ni Excel Visual Basic, ṣeto awọn aṣẹ ti o ṣe iṣẹ-ṣiṣe kan pato ni a gbe sinu ilana kan. iṣẹ (Iṣẹ) tabi Ipele (Subroutine). Iyatọ akọkọ laarin awọn ilana iṣẹ и Ipele ni wipe ilana iṣẹ pada esi, ilana Ipele – ko si.

Nitorinaa, ti o ba nilo lati ṣe awọn iṣe ati gba abajade diẹ (fun apẹẹrẹ, akopọ awọn nọmba pupọ), lẹhinna ilana naa ni igbagbogbo lo iṣẹ, ati lati le ṣe diẹ ninu awọn iṣe (fun apẹẹrẹ, yi ọna kika ti ẹgbẹ kan ti awọn sẹẹli), o nilo lati yan ilana naa. Ipele.

Awọn ariyanjiyan

Awọn data oriṣiriṣi le ṣee kọja si awọn ilana VBA nipa lilo awọn ariyanjiyan. Akojọ ariyanjiyan ti wa ni pato nigbati o n kede ilana kan. Fun apẹẹrẹ, ilana naa Ipele ni VBA ṣe afikun odidi ti a fun (Integer) si sẹẹli kọọkan ni ibiti o yan. O le fi nọmba yii ranṣẹ si ilana nipa lilo ariyanjiyan, bii eyi:

Sub AddToCells(i As Integer) ... Ipin Ipari

Ranti pe nini awọn ariyanjiyan fun awọn ilana iṣẹ и Ipele ni VBA jẹ iyan. Diẹ ninu awọn ilana ko nilo awọn ariyanjiyan.

iyan ariyanjiyan

Awọn ilana VBA le ni awọn ariyanjiyan iyan. Iwọnyi jẹ awọn ariyanjiyan ti olumulo le ṣalaye ti wọn ba fẹ, ati pe ti wọn ba yọkuro, ilana naa lo awọn iye aiyipada fun wọn.

Pada si apẹẹrẹ iṣaaju, lati ṣe ariyanjiyan odidi si aṣayan iṣẹ kan, yoo jẹ ikede bi eleyi:

Sub AddToCells(Eyi je ko je bi odidi = 0)

Ni idi eyi, ariyanjiyan odidi i aiyipada yoo jẹ 0.

Awọn ariyanjiyan aṣayan pupọ le wa ninu ilana kan, gbogbo eyiti a ṣe atokọ ni ipari atokọ ariyanjiyan.

Gbigbe awọn ariyanjiyan nipasẹ iye ati nipasẹ itọkasi

Awọn ariyanjiyan ni VBA le kọja si ilana ni awọn ọna meji:

  • ByVal - gbigbe ariyanjiyan nipasẹ iye. Eyi tumọ si pe iye nikan (eyini ni, ẹda ti ariyanjiyan) ti kọja si ilana naa, ati nitori naa eyikeyi iyipada ti a ṣe si ariyanjiyan inu ilana naa yoo padanu nigbati ilana naa ba jade.
  • NipaRef - gbigbe ariyanjiyan nipasẹ itọkasi. Iyẹn ni, adirẹsi gangan ti ipo ariyanjiyan ni iranti ti kọja si ilana naa. Eyikeyi iyipada ti a ṣe si ariyanjiyan inu ilana naa yoo wa ni fipamọ nigbati ilana naa ba jade.

Lilo awọn koko ByVal or NipaRef ninu ikede ilana, o le pato bi ariyanjiyan ti kọja si ilana naa. Eyi ni a fihan ni awọn apẹẹrẹ ni isalẹ:

Sub AddToCells(ByVal i As Integer) ... Ipin Ipari
Ni idi eyi, ariyanjiyan odidi i koja nipa iye. Lẹhin ti nlọ ilana naa Ipele gbogbo ṣe pẹlu i ayipada yoo wa ni sọnu.
Sub AddToCells(ByRef i As Integer) ... Ipin Ipari
Ni idi eyi, ariyanjiyan odidi i koja nipa itọkasi. Lẹhin ti nlọ ilana naa Ipele gbogbo ṣe pẹlu i awọn ayipada yoo wa ni ipamọ ni oniyipada ti o ti kọja si ilana naa Ipele.

Ranti pe awọn ariyanjiyan ni VBA ti kọja nipasẹ itọkasi nipasẹ aiyipada. Ni awọn ọrọ miiran, ti awọn koko-ọrọ ko ba lo ByVal or NipaRef, lẹhinna ariyanjiyan yoo kọja nipasẹ itọkasi.

Ṣaaju ki o to tẹsiwaju pẹlu awọn ilana iṣẹ и Ipele ni awọn alaye diẹ sii, yoo wulo lati wo miiran wo awọn ẹya ara ẹrọ ati awọn iyatọ laarin awọn iru ilana meji wọnyi. Awọn atẹle jẹ awọn ijiroro kukuru ti awọn ilana VBA iṣẹ и Ipele ati awọn apẹẹrẹ ti o rọrun ti han.

Ilana VBA "Iṣẹ"

Olootu VBA mọ ilana naa iṣẹnigbati o ba pade ẹgbẹ kan ti awọn aṣẹ ti o wa laarin ṣiṣi ati awọn alaye pipade atẹle:

Išẹ ... Ipari Išẹ

Gẹgẹbi a ti sọ tẹlẹ, ilana naa iṣẹ ni VBA (bi o lodi si Ipele) pada iye. Awọn ofin wọnyi lo fun awọn iye pada:

  • Iru data ti iye ipadabọ gbọdọ jẹ ikede ni akọsori ti ilana naa iṣẹ.
  • Oniyipada ti o ni iye ipadabọ gbọdọ jẹ orukọ kanna gẹgẹbi ilana naa iṣẹ. Oniyipada yii ko nilo lati sọ ni lọtọ, nitori o nigbagbogbo wa bi apakan pataki ti ilana naa. iṣẹ.

Eyi jẹ apejuwe daradara ninu apẹẹrẹ atẹle.

Apeere Iṣe VBA: Ṣiṣe Ise Iṣiro lori Awọn nọmba 3

Atẹle jẹ apẹẹrẹ ti koodu ilana VBA kan iṣẹ, eyi ti o gba mẹta ariyanjiyan ti iru Double (meji-konge lilefoofo-ojuami awọn nọmba). Bi abajade, ilana naa pada nọmba miiran ti iru Doubledogba si apao awọn ariyanjiyan akọkọ meji iyokuro ariyanjiyan kẹta:

Iṣẹ SumMinus(dNum1 Bi Double, dNum2 Bi Double, dNum3 Bi Double) Bi Double SumMinus = dNum1 + dNum2 - dNum3 Iṣe Ipari

Ilana VBA ti o rọrun pupọ yii iṣẹ ṣe apejuwe bi data ṣe kọja si ilana nipasẹ awọn ariyanjiyan. O le rii pe iru data ti o pada nipasẹ ilana jẹ asọye bi Double (awọn ọrọ sọ Bi Double lẹhin akojọ awọn ariyanjiyan). Apẹẹrẹ yii tun fihan bi abajade ti ilana naa iṣẹ ti a fipamọ sinu oniyipada pẹlu orukọ kanna bi orukọ ilana.

Npe ilana VBA “Iṣẹ”

Ti ilana ti o rọrun loke iṣẹ ti a fi sii sinu module kan ninu olootu Ipilẹ wiwo, o le pe lati awọn ilana VBA miiran tabi lo lori iwe iṣẹ ni iwe iṣẹ iṣẹ Excel.

Pe ilana VBA "Iṣẹ" lati ilana miiran

ilana iṣẹ le ti wa ni a npe ni lati miiran VBA ilana nipa nìkan sọtọ ti ilana to a ayípadà. Apẹẹrẹ atẹle n fihan ipe si ilana kan Summinus, eyi ti a ti telẹ loke.

Iha akọkọ() Lapapọ Dim lapapọ bi ilọpo meji = SumMinus(5, 4, 3) Ipin Ipari

Pe ilana VBA "Iṣẹ" lati inu iwe iṣẹ kan

Ilana VBA iṣẹ le pe lati inu iwe iṣẹ iṣẹ Excel ni ọna kanna bi iṣẹ Excel miiran ti a ṣe sinu. Nitorina, ilana ti a ṣẹda ninu apẹẹrẹ ti tẹlẹ iṣẹ - Summinus O le pe nipa titẹ ọrọ atẹle yii sinu sẹẹli iwe iṣẹ:

=SumMinus(10, 5, 2)

Ilana VBA "Sub"

Olootu VBA loye pe ilana kan wa ni iwaju rẹ Ipelenigbati o ba pade ẹgbẹ kan ti awọn aṣẹ ti o wa laarin ṣiṣi ati awọn alaye pipade atẹle:

Sub ... Ipari Ipin

Ilana VBA "Sub": Apeere 1. Titete aarin ati iyipada iwọn fonti ni ibiti o ti yan ti awọn sẹẹli

Wo apẹẹrẹ ti ilana VBA ti o rọrun Ipele, ẹniti iṣẹ-ṣiṣe rẹ ni lati yi ọna kika ti awọn sẹẹli ti o yan. Awọn sẹẹli naa wa ni aarin (mejeeji ni inaro ati petele) ati iwọn fonti ti yipada si pato-olumulo:

Sub Format_Centered_And_Sized(Aṣayan iFontSize Bi Integer = 10) Aṣayan.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize Ipari Sub

Ilana yii Ipele ṣe awọn iṣe ṣugbọn ko da abajade pada.

Apẹẹrẹ yii tun nlo ariyanjiyan Iyan FontIwon. Ti o ba ti ariyanjiyan FontIwon ko kọja si ilana Ipele, lẹhinna iye aiyipada rẹ jẹ 10. Sibẹsibẹ, ti ariyanjiyan naa FontIwon kọja si ilana Ipele, lẹhinna ibiti o ti yan ti awọn sẹẹli yoo ṣeto si iwọn fonti ti olumulo kan pato.

Ilana Sub VBA: Apeere 2: Didọgba aarin ati Font ni Ila ti Awọn sẹẹli ti a yan

Ilana atẹle naa jọra si eyi ti a ṣẹṣẹ jiroro, ṣugbọn ni akoko yii, dipo iwọntunwọnsi, o kan ara fonti igboya si iwọn awọn sẹẹli ti a yan. Eyi jẹ ilana apẹẹrẹ Ipele, eyi ti ko gba awọn ariyanjiyan:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = Opin Ipari otitọ

Npe Ilana "Sub" ni Excel VBA

Pe ilana VBA "Sub" lati ilana miiran

Lati pe ilana VBA kan Ipele lati ilana VBA miiran, o nilo lati kọ ọrọ-ọrọ naa ipe, orukọ ilana Ipele ati siwaju ninu akomo ni awọn ariyanjiyan ti ilana naa. Eyi ni a fihan ninu apẹẹrẹ ni isalẹ:

Iha akọkọ() Ipe Format_Centered_And_Sized(20) Ipin Ipari

Ti ilana naa Format_Centered_And_Sized ni ariyanjiyan ju ẹyọkan lọ, wọn gbọdọ wa niya nipasẹ aami idẹsẹ. Bi eleyi:

Iha akọkọ() Ipe Format_Centered_And_Sized(arg1, arg2, ...) Ipin Ipari

Pe ilana VBA "Sub" lati iwe iṣẹ-ṣiṣe

ilana Ipele ko le wa ni titẹ taara sinu sẹẹli dì Excel, bi o ṣe le ṣe pẹlu ilana kan iṣẹnitori ilana naa Ipele ko pada a iye. Sibẹsibẹ, awọn ilana Ipele, eyi ti ko ni awọn ariyanjiyan ati pe a sọ bi àkọsílẹ (bi a ṣe han ni isalẹ) yoo wa fun awọn olumulo ti iwe iṣẹ. Bayi, ti o ba ti o rọrun ilana sísọ loke Ipele fi sii sinu a module ni Visual Ipilẹ Olootu, ilana Format_Centered_Ati_Bold yoo wa fun lilo ninu iwe iṣẹ iṣẹ Excel, ati ilana naa Format_Centered_And_Sized - kii yoo wa nitori pe o ni awọn ariyanjiyan.

Eyi ni ọna ti o rọrun lati ṣiṣe (tabi ṣiṣẹ) ilana kan Ipele, wiwọle lati iwe iṣẹ:

  • tẹ F8 giga + (tẹ bọtini alt ati nigba ti o di mọlẹ, tẹ bọtini naa F8).
  • Ninu atokọ ti awọn macros ti o han, yan eyi ti o fẹ ṣiṣe.
  • tẹ Run (ṣiṣe)

Lati ṣe ilana kan Ipele ni kiakia ati irọrun, o le fi ọna abuja keyboard si. Fun eyi:

  • tẹ F8 giga +.
  • Ninu atokọ ti awọn macros ti o han, yan eyi ti o fẹ fi ọna abuja keyboard si.
  • tẹ sile (Awọn aṣayan) ati ninu apoti ibaraẹnisọrọ ti o han, tẹ ọna abuja keyboard sii.
  • tẹ OK ki o si pa awọn ibaraẹnisọrọ Macro (Macro).

akiyesi: Nigbati o ba n fi ọna abuja keyboard si Makiro, rii daju pe ko lo bi boṣewa ni Excel (fun apẹẹrẹ, Ctrl + C). Ti o ba yan ọna abuja keyboard ti o ti wa tẹlẹ, yoo tun pin si Makiro, ati bi abajade, olumulo le bẹrẹ Makiro nipasẹ ijamba.

Ilana Ilana VBA

Apakan 2 ti ikẹkọ yii jiroro lori iwọn ti awọn oniyipada ati awọn iduro ati ipa ti awọn koko-ọrọ. àkọsílẹ и ikọkọ. Awọn koko-ọrọ wọnyi tun le ṣee lo pẹlu awọn ilana VBA:

AdToCells ti gbogbo eniyan(i Bi odidi) ... Ipin Ipari
Ti ikede ilana naa ba ti ṣaju ọrọ-ọrọ naa àkọsílẹ, lẹhinna ilana naa yoo wa fun gbogbo awọn modulu ninu iṣẹ akanṣe VBA yẹn.
Ikọkọ SubToCells(i Bi odidi) ... Ipari Ipin
Ti ikede ilana naa ba ti ṣaju ọrọ-ọrọ naa ikọkọ, lẹhinna ilana yii yoo wa nikan fun module lọwọlọwọ. Ko le ṣe pe lakoko ti o wa ni eyikeyi module miiran tabi lati inu iwe iṣẹ ti Excel.

Ranti pe ti o ba ṣaaju ki o to kede ilana VBA kan iṣẹ or Ipele Ko fi ọrọ-ọrọ sii, ohun-ini aiyipada ti ṣeto fun ilana naa àkọsílẹ (iyẹn ni, yoo wa nibi gbogbo ni iṣẹ akanṣe VBA yii). Eyi jẹ iyatọ si awọn ikede oniyipada, eyiti o jẹ nipasẹ aiyipada ikọkọ.

Ijade ni kutukutu lati awọn ilana VBA "Iṣẹ" ati "Ipin"

Ti o ba nilo lati fopin si ipaniyan ti ilana VBA kan iṣẹ or Ipele, lai nduro fun ipari adayeba rẹ, lẹhinna fun eyi awọn oniṣẹ wa Jade Išė и Jade Iha. Lilo awọn oniṣẹ wọnyi ti han ni isalẹ nipa lilo ilana ti o rọrun bi apẹẹrẹ. iṣẹA ti o nireti lati gba ariyanjiyan rere lati ṣe awọn iṣẹ ṣiṣe siwaju sii. Ti iye ti kii ṣe rere ba kọja si ilana naa, lẹhinna ko si awọn iṣẹ ṣiṣe siwaju sii, nitorinaa olumulo yẹ ki o ṣafihan ifiranṣẹ aṣiṣe ati ilana naa yẹ ki o jade lẹsẹkẹsẹ:

Iṣẹ VAT_Amount(sVAT_Rate Bi Nikan) Bi Nikan VAT_Amount = 0 Ti o ba jẹ pe sVAT_Rate <= 0 Lẹhinna MsgBox "Ti reti iye rere ti sVAT_Rate ṣugbọn Ti gba" & sVAT_Rate Ijade Iṣe Ipari Ti ... Ipari Iṣẹ

Jọwọ ṣe akiyesi pe ṣaaju ki o to pari ilana naa iṣẹ - Iye_VAT, Iṣẹ VBA ti a ṣe sinu rẹ ti fi sii sinu koodu naa MsgBox, eyi ti o ṣe afihan agbejade ikilọ si olumulo.

Fi a Reply