Nidaamyada "Shaqada" iyo "Sub" ee VBA

Ku-dhismay Hawlaha VBA

Kahor intaadan bilaabin abuurista hawlahaaga VBA, way wanaagsan tahay inaad ogaato in Excel VBA uu leeyahay ururin qani ah oo ah hawlo la dhisay oo horay loo dhisay oo aad isticmaali karto markaad qorayso koodkaaga.

Liiska hawlahan waxaa laga eegi karaa tafatiraha VBA:

  • Fur buug-shaqeedka Excel oo bilow tifaftiraha VBA (guji si aad tan u sameyso Alt + F11), ka dibna riix F2.
  • Ka dooro maktabad liiska hoos u dhaca ee dhanka bidix ee sare ee shaashadda VBA.
  • Waxaa soo bixi doona liis ah fasalada VBA-da ee ku dhex dhisan iyo shaqooyinka. Guji magaca shaqada si aad u muujiso sharraxaaddeeda gaaban xagga hoose ee daaqadda. cadaadisid F1 waxay furi doontaa bogga caawinta khadka ee sifadaas.

Intaa waxaa dheer, liis dhamaystiran oo ah hawlaha VBA-da ee la dhisay oo leh tusaalooyin ayaa laga heli karaa Xarunta Horumarinta Aasaasiga ah ee Visual.

Nidaamyada gaarka ah "Shaqada" iyo "Sub" ee VBA

Gudaha Excel Visual Basic, amarro kala duwan oo fulinaya hawl gaar ah ayaa lagu meeleeyaa habraac. function (Shaqada) ama Sub (Subroutine). Farqiga ugu weyn ee u dhexeeya hababka function и Sub waa habkaas function soo celinta natiijada, habraaca Sub - maya.

Sidaa darteed, haddii aad u baahan tahay inaad sameyso ficillo oo aad hesho natiijooyin (tusaale ahaan, tirooyin dhowr ah), ka dibna habka ayaa badanaa la isticmaalaa function, iyo si aad si fudud u sameyso qaar ka mid ah falalka (tusaale, beddelo qaabeynta koox unugyo ah), waxaad u baahan tahay inaad doorato nidaamka Sub.

Argagixisada

Xog kala duwan ayaa loo gudbin karaa hababka VBA iyadoo la isticmaalayo doodo. Liistada doodda waxaa lagu qeexaa marka lagu dhawaaqayo habraaca. Tusaale ahaan, habraaca Sub gudaha VBA waxay ku daraa isugeynta la bixiyay (Integer) unug kasta oo ka mid ah tirada la doortay. Waxaad lambarkan u gudbin kartaa habraaca adiga oo isticmaalaya dood, sida tan:

Sub AddToCells(I As Integer) ... Dhammaadka Sub

Maskaxda ku hay in la haysto doodaha habraacyada function и Sub gudaha VBA waa ikhtiyaari. Nidaamyada qaar uma baahna dood.

Doodaha Ikhtiyaarka ah

Nidaamyada VBA waxay yeelan karaan doodo ikhtiyaari ah. Kuwani waa doodo uu isticmaaluhu sheegi karo haddii ay rabaan, iyo haddii laga saaro, nidaamku wuxuu u isticmaalayaa qiyamka caadiga ah iyaga.

Ku soo noqoshada tusaalihii hore, si loo sameeyo dood isugeyn shaqo ikhtiyaari ah, waxaa lagu dhawaaqi doonaa sidan:

Sub AddToCells (Ikhtiyaar ah sida iskudarka = 0)

Xaaladdan oo kale, doodda isku celceliska i Debedu waxay noqon doontaa 0.

Waxaa jiri kara dhowr doodood oo ikhtiyaari ah oo ku jira habraaca, kuwaas oo dhamaantood ku qoran liiska dhamaadka liiska doodaha.

U gudbinta doodaha qiime ahaan iyo tixraac ahaan

Doodaha VBA-da waxa loo gudbin karaa habraaca laba siyaabood:

  • ByVal - U gudbinta dood qiimo leh. Tani waxay ka dhigan tahay in kaliya qiimaha (taas oo ah, nuqul ka mid ah doodda) loo gudbiyo nidaamka, sidaas darteed isbeddel kasta oo lagu sameeyo dooda gudaha nidaamka waa la lumin doonaa marka habraaca ka baxo.
  • ByRef – ku gudbinta dood tixraac. Taasi waa, cinwaanka dhabta ah ee goobta doodda ee xusuusta ayaa loo gudbiyaa nidaamka. Isbeddel kasta oo lagu sameeyo dooda gudaha nidaamka waa la keydin doonaa marka habsocodku baxo.

