Taratibu za "Kazi" na "Sub" katika VBA

Kujengwa katika VBA Kazi

Kabla ya kuanza kuunda vitendaji vyako vya VBA, ni vyema kujua kwamba Excel VBA ina mkusanyiko mzuri wa vitendaji vilivyojengewa awali ambavyo unaweza kutumia unapoandika msimbo wako.

Orodha ya vipengele hivi inaweza kutazamwa katika kihariri cha VBA:

  • Fungua kitabu cha kazi cha Excel na uzindua kihariri cha VBA (bofya ili kufanya hivyo Alt + F11), na kisha bonyeza F2.
  • Teua maktaba kutoka kwenye orodha kunjuzi iliyo upande wa juu kushoto wa skrini VBA.
  • Orodha ya madarasa na kazi za VBA zilizojengwa zitaonekana. Bofya kwenye jina la kazi ili kuonyesha maelezo yake mafupi chini ya dirisha. kushinikiza F1 itafungua ukurasa wa usaidizi mtandaoni kwa kipengele hicho.

Kwa kuongeza, orodha kamili ya kazi za VBA zilizojengwa na mifano zinaweza kupatikana katika Kituo cha Visual Basic Developer.

Taratibu maalum "Kazi" na "Sub" katika VBA

Katika Excel Visual Basic, seti ya amri zinazofanya kazi maalum huwekwa kwa utaratibu. kazi (Kazi) au Chini (Subroutine). Tofauti kuu kati ya taratibu kazi и Chini huo ndio utaratibu kazi inarudisha matokeo, utaratibu Chini - sio.

Kwa hivyo, ikiwa unahitaji kufanya vitendo na kupata matokeo fulani (kwa mfano, jumla ya nambari kadhaa), basi utaratibu hutumiwa kawaida kazi, na ili kufanya vitendo kadhaa (kwa mfano, kubadilisha muundo wa kikundi cha seli), unahitaji kuchagua utaratibu. Chini.

Majadiliano

Data mbalimbali zinaweza kupitishwa kwa taratibu za VBA kwa kutumia hoja. Orodha ya hoja imebainishwa wakati wa kutangaza utaratibu. Kwa mfano, utaratibu Chini katika VBA huongeza nambari kamili (Integer) kwa kila seli katika safu iliyochaguliwa. Unaweza kupitisha nambari hii kwa utaratibu kwa kutumia hoja, kama hii:

Sub AddToCells(i Kama Nambari kamili) ... Mwisho Ndogo

Kumbuka kwamba kuwa na hoja kwa taratibu kazi и Chini katika VBA ni hiari. Taratibu zingine hazihitaji mabishano.

Hoja za Hiari

Taratibu za VBA zinaweza kuwa na hoja za hiari. Hizi ni hoja ambazo mtumiaji anaweza kutaja ikiwa anataka, na ikiwa zimeachwa, utaratibu hutumia maadili chaguo-msingi kwao.

Tukirudi kwa mfano uliopita, kutengeneza hoja kamili kwa chaguo la kukokotoa, itatangazwa kama hii:

AddToCells Ndogo(Sio lazima mimi Kama Nambari kamili = 0)

Katika kesi hii, hoja kamili i chaguo-msingi itakuwa 0.

Kunaweza kuwa na hoja kadhaa za hiari katika utaratibu, ambazo zote zimeorodheshwa mwishoni mwa orodha ya hoja.

Kupitisha hoja kwa thamani na kwa kumbukumbu

Hoja katika VBA zinaweza kupitishwa kwa utaratibu kwa njia mbili:

  • ByVal - kupitisha hoja kwa thamani. Hii ina maana kwamba tu thamani (yaani, nakala ya hoja) hupitishwa kwa utaratibu, na kwa hiyo mabadiliko yoyote yaliyofanywa kwa hoja ndani ya utaratibu yatapotea wakati utaratibu unatoka.
  • KwaRef - kupitisha hoja kwa kumbukumbu. Hiyo ni, anwani halisi ya eneo la hoja kwenye kumbukumbu hupitishwa kwa utaratibu. Mabadiliko yoyote yaliyofanywa kwa hoja ndani ya utaratibu yatahifadhiwa wakati utaratibu unatoka.

