"Funzjoni" u "Sub" Proċeduri fil-VBA

Funzjonijiet VBA inkorporati

Qabel ma tibda toħloq il-funzjonijiet VBA tiegħek stess, tajjeb li tkun taf li Excel VBA għandu kollezzjoni rikka ta 'funzjonijiet mibnija minn qabel li tista' tuża waqt li tikteb il-kodiċi tiegħek.

Lista ta 'dawn il-funzjonijiet tista' tara fl-editur VBA:

  • Iftaħ ktieb tax-xogħol Excel u niedi l-editur VBA (ikklikkja biex tagħmel dan Alt + F11), u mbagħad agħfas F2.
  • Agħżel librerija mil-lista dropdown fin-naħa ta' fuq tax-xellug tal-iskrin VBA.
  • Se tidher lista ta 'klassijiet u funzjonijiet VBA mibnija. Ikklikkja fuq l-isem tal-funzjoni biex turi d-deskrizzjoni qasira tagħha fil-qiegħ tat-tieqa. ippressar F1 se tiftaħ il-paġna tal-għajnuna onlajn għal dik il-karatteristika.

Barra minn hekk, lista kompluta ta 'funzjonijiet VBA integrati b'eżempji tista' tinstab fiċ-Ċentru tal-Iżviluppaturi Visual Basic.

Proċeduri tad-dwana "Funzjoni" u "Sub" f'VBA

Fl-Excel Visual Basic, sett ta 'kmandi li jwettqu kompitu speċifiku jitqiegħed fi proċedura. funzjoni (Funzjoni) jew sotto (Subrutina). Id-differenza ewlenija bejn il-proċeduri funzjoni и sotto hija li l-proċedura funzjoni jirritorna riżultat, proċedura sotto – le.

Għalhekk, jekk għandek bżonn twettaq azzjonijiet u tikseb xi riżultat (per eżempju, somma diversi numri), allura l-proċedura normalment tintuża funzjoni, u sabiex sempliċiment twettaq xi azzjonijiet (pereżempju, tibdel l-ifformattjar ta 'grupp ta' ċelloli), trid tagħżel il-proċedura sotto.

Argumenti

Diversi data jistgħu jiġu mgħoddija lill-proċeduri VBA bl-użu ta 'argumenti. Il-lista tal-argumenti hija speċifikata meta tiġi ddikjarata proċedura. Per eżempju, il-proċedura sotto f'VBA iżid in-numru sħiħ mogħti (Integer) għal kull ċellula fil-medda magħżula. Tista' tgħaddi dan in-numru lill-proċedura billi tuża argument, bħal dan:

Sub AddToCells(i As Integer) ... Tmiem Sub

Żomm f'moħħok li jkollok argumenti għall-proċeduri funzjoni и sotto fil-VBA hija fakultattiva. Xi proċeduri ma jeħtiġux argumenti.

Argumenti Fakultattivi

Il-proċeduri VBA jista' jkollhom argumenti fakultattivi. Dawn huma argumenti li l-utent jista 'jispeċifika jekk iridx, u jekk jitħallew barra, il-proċedura tuża l-valuri awtomatiċi għalihom.

Nirritornaw għall-eżempju preċedenti, biex tagħmel argument numru sħiħ għal funzjoni mhux obbligatorja, tkun iddikjarata hekk:

Sub AddToCells (Mhux obbligatorju i Bħala Integer = 0)

F'dan il-każ, l-argument integer i in-nuqqas se jkun 0.

Jista' jkun hemm diversi argumenti fakultattivi fi proċedura, li kollha huma elenkati fl-aħħar tal-lista tal-argumenti.

Tgħaddi argumenti bil-valur u b'referenza

L-argumenti f'VBA jistgħu jgħaddu għal proċedura b'żewġ modi:

  • ByVal – tgħaddi argument bil-valur. Dan ifisser li l-valur biss (jiġifieri kopja tal-argument) jiġi mgħoddi lill-proċedura, u għalhekk kwalunkwe tibdil li jsir fl-argument ġewwa l-proċedura jintilef meta l-proċedura toħroġ.
  • ByRef – tgħaddi argument b'referenza. Jiġifieri, l-indirizz attwali tal-post tal-argument fil-memorja jiġi mgħoddi lill-proċedura. Kwalunkwe tibdil li jsir f'argument ġewwa l-proċedura jiġi ffrankat meta l-proċedura toħroġ.