Isticmaalka ereyada muhiimka ah ByVal or ByRef ku dhawaaqida habraaca, waxaad ku qeexi kartaa sida dooda loogu gudbiyo nidaamka. Tan waxaa lagu muujiyey tusaalooyinka hoose:

Sub AddToCells(ByVal i As Integer) ... Dhammaadka Sub
Xaaladdan oo kale, doodda isku celceliska i qiimeeyay. Ka dib markaad ka baxdo nidaamka Sub oo dhan lagu sameeyay i isbedel ayaa lumin doona.
Sub AddToCells(ByRef i As Integer) ... Dhammaadka Sub
Xaaladdan oo kale, doodda isku celceliska i maray tixraac. Ka dib markaad ka baxdo nidaamka Sub oo dhan lagu sameeyay i isbeddelada waxaa lagu kaydin doonaa doorsoomaha loo gudbiyay habraaca Sub.

Xasuusnoow in doodaha VBA-da lagu gudbiyo tixraac ahaan. Si kale haddii loo dhigo, haddii aan la isticmaalin ereyada muhiimka ah ByVal or ByRef, ka dibna dooda waxaa lagu gudbi doonaa tixraac.

Kahor intaadan sii wadin habraacyada function и Sub Si aad u faahfaahsan, waxa faa'iido u yeelan doonta in si kale loo eego sifooyinka iyo faraqa u dhexeeya labadan nooc ee habraacyada. Kuwa soo socdaa waa doodo kooban oo ku saabsan hababka VBA function и Sub waxaana la tusay tusaalooyin fudud.

Habka VBA "Function"

Tafatiraha VBA-da ayaa aqoonsan habka functionmarka ay la kulanto koox amarro ah oo ku lifaaqan weedhaha soo socda ee furitaanka iyo xidhitaanka:

Shaqada ... Dhammaadka Shaqada

Sida hore loo sheegay, nidaamka function gudaha VBA (sida lid ku ah Sub) soo celisa qiime. Xeerarka soo socdaa waxay khuseeyaan soo celinta qiyamka:

  • Nooca xogta ee qiimaha soo celinta waa in lagu caddeeyaa madaxa habka function.
  • Doorsoomayaasha ka kooban qiimaha soo celinta waa in lagu magacaabaa isla habka function. Doorsoomayaashan uma baahna in si gaar ah loogu dhawaaqo, maadaama ay had iyo jeer u jiraan sidii qayb ka mid ah nidaamka. function.

Tan waxaa si fiican loogu muujiyey tusaalahan soo socda.

Tusaalaha Shaqada VBA: Ku Samaynta Hawl Xisaabeed 3 Nambar ah

Kuwa soo socdaa waa tusaale koodka habraaca VBA function, kaas oo qaata saddex doodood oo nooc ah Double (lambarada sabbaynaya-laba-saxa ah). Natiijo ahaan, nidaamku wuxuu soo celinayaa tiro kale oo nooc ah Doubleoo la mid ah wadarta labada dood ee hore marka laga reebo doodda saddexaad:

Shaqada SumMinus

Habkan aadka u fudud ee VBA function wuxuu muujinayaa sida xogta loogu gudbiyo habraac doodo. Waxaad arki kartaa in nooca xogta lagu soo celiyay habraaca lagu qeexay sida Double (Erayada ayaa sheegaya Sida Double ka dib liiska doodaha). Tusaalahan ayaa sidoo kale muujinaya sida natiijada habraaca function ku kaydsan doorsoome leh magac la mid ah magaca habraaca.

U yeerida nidaamka VBA "Function"

Haddii habka fudud ee kor ku xusan function la geliyo moduleka tifaftiraha Visual Basic, waxaa laga wici karaa hababka kale ee VBA ama loo isticmaalo xaashida shaqada ee buug-shaqeedka Excel.

Ka wac nidaamka VBA "Function" habraac kale

Nidaamka function waxaa looga yeeri karaa habraac kale oo VBA ah iyadoo si fudud loogu meeleeyo nidaamkaas doorsoome. Tusaalaha soo socdaa waxa uu tusinayaa wacitaanka habraaca Summinus, oo kor lagu qeexay.

