Pêvajoyên "Fonksiyon" û "Bin" di VBA de

Fonksiyonên VBA-ya çêkirî

Berî ku hûn dest bi afirandina fonksiyonên VBA-ya xwe bikin, baş e ku hûn zanibin ku Excel VBA berhevokek dewlemend a fonksiyonên çêkirî yên pêşkeftî heye ku hûn dikarin dema ku koda xwe dinivîsin bikar bînin.

Navnîşek van fonksiyonan dikare di edîtorê VBA de were dîtin:

  • Pirtûkek xebatê ya Excel vekin û edîtorê VBA-yê bidin destpêkirin (ji bo vê yekê bikirtînin Alt + F11), û dûv re jî çap bikin F2.
  • Pirtûkxaneyek ji navnîşa dakêşanê ya li jorê çepê ya ekranê hilbijêrin VBA.
  • Navnîşek ders û fonksiyonên VBA-ya çêkirî dê xuya bibe. Li ser navê fonksiyonê bikirtînin da ku kurteya wê li binê pencereyê nîşan bidin. rû F1 dê ji bo wê taybetmendiyê rûpela alîkariyê ya serhêl veke.

Wekî din, navnîşek bêkêmasî ya fonksiyonên VBA-ya çêkirî yên bi mînakan dikare li Navenda Pêşdebir a Visual Basic were dîtin.

Pêvajoyên xwerû "Fonksiyon" û "Bin" di VBA de

Di Excel Visual Basic de, komek fermanên ku peywirek taybetî pêk tînin di prosedurekê de têne danîn. Karî (Fonksiyon) an bînrawe (Binrûtîne). Cûdahiya sereke di navbera proseduran de Karî и bînrawe ew prosedur e Karî encam, prosedur vedigere bînrawe - ne.

Ji ber vê yekê, heke hûn hewce ne ku çalakiyan bikin û hin encam bistînin (mînakî, çend hejmaran berhev bikin), wê hingê prosedur bi gelemperî tê bikar anîn. Karî, û ji bo ku hûn bi tenê hin çalakiyan bikin (mînakî, formatkirina komek hucreyan biguhezînin), hûn hewce ne ku pêvajoyê hilbijêrin bînrawe.

Armancên

Daneyên cûrbecûr dikarin bi karanîna argumanan ji prosedurên VBA re werin derbas kirin. Lîsteya argûman dema ku pêvajoyek tê ragihandin tê diyar kirin. Ji bo nimûne, pêvajoyê bînrawe di VBA de jimareya jimare (Hêjmar) li her şaneyek di rêza hilbijartî de zêde dike. Hûn dikarin vê hejmarê bi karanîna argumanek, mîna vê, derbasî prosedurê bikin:

Bin AddToCells(i Wek Integer) ... End Sub

Bînin bîra xwe ku ji bo proseduran arguman hene Karî и bînrawe di VBA de vebijarkî ye. Hin prosedurên argumanan hewce nakin.

Argumanên Bijarî

Pêvajoyên VBA dikarin argumanên vebijarkî hebin. Ev arguman in ku bikarhêner ger bixwaze dikare diyar bike, û heke ew ji holê werin rakirin, prosedur ji bo wan nirxên xwerû bikar tîne.

Vegera mînaka berê, ji bo ku argumanek yekjimar ji fonksiyonek vebijarkî were çêkirin, dê bi vî rengî were ragihandin:

Bin AddToCells (Vebijêrk i Wek Hejmar = 0)

Di vê rewşê de, argumana yekjimar i default dê bibe 0.

Di prosedurekê de dikare çend argumanên vebijarkî hebin, ku hemî di dawiya navnîşa argumanan de têne navnîş kirin.

Derbaskirina argumanan ji hêla nirx û bi referansê ve

Argumanên di VBA de dikarin bi du awayan derbasî prosedurekê bibin:

  • ByVal - derbaskirina argumanek bi nirx. Ev tê vê wateyê ku tenê nirx (ango, kopiyek argûmanê) ji prosedurê re derbas dibe, û ji ber vê yekê her guhertinên ku di argumana hundurê prosedûrê de hatine çêkirin dê dema ku prosedur derkeve winda bibe.
  • ByRef - derbaskirina argumanek bi referansê. Ango, navnîşana rastîn a cîhê argumana di bîranînê de ji pêvajoyê re derbas dibe. Her guheztinek ku li argumanek di hundurê prosedurê de hatî çêkirin dê dema ku prosedur derkeve dê were tomar kirin.

