Werrej
- Funzjonijiet VBA inkorporati
- Proċeduri tad-dwana "Funzjoni" u "Sub" f'VBA
- Argumenti
- Proċedura VBA «Funzjoni»
- Proċedura VBA «Sub»
- Skop tal-Proċedura VBA
- Ħruġ bikri mill-proċeduri VBA "Funzjoni" u "Sub"
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.