Kutumia maneno muhimu ByVal or KwaRef katika tamko la utaratibu, unaweza kutaja jinsi hoja inavyopitishwa kwa utaratibu. Hii inaonyeshwa katika mifano hapa chini:

Sub AddToCells(ByVal i As Integer) ... Mwisho Ndogo
Katika kesi hii, hoja kamili i kupita kwa thamani. Baada ya kuacha utaratibu Chini zote zimetengenezwa na i mabadiliko yatapotea.
Sub AddToCells(ByRef i As Integer) ... Mwisho Ndogo
Katika kesi hii, hoja kamili i kupita kwa kumbukumbu. Baada ya kuacha utaratibu Chini zote zimetengenezwa na i mabadiliko yatahifadhiwa katika kutofautiana ambayo ilipitishwa kwa utaratibu Chini.

Kumbuka kwamba hoja katika VBA hupitishwa kwa rejeleo kwa chaguo-msingi. Kwa maneno mengine, ikiwa maneno muhimu hayatumiki ByVal or KwaRef, basi hoja itapitishwa kwa kumbukumbu.

Kabla ya kuendelea na taratibu kazi и Chini kwa undani zaidi, itakuwa muhimu kuangalia tena vipengele na tofauti kati ya aina hizi mbili za taratibu. Yafuatayo ni mijadala mifupi ya taratibu za VBA kazi и Chini na mifano rahisi inaonyeshwa.

Utaratibu wa VBA "Kazi"

Mhariri wa VBA anatambua utaratibu kaziinapokutana na kundi la amri zilizoambatanishwa kati ya taarifa zifuatazo za ufunguzi na kufunga:

Kazi ... Maliza Kazi

Kama ilivyoelezwa hapo awali, utaratibu kazi katika VBA (kinyume na Chini) hurejesha thamani. Sheria zifuatazo zinatumika kwa kurejesha maadili:

  • Aina ya data ya thamani ya kurudi lazima itangazwe kwenye kichwa cha utaratibu kazi.
  • Tofauti iliyo na thamani ya kurejesha lazima iitwe sawa na utaratibu kazi. Tofauti hii haihitaji kutangazwa kando, kwani daima iko kama sehemu muhimu ya utaratibu. kazi.

Hii inaonyeshwa vizuri katika mfano ufuatao.

Mfano wa Kazi ya VBA: Kufanya Operesheni ya Hisabati kwenye Nambari 3

Ufuatao ni mfano wa msimbo wa utaratibu wa VBA kazi, ambayo inachukua hoja tatu za aina Mara mbili (nambari za uhakika wa kuelea mara mbili). Matokeo yake, utaratibu unarudi nambari nyingine ya aina Mara mbilisawa na jumla ya hoja mbili za kwanza ukiondoa hoja ya tatu:

Utendakazi SumMinus(dNum1 Kama Mbili, dNum2 Kama Mbili, dNum3 Kama Mbili) Kama SumMinus Mara Mbili = dNum1 + dNum2 - dNum3 Kazi ya Mwisho

Utaratibu huu rahisi sana wa VBA kazi inaonyesha jinsi data inavyopitishwa kwa utaratibu kupitia hoja. Unaweza kuona kwamba aina ya data iliyorejeshwa na utaratibu inafafanuliwa kama Mara mbili (maneno yanasema Kama Mbili baada ya orodha ya hoja). Mfano huu pia unaonyesha jinsi matokeo ya utaratibu kazi kuhifadhiwa katika kigezo chenye jina sawa na jina la utaratibu.

Kuita utaratibu wa VBA "Kazi"

Ikiwa utaratibu rahisi hapo juu kazi iliyoingizwa kwenye moduli katika kihariri cha Visual Basic, inaweza kuitwa kutoka kwa taratibu nyingine za VBA au kutumika kwenye laha ya kazi katika kitabu cha Excel.

Piga utaratibu wa VBA "Kazi" kutoka kwa utaratibu mwingine

Utaratibu kazi inaweza kuitwa kutoka kwa utaratibu mwingine wa VBA kwa kugawa tu utaratibu huo kwa kutofautisha. Mfano ufuatao unaonyesha wito kwa utaratibu Summinus, ambayo imefafanuliwa hapo juu.

Sehemu kuu ndogo() Dim jumla kama Jumla ya Maradufu = SumMinus(5, 4, 3) Maliza Ndogo

Piga utaratibu wa VBA "Kazi" kutoka kwa karatasi