Bikaranîn keywords ByVal or ByRef di danezana prosedurê de, hûn dikarin diyar bikin ka arguman çawa derbasî pêvajoyê dibe. Ev di mînakên jêrîn de tê nîşandan:

Sub AddToCells(ByVal i Wek Integer) ... End Sub
Di vê rewşê de, argumana yekjimar i bi nirx derbas kirin. Piştî derketina prosedurê bînrawe hemû bi çêkirin i guhertin dê winda bibin.
Bin AddToCells(ByRef i Wek Integer) ... End Sub
Di vê rewşê de, argumana yekjimar i bi referans derbas kirin. Piştî derketina prosedurê bînrawe hemû bi çêkirin i Guhertin dê di guherbara ku ji prosedurê re derbas bû de werin hilanîn bînrawe.

Bînin bîra xwe ku argumanên di VBA de ji hêla xwerû ve bi referansê têne derbas kirin. Bi gotineke din, eger keywords neyên bikaranîn ByVal or ByRef, paşê argûman dê bi referansê derbas bibe.

Berî ku hûn proseduran bidomînin Karî и bînrawe bi hûrgulî, dê kêrhatî be ku meriv carek din li taybetmendî û cûdahiyên di navbera van her du celeb proseduran de binêre. Li jêr nîqaşên kurt ên pêvajoyên VBA hene Karî и bînrawe û mînakên hêsan têne nîşandan.

Pêvajoya VBA "Fonksiyon"

Edîtorê VBA pêvajoyê nas dike Karîgava ku ew bi komek fermanên ku di navbera daxuyaniyên vekirinê û girtinê yên jêrîn de hatine girtin re rû bi rû dibe:

Fonksiyon ... Fonksiyon Dawî

Wekî ku berê hate gotin, prosedur Karî di VBA de (berevajî bînrawe) nirxek vedigerîne. Rêbazên jêrîn ji bo nirxan vedigerin:

  • Pêdivî ye ku celebê daneya nirxa vegerê di sernavê pêvajoyê de were ragihandin Karî.
  • Guherbara ku nirxa vegerê dihewîne divê wekî prosedurê were navandin Karî. Ev guhêrbar ne hewce ye ku ji hev veqetandî were ragihandin, ji ber ku ew her gav wekî parçeyek yekbûyî ya pêvajoyê heye. Karî.

Ev di mînaka jêrîn de baş tê xuyang kirin.

Nimûne Fonksiyona VBA: Li ser 3 Hejmaran Xebatek Matematîkî pêk tîne

Ya jêrîn mînakek kodek prosedurek VBA ye Karî, ku sê argumanên cureyê digire Dûcar (hejmarên xala herikandinê ya ducarî). Wekî encamek, prosedur hejmarek celebek din vedigerîne Dûcarwekheviya berhevoka her du argumanên pêşîn kêmkirina argumana sêyemîn e:

Fonksiyon SumMinus(dNum1 Wek Ducar, dNum2 Wek Ducar, dNum3 Wek Duqat) Wek Du SumMinus = dNum1 + dNum2 - dNum3 Fonksiyon Dawî

Ev pêvajoya VBA pir hêsan e Karî diyar dike ka çawa bi argumanan dane ji prosedurekê re derbas dibe. Hûn dikarin bibînin ku celebê daneya ku ji hêla prosedurê ve hatî vegerandin wekî tête diyar kirin Dûcar (gotin dibêjin Wek Double piştî lîsteya argumanan). Ev mînak jî nîşan dide ka encama pêvajoyê çawa ye Karî di guhêrbarek bi heman navî wekî navê prosedurê tê hilanîn.

Gazîkirina prosedûra VBA "Fonksiyon"

Ger pêvajoya jor sade Karî Di modulek di edîtorê Visual Basic de tête danîn, ew dikare ji prosedurên din ên VBA were gazî kirin an jî li ser pelgeyek di pirtûkek xebatê Excel de were bikar anîn.

Pêvajoya VBA "Fonksiyon" ji pêvajoyek din bang bikin

