"Function" sy "Sub" Procedures amin'ny VBA

Fampiasa VBA naorina

Alohan'ny hanombohanao mamorona ny asa VBA anao manokana dia tsara ny mahafantatra fa Excel VBA dia manana fanangonana be dia be amin'ny fiasa efa namboarina mialoha izay azonao ampiasaina mandritra ny fanoratana ny kaody.

Ny lisitr'ireo fiasa ireo dia azo jerena ao amin'ny tonian-dahatsoratra VBA:

  • Sokafy ny bokikely Excel ary atombohy ny tonian-dahatsoratra VBA (tsindrio raha hanao izany Alt + F11), ary avy eo manindry F2.
  • Misafidiana tranomboky avy amin'ny lisitry ny midina eo an-tampon'ny efijery VBA.
  • Hisy lisitry ny kilasy sy fiasa VBA naorina ao anatiny. Kitiho ny anaran'ny asa hanehoana ny famaritana fohy ao amin'ny faran'ny varavarankely. mifanety F1 dia hanokatra ny pejy fanampiana an-tserasera ho an'io endri-javatra io.

Ho fanampin'izany, dia hita ao amin'ny Visual Basic Developer Center ny lisitr'ireo fiasa VBA naorina miaraka amin'ny ohatra.

Fomba fanao mahazatra "Function" sy "Sub" ao amin'ny VBA

Ao amin'ny Excel Visual Basic, misy andiana baiko manatanteraka asa manokana napetraka ao anaty fomba fiasa. asa (Fonction) na Sub (Subroutine). Ny tena maha samy hafa ny fomba fiasa asa и Sub izany ve ny procédure asa miverina vokatra, fomba Sub – tsy.

Noho izany, raha mila manao hetsika ianao ary mahazo vokatra (ohatra, isa maromaro), dia matetika no ampiasaina ny fomba fiasa asa, ary raha te hanao hetsika sasantsasany (ohatra, manova ny fandrafetana vondrona sela) dia mila misafidy ny fomba fiasa ianao Sub.

kevitra

Ny angona isan-karazany dia azo ampitaina amin'ny fomba fiasa VBA amin'ny fampiasana arguments. Ny lisitry ny tohan-kevitra dia voafaritra rehefa manambara fomba fiasa. Ohatra, ny fomba fiasa Sub ao amin'ny VBA dia manampy ny isa nomena (Integer) amin'ny sela tsirairay ao amin'ny faritra voafantina. Azonao atao ny mandefa an'io isa io amin'ny fomba fiasa amin'ny fampiasana argument, toy izao:

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

Ataovy ao an-tsaina fa manana tohan-kevitra momba ny fomba fiasa asa и Sub amin'ny VBA dia azo atao. Ny dingana sasany dia tsy mitaky adihevitra.

Tohan-kevitra azo atao

Ny fomba fiasa VBA dia mety manana tohan-kevitra azo atao. Ireo dia tohan-kevitra azon'ny mpampiasa amaritana raha tiany, ary raha esorina izy ireo, dia mampiasa ny soatoavina default ho azy ireo ny fomba fiasa.

Miverena amin'ny ohatra teo aloha, mba hanaovana tohan-kevitra integer amin'ny fonction tsy voatery, dia hambara toy izao:

Sub AddToCells(tsy voatery ho Integer = 0)

Amin'ity tranga ity, ny argument integer i ny default dia ho 0.

Mety misy tohan-kevitra maromaro azo atao amin'ny fomba fiasa iray, izay rehetra voatanisa eo amin'ny faran'ny lisitry ny tohan-kevitra.

Mandalo hevitra amin'ny sanda sy amin'ny reference

Ny tohan-kevitra ao amin'ny VBA dia azo alefa amin'ny fomba roa:

  • ByVal - fampitana tohan-kevitra amin'ny sandany. Midika izany fa ny sanda (izany hoe, dika mitovy amin'ny adihevitra) ihany no ampitaina amin'ny fomba fiasa, ary noho izany dia ho very ny fanovana rehetra natao tamin'ny adihevitra tao anatin'ilay dingana rehefa mivoaka ny dingana.
  • ByRef - fampitana tohan-kevitra amin'ny alalan'ny reference. Izany hoe, ny tena adiresin'ny toerana tohan-kevitra ao amin'ny fitadidiana dia alefa any amin'ny fomba fiasa. Izay fanovana natao tamin'ny tohan-kevitra ao anatin'ilay fomba fiasa dia ho voatahiry rehefa mivoaka ny fomba fiasa.