Bl-użu tal-kliem kjavi ByVal or ByRef fid-dikjarazzjoni tal-proċedura, tista 'tispeċifika kif l-argument jiġi mgħoddi lill-proċedura. Dan jidher fl-eżempji hawn taħt:

Sub AddToCells(ByVal i As Integer) ... Tmiem Sub
F'dan il-każ, l-argument integer i mgħoddi bil-valur. Wara li titlaq mill-proċedura sotto kollha magħmula bi i bidliet se jintilfu.
Sub AddToCells(ByRef i As Integer) ... Tmiem Sub
F'dan il-każ, l-argument integer i mgħoddi b'referenza. Wara li titlaq mill-proċedura sotto kollha magħmula bi i il-bidliet se jinħażnu fil-varjabbli li għaddiet għall-proċedura sotto.

Ftakar li l-argumenti fil-VBA huma mgħoddija b'referenza awtomatikament. Fi kliem ieħor, jekk il-kliem kjavi ma jintużawx ByVal or ByRef, allura l-argument jiġi mgħoddi b'referenza.

Qabel ma tipproċedi bil-proċeduri funzjoni и sotto f'aktar dettall, ikun utli li tingħata ħarsa oħra lejn il-karatteristiċi u d-differenzi bejn dawn iż-żewġ tipi ta' proċeduri. Dawn li ġejjin huma diskussjonijiet qosra tal-proċeduri VBA funzjoni и sotto u huma murija eżempji sempliċi.

Proċedura VBA «Funzjoni»

L-editur tal-VBA jirrikonoxxi l-proċedura funzjonimeta tiltaqa' ma' grupp ta' kmandi magħluqa bejn id-dikjarazzjonijiet tal-ftuħ u tal-għeluq li ġejjin:

Funzjoni ... Tmiem Funzjoni

Kif issemma qabel, il-proċedura funzjoni fil-VBA (kuntrarju għal sotto) jirritorna valur. Ir-regoli li ġejjin japplikaw għall-valuri tar-ritorn:

  • It-tip tad-dejta tal-valur tar-ritorn għandu jiġi ddikjarat fl-intestatura tal-proċedura funzjoni.
  • Il-varjabbli li fiha l-valur tar-ritorn għandha tissemma l-istess bħall-proċedura funzjoni. Din il-varjabbli m'għandhiex għalfejn tiġi ddikjarata separatament, peress li dejjem teżisti bħala parti integrali tal-proċedura. funzjoni.

Dan huwa muri sew fl-eżempju li ġej.

Eżempju ta' Funzjoni VBA: Twettiq ta' Operazzjoni Matematika fuq 3 Numri

Dan li ġej huwa eżempju ta 'kodiċi ta' proċedura VBA funzjoni, li tieħu tliet argumenti tat-tip Double (numri floating point bi preċiżjoni doppja). Bħala riżultat, il-proċedura tirritorna numru ieħor ta 'tip Doubleugwali għas-somma tal-ewwel żewġ argumenti nieqes it-tielet argument:

Funzjoni SumMinus(dNum1 As Double, dNum2 As Double, dNum3 As Double) As Double SumMinus = dNum1 + dNum2 - dNum3 End Function

Din il-proċedura VBA sempliċi ħafna funzjoni juri kif id-data tiġi mgħoddija lil proċedura permezz ta' argumenti. Tista 'tara li t-tip ta' data rritornat mill-proċedura huwa definit bħala Double (il-kliem jgħid Bħala Doppju wara l-lista ta’ argumenti). Dan l-eżempju juri wkoll kif ir-riżultat tal-proċedura funzjoni maħżuna f'varjabbli bl-istess isem bħall-isem tal-proċedura.

Sejħa tal-proċedura VBA "Funzjoni"

Jekk il-proċedura sempliċi ta 'hawn fuq funzjoni imdaħħal f'modulu fl-editur Visual Basic, jista 'jissejjaħ minn proċeduri VBA oħra jew jintuża fuq worksheet f'workbook Excel.

Sejħa l-proċedura VBA "Funzjoni" minn proċedura oħra