Doz Karî dikare ji pêvajoyek din a VBA-yê bi tenê veqetandina wê prosedurê li guhêrbarek were gazî kirin. Mînaka jêrîn bangek prosedurek nîşan dide Summinus, ku li jor hate diyarkirin.

Bin serekî() Dim total wek Ducar total = SumMinus(5, 4, 3) End Sub

Pêvajoya VBA "Fonksiyon" ji pelgeyek xebatê bang bikin

pêvajoya VBA Karî dikare ji pelgeya xebatê ya Excel bi heman rengî wekî fonksiyonek din a Excel-ê ya çêkirî were gazî kirin. Ji ber vê yekê, prosedûra ku di mînaka berê de hatî çêkirin Karî - Summinus dikare bi ketina îfadeya jêrîn di şaneyek pelgeya xebatê de were gazî kirin:

=SumMinus(10, 5, 2)

Pêvajoya VBA "Sub"

Edîtorê VBA fam dike ku li pêşiya wê prosedurek heye bînrawegava ku ew bi komek fermanên ku di navbera daxuyaniyên vekirinê û girtinê yên jêrîn de hatine girtin re rû bi rû dibe:

Bin ... End Sub

Pêvajoya VBA "Sub": Nimûne 1. Rêzkirina navendê û guhertina mezinahiya tîpan di rêzek şaneyên hilbijartî de

Mînakek pêvajoyek hêsan a VBA-yê bifikirin bînrawe, ku peywira wî ew e ku formatkirina rêzika hilbijartî ya hucreyan biguhezîne. Hucre navend in (hem vertîkal û hem jî horizontî) û mezinahiya fontê li gorî bikarhênerê diyarkirî tê guheztin:

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

Ev prosedur bînrawe çalakiyan dike lê encamek nade.

Ev nimûne jî argumanek Bijarî bikar tîne FontSize. Eger argumana FontSize derbasî prosedurê nebûye bînrawe, wê demê nirxa wê ya xwerû 10 e. Lêbelê, heke arguman FontSize derbasî prosedurê bûn bînrawe, wê demê rêza hilbijartî ya hucreyan dê li gorî mezinahiya tîpên ku ji hêla bikarhêner ve hatî destnîşan kirin were danîn.

Pêvajoya Binpê ya VBA: Mînak 2: Di Rêjeya Hilbijartî ya Hucreyan de Tîrêjkirina Navendî û Fonta Stûr

Pêvajoya jêrîn mîna ya ku hatî nîqaş kirin e, lê vê carê, li şûna mezinbûnê, ew şêwazek tîpek stûr li rêza şaneyên hilbijartî bicîh tîne. Ev prosedureke nimûne ye bînrawe, ku tu argumanan nagire:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = Bin-dawiya Rast

Gazîkirina Pêvajoya "Sub" li Excel VBA

Pêvajoya VBA "Sub" ji prosedurek din bang bikin

Ji bo pêvajoyek VBA bang bikin bînrawe ji pêvajoyek din a VBA-yê, hûn hewce ne ku peyva key binivîsin Bang, navê pêvajoyê bînrawe û bêtir di nav parantezê de argumanên prosedurê hene. Ev di nimûneya jêrîn de tê nîşandan:

Sub main() Call Format_Centered_And_Sized(20) End Sub

Ger prosedûra Format_Centered_And_Sized ji yek argumanan zêdetir heye, divê ew bi koman ji hev bên veqetandin. Welî evê:

Sub main() Call Format_Centred_And_Sized(arg1, arg2, ...) End Sub

Pêvajoya VBA "Sub" ji pelgeya xebatê re bang bikin

Doz bînrawe nekare rasterast têkeve hucreyek pelê Excel, wekî ku bi prosedurekê were kirin Karîji ber ku prosedureke bînrawe nirxek venagerîne. Lêbelê, prosedurên bînrawe, ku tu argûmanên wan nînin û wek tên ragihandin Alenî (wek ku li jêr tê xuyang kirin) dê ji bikarhênerên pelê xebatê re peyda bibe. Bi vî rengî, heke prosedurên hêsan ên ku li jor hatine nîqaş kirin bînrawe di modulek di Edîtorê Visual Basic de, prosedur tê xistin Format_Centered_And_Bold dê ji bo karanîna di pelgeya xebatê ya Excel, û prosedurê de peyda bibe Format_Centered_And_Sized - dê peyda nebe ji ber ku argumanên wê hene.