Mampiasa teny fanalahidy ByVal or ByRef ao amin'ny fanambarana momba ny fomba fiasa, azonao atao ny mamaritra ny fomba fampitana ny tohan-kevitra amin'ny fomba fiasa. Izany dia aseho amin'ny ohatra etsy ambany:

Sub AddToCells(ByVal i As Integer) ... End Sub
Amin'ity tranga ity, ny argument integer i nandalo tamin'ny sandany. Rehefa avy nandao ny fomba Sub natao tamin'ny i ho very ny fiovana.
Sub AddToCells(ByRef i As Integer) ... End Sub
Amin'ity tranga ity, ny argument integer i nandalo tamin'ny reference. Rehefa avy nandao ny fomba Sub natao tamin'ny i ny fanovana dia hotehirizina ao amin'ny fari-piainana izay nampitaina tamin'ny fomba fiasa Sub.

Tsarovy fa ny hevitra ao amin'ny VBA dia alefa amin'ny alàlan'ny reference amin'ny alàlan'ny default. Raha lazaina amin'ny teny hafa, raha tsy ampiasaina ny teny fanalahidy ByVal or ByRef, dia alefa amin'ny alalan'ny reference ny tohan-kevitra.

Alohan'ny hirosoana amin'ny fomba fiasa asa и Sub amin'ny antsipiriany bebe kokoa, dia ilaina ny mijery indray ny endri-javatra sy ny fahasamihafana misy eo amin'ireo karazana fomba roa ireo. Ireto manaraka ireto ny fifanakalozan-kevitra fohy momba ny fomba fiasa VBA asa и Sub ary ohatra tsotra no aseho.

VBA fomba "Function"

Ny tonian-dahatsoratra VBA dia manaiky ny fomba fiasa asarehefa mifanena amin'ny vondron'ny baiko misy eo anelanelan'ireto fanambarana fanokafana sy famaranana manaraka ireto:

Asa ... Famaranana

Araka ny voalaza teo aloha, ny fomba asa ao amin'ny VBA (mifanohitra amin'ny Sub) mamerina sanda iray. Mihatra amin'ny famerenana sanda ireto fitsipika manaraka ireto:

  • Ny karazana angona momba ny sanda miverina dia tsy maintsy ambara ao amin'ny lohatenin'ny fomba fiasa asa.
  • Ny fari-piainana misy ny sanda miverina dia tsy maintsy omena anarana mitovy amin'ny fomba fiasa asa. Tsy mila ambara mitokana io fari-piadidiana io, satria misy foana izy io ho ampahany manan-danja amin'ny fomba fiasa. asa.

Izany dia aseho tsara amin’ity ohatra manaraka ity.

Ohatra VBA Function: Manatanteraka asa matematika amin'ny isa 3

Ity manaraka ity dia ohatra iray amin'ny code procédure VBA asa, izay maka karazana hevitra telo Double (isa roa sosona mitsingevana teboka). Vokatr'izany dia mamerina karazana karazana hafa ny fomba fiasa Doublemitovy amin'ny fitambaran'ny hevitra roa voalohany minus ny hevitra fahatelo:

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