Utaratibu wa VBA kazi inaweza kuitwa kutoka kwa karatasi ya Excel kwa njia sawa na kazi nyingine yoyote iliyojengwa ndani ya Excel. Kwa hiyo, utaratibu ulioundwa katika mfano uliopita kazi - Summinus inaweza kuitwa kwa kuingiza usemi ufuatao kwenye seli ya lahakazi:

=SumMinus(10, 5, 2)

Utaratibu wa VBA "Sub"

Mhariri wa VBA anaelewa kuwa kuna utaratibu mbele yake Chiniinapokutana na kundi la amri zilizoambatanishwa kati ya taarifa zifuatazo za ufunguzi na kufunga:

Sub ... Mwisho Sub

Utaratibu wa VBA "Nchi": Mfano wa 1. Mpangilio wa katikati na mabadiliko ya ukubwa wa fonti katika safu uliyochagua ya seli

Fikiria mfano wa utaratibu rahisi wa VBA Chini, ambaye kazi yake ni kubadilisha uumbizaji wa anuwai iliyochaguliwa ya seli. Seli zimewekwa katikati (wima na mlalo) na saizi ya fonti inabadilishwa kuwa iliyoainishwa na mtumiaji:

Umbizo Ndogo_Lililowekwa_Na_Ukubwa(Si lazima iFontSize Kama Nambari = 10) Chaguo.Ulinganishaji Mlalo = Chaguo la xlKituo.VerticalAlignment = Uchaguzi wa xlCenter.Font.Size = Ndogo ya Mwisho ya iFontSize

Utaratibu huu Chini hufanya vitendo lakini hairudishi matokeo.

Mfano huu pia unatumia hoja ya Hiari Ukubwa wa Font. Ikiwa hoja Ukubwa wa Font haijapitishwa kwa utaratibu Chini, basi thamani yake chaguo-msingi ni 10. Hata hivyo, ikiwa hoja Ukubwa wa Font kupitishwa kwa utaratibu Chini, kisha safu iliyochaguliwa ya seli itawekwa kwa saizi ya fonti iliyobainishwa na mtumiaji.

Utaratibu Ndogo wa VBA: Mfano wa 2: Pangilia Katikati na Fonti Mkali katika Safu Zilizochaguliwa za Seli

Utaratibu ufuatao ni sawa na ule ambao umejadiliwa hivi punde, lakini wakati huu, badala ya kubadilisha ukubwa, unatumia mtindo wa herufi nzito kwa safu iliyochaguliwa ya seli. Huu ni utaratibu wa mfano Chini, ambayo haichukui hoja:

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

Utaratibu wa kupiga "Sub" katika Excel VBA

Piga utaratibu wa VBA "Sub" kutoka kwa utaratibu mwingine

Kuita utaratibu wa VBA Chini kutoka kwa utaratibu mwingine wa VBA, unahitaji kuandika neno kuu Wito, jina la utaratibu Chini na zaidi kwenye mabano kuna hoja za utaratibu. Hii inaonyeshwa katika mfano hapa chini:

Ndogo kuu() Umbizo la Wito_Centered_And_Sized(20) Mwisho Ndogo

Ikiwa utaratibu Umbizo_Lililo katikati_Na_Ukubwa ina hoja zaidi ya moja, lazima zitenganishwe kwa koma. Kama hii:

Ndogo kuu() Umbizo la Simu_Centered_And_Sized(arg1, arg2, ...) Komesha Ndogo

Piga utaratibu wa VBA "Sub" kutoka kwa karatasi ya kazi

Utaratibu Chini haiwezi kuingizwa moja kwa moja kwenye seli ya karatasi ya Excel, kama inavyoweza kufanywa kwa utaratibu kazikwa sababu utaratibu Chini hairudishi thamani. Hata hivyo, taratibu Chini, ambazo hazina hoja na zinatangazwa kuwa Umma (kama inavyoonyeshwa hapa chini) itapatikana kwa watumiaji wa laha-kazi. Hivyo, kama taratibu rahisi kujadiliwa hapo juu Chini kuingizwa katika moduli katika Visual Basic Editor, utaratibu Umbizo_Lililo katikati_Na_Bold itapatikana kwa matumizi katika lahakazi ya Excel, na utaratibu Umbizo_Lililo katikati_Na_Ukubwa - haitapatikana kwa sababu ina hoja.