Sub main() wadarta guud ee laba jibaaran = SumMinus(5, 4, 3) Dhammaadka Sub

Ka wac nidaamka VBA "Function" warqad shaqo

Habka VBA function waxaa looga yeeri karaa xaashida shaqada ee Excel si la mid ah shaqada kale ee Excel ee ku dhex dhisan. Sidaa darteed, habka lagu abuuray tusaalihii hore function - Summinus waxa loogu yeedhi karaa marka la geliyo tibaaxahan soo socda unugga xaashida shaqada:

=SumMinus(10, 5, 2)

Habka VBA "Sub"

Tifaftiraha VBA wuxuu fahmayaa inuu jiro nidaam ka horreeya Submarka ay la kulanto koox amarro ah oo ku lifaaqan weedhaha soo socda ee furitaanka iyo xidhitaanka:

Sub ... Dhamaad Sub

Habka VBA "Sub": Tusaalaha 1. Isku toosinta dhexe iyo isbeddelka cabbirka farta ee unugyo kala duwan oo la doortay

Tixgeli tusaale habraac fudud oo VBA ah Sub, kuwaas oo hawshoodu tahay inay beddelaan qaabaynta tirada unugyada la doortay. Unugyadu waxay dhexda u yaallo (labadaba toosan iyo toosanba) waxaana cabbirka farta loo beddelaa isticmaal-kumuuska:

Qaab-hoosaad_Centered_And_Sized(IFontSize Ikhtiyaar Sida Isku-dhafka = 10) Xulashada

Nidaamkan Sub wuxuu sameeyaa ficilo laakiin ma soo celiyo natiijo.

Tusaalahani waxa kale oo uu isticmaalaa dood Ikhtiyaar ah FontSize. Haddii dooda FontSize aan loo gudbin habraaca Sub, markaas qiimihiisu default waa 10. Si kastaba ha ahaatee, haddii doodda FontSize loo gudbay habsocod Sub, ka dibna tirada unugyada la doortay waxaa lagu dejin doonaa cabbirka farta uu cayimay isticmaaluhu.

Habka-hoosaadka VBA: Tusaalaha 2: Isku toosan Xarunta iyo Farta geesiga ah ee Unugyada Kala duwan

Habka soo socdaa wuxuu la mid yahay tii hadda laga hadlay, laakiin markan, halkii wax laga beddeli lahaa, waxay khusaysaa qaabka xarfaha geesinimada leh ee tirada unugyada la doortay. Tani waa tusaale tusaale Sub, kaas oo aan qaadan wax dood ah:

Qaab-hoosaadka_Centered_And_Bold() Xulashada

U yeedhida "Sub" Habka "Sub" ee Excel VBA

Ka wac nidaamka VBA "Sub" habraac kale

Si aad u wacdo nidaamka VBA Sub hab kale oo VBA ah, waxaad u baahan tahay inaad qorto ereyga muhiimka ah Call, magaca habraaca Sub iyo in dheeraad ah oo qawl ah ayaa ah doodaha habraaca. Tan waxaa lagu muujiyey tusaalaha hoose:

Qaabka ugu weyn () Wacitaanka_Centered_And_Sized(20) Dhammaadka Sub

Haddii habraaca Qaabka_Xarun_dhexaad_iyo_Xajmi waxa uu leeyahay wax ka badan hal dood, waa in lagu kala saaro hakad. Sida tan:

Qaybta ugu weyn () Qaabka_Xarunta_iyo_Xajmiga(arg1, arg2, ...) Dhammaadka Hoos

Ka wac nidaamka VBA "Sub" xaashida shaqada

Nidaamka Sub si toos ah looma gelin karo unugga xaashida Excel, sida lagu samayn karo habraac functionsababtoo ah nidaamka Sub ma soo celiyo qiimo. Si kastaba ha ahaatee, hababka Sub, kuwaas oo aan lahayn wax dood ah oo lagu sheego sida Dadweynaha (sida hoos ku cad) ayaa loo heli doonaa isticmaalayaasha xaashida shaqada. Sidaa darteed, haddii hababka fudud ee kor lagu soo sheegay Sub la geliyo cutubka Tifaftiraha Aasaasiga ah ee Visual, habka Qaab_kugudban_iyo_Bod waxaa loo heli doonaa in lagu isticmaalo xaashida shaqada ee Excel, iyo habka Qaabka_Xarun_dhexaad_iyo_Xajmi - lama heli doono sababtoo ah waxay leedahay doodo.