Ity fomba fiasa VBA tena tsotra ity asa mampiseho ny fomba fampitana ny angona amin'ny fomba fiasa amin'ny alalan'ny arguments. Azonao atao ny mahita fa ny karazana data naverina tamin'ny fomba fiasa dia voafaritra ho Double (hoy ny teny Ace Double aorian'ny lisitry ny tohan-kevitra). Ity ohatra ity koa dia mampiseho ny vokatry ny fomba fiasa asa voatahiry ao anaty faribolana mitovy anarana amin'ny anaran'ny fomba fiasa.

Miantso ny fomba fiasa VBA "Function"

Raha ny fomba tsotra etsy ambony asa ampidirina ao anaty maody ao amin'ny tonian-dahatsoratry ny Visual Basic, azo antsoina amin'ny fomba fiasa VBA hafa na ampiasaina amin'ny takelaka miasa ao amin'ny bokikely Excel.

Antsoy ny fomba fiasa VBA "Function" amin'ny fomba hafa

fitsarana asa dia azo antsoina avy amin'ny fomba hafa VBA amin'ny alalan'ny fanendrena fotsiny izany fomba izany ho fari-piainana. Ity ohatra manaraka ity dia mampiseho antso amin'ny fomba fiasa Summinus, izay voafaritra etsy ambony.

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

Antsoy ny fomba fiasa VBA "Function" avy amin'ny takelaka

Vidin'ny VBA asa dia azo antsoina amin'ny takelaka Excel amin'ny fomba mitovy amin'ny asa Excel hafa rehetra. Noho izany, ny fomba noforonina tamin'ny ohatra teo aloha asa - Summinus dia azo antsoina amin'ny fampidirana ity teny manaraka ity ao anaty cellule worksheet:

=SumMinus(10, 5, 2)

VBA fomba "Sub"

Ny tonian-dahatsoratry ny VBA dia mahatakatra fa misy fomba fiasa eo alohany Subrehefa mifanena amin'ny vondron'ny baiko misy eo anelanelan'ireto fanambarana fanokafana sy famaranana manaraka ireto:

Sub ... End Sub

Fomba VBA "Sub": Ohatra 1. Fiovan'ny alignement afovoany sy ny haben'ny endritsoratra amin'ny sela voafantina

Diniho ny ohatra iray amin'ny fomba tsotra VBA Sub, izay ny asany dia ny manova ny fandrafetana ny sela voafantina. Ny sela dia eo afovoany (samy mitsangana na mitsivalana) ary ny haben'ny endri-tsoratra dia novaina ho an'ny mpampiasa voatondro:

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

Ity fomba ity Sub manao hetsika fa tsy mamerina vokatra.

Ity ohatra ity koa dia mampiasa argument Optional FontSize. Raha ny argument FontSize tsy nandalo procédure Sub, dia ny sandan'ny default dia 10. Na izany aza, raha ny argument FontSize nandalo tamin'ny procédure Sub, dia hapetraka amin'ny haben'ny endri-tsoratra nofaritan'ny mpampiasa ny sela voafantina.

Soso-kevitra VBA: Ohatra 2: Ampifanitsy amin'ny afovoany sy litera matavy amin'ny sela voafantina

Ity fomba fiasa manaraka ity dia mitovy amin'ilay vao noresahina, fa amin'ity indray mitoraka ity, raha tokony hanova ny habeny, dia mampiasa fomba endri-tsoratra sahisahy amin'ireo sela voafantina. Ohatra fomba fiasa ity Sub, izay tsy mila arguments:

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

Miantso ny "Sub" Procedure amin'ny Excel VBA

Antsoy ny fomba fiasa VBA "Sub" amin'ny fomba hafa

Miantso fomba fiasa VBA Sub avy amin'ny fomba fiasa VBA hafa, mila manoratra ny teny fanalahidy ianao Call, anaran'ny fomba fiasa Sub ary ao anatin'ny fononteny ihany koa ny tohan-kevitry ny fomba fiasa. Izany dia aseho amin'ny ohatra etsy ambany:

Submain() Call Format_Centered_And_Sized(20) End Sub

Raha ny procédure Format_Centered_and_Sized manana hevitra mihoatra ny iray, tsy maintsy sarahin'ny faingo. Toa izao:

Submain() Call Format_Centered_And_Sized(arg1, arg2, ...) End Sub

Antsoy ny fomba fiasa VBA "Sub" avy amin'ny takelaka

fitsarana Sub tsy azo ampidirina mivantana amin'ny sela Excel, toy ny azo atao amin'ny fomba fiasa asasatria ny procédure Sub tsy mamerina sanda. Na izany aza, ny fomba fiasa Sub, izay tsy misy tohan-kevitra ary ambara ho Public (araka ny aseho etsy ambany) dia ho azon'ny mpampiasa ny takelaka. Araka izany, raha ny fomba tsotra noresahina etsy ambony Sub ampidirina ao amin'ny module ao amin'ny Visual Basic Editor, ny fomba fiasa Format_Centered_and_Bold dia azo ampiasaina amin'ny takelaka Excel, ary ny fomba fiasa Format_Centered_and_Sized – tsy ho azo satria misy tohan-kevitra.

Ity misy fomba mora entina (na manatanteraka) fomba fiasa Sub, azo idirana avy amin'ny takelaka:

  • Press Alt + F8 (tsindrio ny fanalahidy Alt ary eo am-pihazonana azy dia tsindrio ny fanalahidy F8).
  • Ao amin'ny lisitry ny macros izay miseho, safidio ny iray tianao halefa.
  • Press Run (mihazakazaka)

Hanao fomba fiasa Sub haingana sy mora, azonao atao ny manendry hitsin-dàlana fitendry aminy. Ho an'ity:

  • Press Alt + F8.
  • Ao amin'ny lisitry ny macro izay miseho, safidio ny iray tianao homena hitsin-dàlana fitendry.
  • Press masontsivana (Safidy) ary ao amin'ny boaty fifanakalozan-kevitra izay miseho, midira ny hitsin-dàlana fitendry.
  • Press OK ary tapaho ny fifanakalozan-kevitra macro (Macro).

Tandremo: Rehefa manendry hitsin-dàlana fitendry amin'ny macro, dia ataovy izay hahazoana antoka fa tsy ampiasaina ho fenitra ao amin'ny Excel (ohatra, Ctrl + C). Raha misafidy hitsin-dàlana fitendry efa misy ianao, dia haverina amin'ny macro izany, ary vokatr'izany, ny mpampiasa dia mety hanomboka ny macro tsy nahy.

Vidin'ny VBA

Ny fizarana faha-2 amin'ity lesona ity dia niresaka momba ny sahan'ny variables sy ny tsy miova ary ny anjara asan'ny teny fanalahidy. Public и Private. Ireo teny fanalahidy ireo dia azo ampiasaina amin'ny fomba fiasa VBA:

Public Sub AddToCells(i As Integer) ... End Sub
Raha ialohavan'ny teny fototra ny fanambarana ny fomba fiasa Public, dia ho azon'ny modules rehetra ao amin'io tetikasa VBA io ny fomba fiasa.
Private Sub AddToCells(i As Integer) ... End Sub
Raha ialohavan'ny teny fototra ny fanambarana ny fomba fiasa Private, dia ho an'ny maody amin'izao fotoana izao ihany io fomba fiasa io. Tsy azo antsoina izy io raha ao amin'ny module hafa na avy amin'ny workbook Excel.

Tsarovy fa raha alohan'ny hanambarana ny fomba fiasa VBA asa or Sub Tsy ampidirina ny teny fanalahidy, ny fananana default dia napetraka ho an'ny fomba fiasa Public (izany hoe ho hita na aiza na aiza amin'ity tetikasa VBA ity). Izany dia mifanohitra amin'ny fanambarana miovaova, izay amin'ny alàlan'ny default dia Private.

Fivoahana aloha amin'ny fomba fiasa VBA "Function" sy "Sub"

Raha mila manajanona ny fanatanterahana ny fomba fiasa VBA ianao asa or Sub, tsy miandry ny fiafarany voajanahary, dia misy ny mpandraharaha Exit Function и Hivoaka ny Sub. Ny fampiasana ireo mpandraharaha ireo dia aseho eto ambany amin'ny fampiasana fomba tsotra ho ohatra. asaA izay manantena hahazo tohan-kevitra tsara hanaovana asa fanampiny. Raha misy sanda tsy mitongilana ampitaina amin'ny fomba fiasa, dia tsy misy hetsika hafa azo atao, noho izany dia tokony hampiseho hafatra diso ny mpampiasa ary tokony hivoaka avy hatrany ny fomba fiasa:

Function VAT_Amount(sVAT_Rate as single) as single VAT_Amount = 0 Raha sVAT_Rate <= 0 Dia MsgBox "Nanantena sanda Positive sVAT_Rate fa azo" & sVAT_Rate Exit Function Tapitra Raha ... End Function

Mariho fa alohan'ny hamitana ny dingana asa - VAT_Vany, Ampidirina ao anatin'ny kaody ny fiasa VBA naorina MsgBox, izay mampiseho popup fampitandremana ho an'ny mpampiasa.

Leave a Reply