Li vir rêyek hêsan e ku meriv pêvajoyek bimeşîne (an bicîh bîne). bînrawe, ji pelgeya xebatê tê gihîştin:

  • Rojnamevanî Alt + F8 (bişkojka bitikîne alt û dema ku wê hilde, bişkojkê bikirtînin F8).
  • Di navnîşa makroyên ku xuya dike de, ya ku hûn dixwazin bimeşînin hilbijêrin.
  • Rojnamevanî Rev (rev)

Ji bo pêkanîna prosedurek bînrawe zû û bi hêsanî, hûn dikarin kurtebirek klavyeyê jê re destnîşan bikin. Ji bo vê:

  • Rojnamevanî Alt + F8.
  • Di navnîşa makroyên ku xuya dike de, ya ku hûn dixwazin kurtebirra klavyeyê jê re destnîşan bikin hilbijêrin.
  • Rojnamevanî Parametreyên (Vebijêrk) û di qutiya diyalogê ya ku xuya dike de, têkevin kurtebirra klavyeyê.
  • Rojnamevanî OK û diyalogê bigire makro (Makro).

Baldarî: Dema ku kurtenivîsek klavyeyê ji makroyekê re destnîşan dikin, pê ewle bin ku ew di Excel de wekî standard nayê bikar anîn (mînak, Ctrl + C). Ger hûn kurtebirek klavyeyê ya jixwe heyî hilbijêrin, ew ê ji nû ve ji makroyê re were veqetandin, û wekî encamek, bikarhêner dibe ku bi qezayê dest bi makroyê bike.

Qada Pêvajoya VBA

Beşa 2 ya vê tutoriyê li ser çarçoweya guhêrbar û domdar û rola peyvên sereke nîqaş kir. Alenî и taybet. Van peyvan dikarin bi prosedurên VBA-yê re jî werin bikar anîn:

Bingeha Giştî AddToCells(i Wek Intejmar) ... End Sub
Ger danezana prosedurê berî peyva key were Alenî, wê hingê prosedur dê ji hemî modulên wê projeya VBA re peyda bibe.
Sub AddToCells-a Taybet (ez Wek Intejimar) ... End Sub
Ger danezana prosedurê berî peyva key were taybet, wê hingê ev prosedur dê tenê ji bo modula heyî peyda bibe. Dema ku ew di modulek din de an ji pirtûkek xebatê ya Excel-ê nayê bang kirin.

Bînin bîra xwe ku heke berî ragihandina pêvajoyek VBA Karî or bînrawe keyword nayê danîn, taybetmendiya xwerû ji bo prosedurê hatî danîn Alenî (ango, ew ê di vê projeya VBA de li her derê peyda bibe). Ev berevajî daxuyaniyên guhêrbar e, ku bi xwerû ne taybet.

Derketina zû ji prosedurên VBA "Fonksiyon" û "Sub"

Heke hûn hewce ne ku pêkanîna pêvajoyek VBA biqedînin Karî or bînrawe, bêyî ku li benda dawiya wê ya xwezayî bimîne, wê hingê ji bo vê operator hene Fonksiyon Derketin и Derketin Sub. Bikaranîna van operatoran li jêr bi karanîna pêvajoyek hêsan wekî mînakek tê destnîşan kirin. KarîA ku li bendê ye ku argumanek erênî bistîne da ku operasyonên din pêk bîne. Ger nirxek ne-erênî ji prosedurê re derbas bibe, wê hingê ti operasyonên din nayên kirin, ji ber vê yekê pêdivî ye ku bikarhêner peyamek xeletiyê nîşan bide û pêvajo tavilê derkeve:

Fonksiyon VAT_Amount(sVAT_Rate Wek Single) Wek Yek VAT_Amount = 0 Ger sVAT_Rate <= 0 Dûv re MsgBox "Nirxeyek erênî ya sVAT_Rate hêvî dikir lê hate wergirtin" & sVAT_Rate Fonksiyona Derketinê Bi dawî dibe Ger ... Fonksiyon Dawî

Ji kerema xwe not bikin ku berî ku prosedur biqedînin Karî - VAT_Amount, fonksiyonek VBA ya çêkirî di kodê de tête kirin MsgBox, ku ji bikarhêner re popupek hişyariyê nîşan dide.

Leave a Reply