Halkan waxaa ah hab sahlan oo lagu socodsiiyo (ama loo fuliyo) habraaca Sub, laga heli karo xaashida shaqada:

  • Press Alt + F8 (furaha riix Alt oo inta aad hoos u hayso, taabo furaha F8).
  • Liiska macros ee soo muuqda, dooro midka aad rabto inaad ku shaqeyso.
  • Press Run (orod)

Si loo sameeyo habraac Sub si dhakhso leh oo fudud, waxaad ku meelayn kartaa furaha kiiboodhka. Tan awgeed:

  • Press Alt + F8.
  • Liiska macros ee soo muuqda, dooro midka aad rabto in aad ku qorto furaha kiiboodhka.
  • Press Halbeegyada (Options) iyo sanduuqa wada hadalka ee soo muuqda, geli furaha kiiboodhka.
  • Press OK oo xidh wadahadalka Macro (Makro).

Attention: Markaad ku meelaynayso fur-gaaban kiiboodhka makro, hubi inaan loo isticmaalin heer ahaan Excel (tusaale ahaan, Ctrl + C). Haddii aad doorato furaha kiiboodhka ee hore u jiray, waxa dib loogu meelayn doonaa makro, natiijadeeduna, isticmaaluhu waxa laga yaabaa inuu shil ku bilaabo makro.

Baaxadda Habka VBA

Qaybta 2 ee casharkan ayaa ka hadlay baaxadda doorsoomayaasha iyo joogtaynta iyo doorka ereyada muhiimka ah. Dadweynaha и Private. Erayadan muhiimka ah waxaa sidoo kale loo isticmaali karaa hababka VBA:

Qaybaha Dadwaynaha ee AddToCells(i Sida Isku-dhafka)
Haddii ku dhawaaqida habraaca uu ka horeeyo erayga muhiimka ah Dadweynaha, ka dibna habraaca ayaa diyaar u noqon doona dhammaan qaybaha mashruuca VBA-da.
AddToCells-hoosaadka gaarka ah (i Sida isku-darka)
Haddii ku dhawaaqida habraaca uu ka horeeyo erayga muhiimka ah Private, ka dibna nidaamkan waxa loo heli doonaa oo keliya qaybta hadda jirta. Laguma wici karo inta lagu jiro qayb kale ama buuga shaqada ee Excel.

Xasuusnoow haddii ka hor inta aadan ku dhawaaqin nidaamka VBA function or Sub erayga muhiimka ah lama gelin, hantida caadiga ah ayaa loo dejiyay habka Dadweynaha (taasi waa, waxaa laga heli doonaa meel kasta mashruucan VBA). Tani waxay ka duwan tahay dhawaaqyada doorsooma, kuwaas oo asal ahaan ah Private.

Ka bixida hore ee nidaamka VBA "Function" iyo "Sub"

Haddii aad u baahan tahay inaad joojiso fulinta nidaamka VBA function or Sub, iyada oo aan la sugin dhamaadka dabiiciga ah, ka dibna tan waxaa jira hawlwadeeno Shaqada ka bixida и Ka bax Sub. Isticmaalka hawlwadeenadan ayaa hoos lagu muujiyay iyadoo la isticmaalayo hab fudud tusaale ahaan. functionA taas oo rajaynaysa in ay hesho dood togan si ay u qabato hawlo dheeraad ah. Haddii qiimo aan togan ahayn loo gudbiyo nidaamka, markaa hawlo dheeraad ah lama samayn karo, markaa isticmaaluhu waa in la tuso fariin khalad ah oo habraaca waa inuu isla markiiba ka baxaa:

Shaqada VAT_Amount(sVAT_Rate Sida Single) Sida Hal VAT_Amount = 0 Haddii sVAT_Rate <= 0 Markaas MsgBox "Waxa la filayaa qiimo togan oo sVAT_Rate ah laakiin la helay" & sVAT_Qiimaha Bixinta Shaqada Dhammaatay Haddii ...

Fadlan ogow ka hor intaadan dhamaystirin nidaamka function - VAT_Qaddarka, shaqayn VBA ah oo ku dhex jirta ayaa la geliyey koodka MsgBox, kaas oo soo bandhigaya digniin soo baxay isticmaalayaasha.

Leave a Reply