Hapa kuna njia rahisi ya kuendesha (au kutekeleza) utaratibu Chini, inayopatikana kutoka kwa lahakazi:

  • Vyombo vya habari Alt + F8 (bonyeza kitufe Alt na huku ukiishikilia chini, bonyeza kitufe F8).
  • Katika orodha ya macros inayoonekana, chagua unayotaka kuendesha.
  • Vyombo vya habari Kukimbia (kimbia)

Kufanya utaratibu Chini kwa haraka na kwa urahisi, unaweza kuikabidhi njia ya mkato ya kibodi. Kwa hii; kwa hili:

  • Vyombo vya habari Alt + F8.
  • Katika orodha ya makro inayoonekana, chagua ile unayotaka kukabidhi njia ya mkato ya kibodi.
  • Vyombo vya habari vigezo (Chaguo) na katika sanduku la mazungumzo linaloonekana, ingiza njia ya mkato ya kibodi.
  • Vyombo vya habari OK na funga mazungumzo Macro (Macro).

Tahadhari: Wakati wa kugawa njia ya mkato ya kibodi kwa macro, hakikisha kuwa haitumiwi kama kawaida katika Excel (kwa mfano, Ctrl + C) Ukichagua njia ya mkato ya kibodi iliyopo tayari, itakabidhiwa kwa jumla, na kwa sababu hiyo, mtumiaji anaweza kuanza macro kwa bahati mbaya.

Upeo wa Utaratibu wa VBA

Sehemu ya 2 ya somo hili ilijadili upeo wa viambajengo na vibadilishio na jukumu la manenomsingi. Umma и Binafsi. Maneno haya muhimu pia yanaweza kutumika na taratibu za VBA:

Public Sub AddToCells(i Kama Nambari kamili) ... Maliza Sub
Ikiwa tamko la utaratibu linatanguliwa na neno kuu Umma, basi utaratibu utapatikana kwa moduli zote katika mradi huo wa VBA.
Private Sub AddToCells(i Kama Nambari) ... Mwisho Ndogo
Ikiwa tamko la utaratibu linatanguliwa na neno kuu Binafsi, basi utaratibu huu utapatikana tu kwa moduli ya sasa. Haiwezi kuitwa ukiwa kwenye moduli nyingine yoyote au kutoka kwa kitabu cha kazi cha Excel.

Kumbuka kwamba ikiwa kabla ya kutangaza utaratibu wa VBA kazi or Chini neno kuu halijaingizwa, mali ya chaguo-msingi imewekwa kwa utaratibu Umma (yaani, itapatikana kila mahali katika mradi huu wa VBA). Hii ni tofauti na matamko tofauti, ambayo kwa chaguo-msingi ni Binafsi.

Toka mapema kutoka kwa taratibu za VBA "Kazi" na "Sub"

Ikiwa unahitaji kusitisha utekelezaji wa utaratibu wa VBA kazi or Chini, bila kusubiri mwisho wake wa asili, basi kwa hili kuna waendeshaji Ondoka kwenye Kitendaji и Toka Sub. Matumizi ya waendeshaji hawa yanaonyeshwa hapa chini kwa kutumia utaratibu rahisi kama mfano. kaziA ambayo inatarajia kupokea hoja chanya ili kufanya shughuli zaidi. Ikiwa thamani isiyo ya chanya inapitishwa kwa utaratibu, basi hakuna shughuli zaidi zinazoweza kufanywa, kwa hivyo mtumiaji anapaswa kuonyeshwa ujumbe wa makosa na utaratibu unapaswa kuondoka mara moja:

Tekeleza VAT_Amount(sVAT_Rate Kama Moja) Kama VAT_Amount Moja = 0 Ikiwa sVAT_Rate <= 0 Kisha MsgBox "Ilitarajia Thamani Chanya ya sVAT_Rate lakini Imepokelewa " & sVAT_Rate Toka Kazi ya Mwisho Kama ... Maliza Kazi

Tafadhali kumbuka kuwa kabla ya kukamilisha utaratibu kazi - VAT_Kiasi, kazi ya VBA iliyojengwa imeingizwa kwenye msimbo MsgBox, ambayo inaonyesha dirisha ibukizi la onyo kwa mtumiaji.

Acha Reply