Proċedura funzjoni tista' tissejjaħ minn proċedura VBA oħra billi sempliċement tassenja dik il-proċedura lil varjabbli. L-eżempju li ġej juri sejħa għal proċedura Summinus, li kien definit hawn fuq.

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

Sejħa proċedura VBA "Funzjoni" minn worksheet

Proċedura VBA funzjoni jista 'jissejjaħ minn worksheet ta' Excel bl-istess mod bħal kull funzjoni Excel inkorporata oħra. Għalhekk, il-proċedura maħluqa fl-eżempju preċedenti funzjoni - Summinus jista' jissejjaħ billi ddaħħal l-espressjoni li ġejja f'ċellula tal-worksheet:

=SumMinus(10, 5, 2)

Proċedura VBA «Sub»

L-editur tal-VBA jifhem li hemm proċedura quddiemha sottometa tiltaqa' ma' grupp ta' kmandi magħluqa bejn id-dikjarazzjonijiet tal-ftuħ u tal-għeluq li ġejjin:

Sub ... Tmiem Sub

Proċedura VBA "Sub": Eżempju 1. L-allinjament taċ-ċentru u d-daqs tat-tipa jinbidlu f'firxa magħżula ta' ċelloli

Ikkunsidra eżempju ta 'proċedura VBA sempliċi sotto, li l-kompitu tiegħu huwa li jibdel l-ifformattjar tal-firxa magħżula ta 'ċelloli. Iċ-ċelloli huma ċċentrati (kemm vertikalment kif ukoll orizzontalment) u d-daqs tat-tipa jinbidel għal dak speċifikat mill-utent:

Sub Format_Centered_And_Sized (Fakultattiv iFontSize As Integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub

Din il-proċedura sotto iwettaq azzjonijiet iżda ma jirritornax riżultat.

Dan l-eżempju juża wkoll argument Fakultattiv FontSize. Jekk l-argument FontSize ma għadda għall-proċedura sotto, allura l-valur default tiegħu huwa 10. Madankollu, jekk l-argument FontSize għadda għall-proċedura sotto, allura l-firxa ta 'ċelluli magħżula tkun issettjata għad-daqs tat-tipa speċifikat mill-utent.

Sotto Proċedura VBA: Eżempju 2: Allinjament taċ-Ċentru u Font Bold f'Medda Magħżula ta' Ċelloli

Il-proċedura li ġejja hija simili għal dik li għadha kemm ġiet diskussa, iżda din id-darba, minflok ma tbiddel id-daqs, tapplika stil ta 'tipa grassa għall-firxa ta' ċelloli magħżula. Din hija proċedura ta' eżempju sotto, li ma jieħu l-ebda argument:

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

Sejħa "Sub" Proċedura f'Excel VBA

Sejħa l-proċedura VBA "Sub" minn proċedura oħra

Biex issejjaħ proċedura VBA sotto minn proċedura VBA oħra, trid tikteb il-kelma prinċipali Sejħa, isem tal-proċedura sotto u aktar fil-parentesi hemm l-argumenti tal-proċedura. Dan jidher fl-eżempju hawn taħt:

Sub main() Sejħa Format_Centered_And_Sized(20) End Sub

Jekk il-proċedura Format_Centered_And_Sized għandha aktar minn argument wieħed, għandhom ikunu separati b'virgoli. Bħal dan:

Sub main() Sejħa Format_Centered_And_Sized(arg1, arg2, ...) End Sub

Sejħa l-proċedura VBA "Sub" mill-worksheet

Proċedura sotto ma jistax jiddaħħal direttament f'ċellula tal-folja Excel, kif jista 'jsir bi proċedura funzjoniminħabba li l-proċedura sotto ma jirritornax valur. Madankollu, proċeduri sotto, li m'għandhomx argumenti u huma ddikjarati bħala Pubblika (kif muri hawn taħt) se jkunu disponibbli għall-utenti tal-worksheet. Għalhekk, jekk il-proċeduri sempliċi diskussi hawn fuq sotto imdaħħal f'modulu fl-Editur Visual Basic, il-proċedura Format_Centered_And_Bold se jkunu disponibbli għall-użu f'folja ta 'xogħol Excel, u l-proċedura Format_Centered_And_Sized – mhux se jkun disponibbli għax għandu argumenti.

Hawnhekk huwa mod faċli biex tmexxi (jew tesegwixxi) proċedura sotto, aċċessibbli mill-worksheet:

  • istampa Alt + F8 (agħfas iċ-ċavetta Alt u waqt li żżommha 'l isfel, agħfas iċ-ċavetta F8).
  • Fil-lista ta 'macros li tidher, agħżel dik li trid tmexxi.
  • istampa Mexxi (ġiri)

Biex twettaq proċedura sotto malajr u faċilment, tista 'tassenja shortcut tat-tastiera lilha. Għal din:

  • istampa Alt + F8.
  • Fil-lista ta' macros li tidher, agħżel dik li trid tassenja shortcut tat-tastiera għaliha.
  • istampa parametri (Għażliet) u fil-kaxxa tad-djalogu li tidher, daħħal is-shortcut tat-tastiera.
  • istampa OK u agħlaq id-djalogu Macro (Makro).

attenzjoni: Meta tassenja shortcut tat-tastiera għal makro, kun żgur li ma tintużax bħala standard f'Excel (per eżempju, Ctrl + C). Jekk tagħżel shortcut tat-tastiera diġà eżistenti, din tiġi assenjata mill-ġdid lill-makro, u bħala riżultat, l-utent jista 'jibda l-makro b'mod aċċidentali.

Skop tal-Proċedura VBA

Il-Parti 2 ta 'dan it-tutorja ddiskutiet l-ambitu tal-varjabbli u l-kostanti u r-rwol tal-kliem kjavi. Pubblika и Privat. Dawn il-kliem kjavi jistgħu jintużaw ukoll mal-proċeduri VBA:

Public Sub AddToCells(i As Integer) ... End Sub
Jekk id-dikjarazzjoni tal-proċedura tkun preċeduta mill-kelma prinċipali Pubblika, allura l-proċedura tkun disponibbli għall-moduli kollha f'dak il-proġett VBA.
Private Sub AddToCells(i As Integer) ... End Sub
Jekk id-dikjarazzjoni tal-proċedura tkun preċeduta mill-kelma prinċipali Privat, allura din il-proċedura tkun disponibbli biss għall-modulu attwali. Ma jistax jissejjaħ waqt li jkun fi kwalunkwe modulu ieħor jew minn ktieb tax-xogħol ta 'Excel.

Ftakar li jekk qabel ma tiddikjara proċedura VBA funzjoni or sotto keyword ma jiddaħħalx, il-proprjetà default hija ssettjata għall-proċedura Pubblika (jiġifieri, se tkun disponibbli kullimkien f'dan il-proġett VBA). Dan huwa b'kuntrast mad-dikjarazzjonijiet varjabbli, li awtomatikament huma Privat.

Ħruġ bikri mill-proċeduri VBA "Funzjoni" u "Sub"

Jekk għandek bżonn ittemm l-eżekuzzjoni ta 'proċedura VBA funzjoni or sotto, mingħajr ma tistenna t-tmiem naturali tagħha, allura għal dan hemm operaturi Ħruġ Funzjoni и Ħruġ Sub. L-użu ta' dawn l-operaturi jidher hawn taħt bl-użu ta' proċedura sempliċi bħala eżempju. funzjoniA li tistenna li tirċievi argument pożittiv biex twettaq aktar operazzjonijiet. Jekk valur mhux pożittiv jiġi mgħoddi lill-proċedura, allura ma jistgħux isiru aktar operazzjonijiet, għalhekk l-utent għandu jintwera messaġġ ta 'żball u l-proċedura għandha toħroġ immedjatament:

Funzjoni VAT_Amount(sVAT_Rate As Single) As Single VAT_Amount = 0 Jekk sVAT_Rate <= 0 Imbagħad MsgBox "Mistennew valur pożittiv ta' sVAT_Rate iżda Riċevuti" & sVAT_Rate Funzjoni ta' Ħruġ Tmiem Jekk ... Tmiem Funzjoni

Jekk jogħġbok innota li qabel tlesti l-proċedura funzjoni - VAT_Ammont, funzjoni VBA integrata hija mdaħħla fil-kodiċi MsgBox, li juri popup ta' twissija lill-utent.

Ħalli Irrispondi