Gweithdrefnau “Swyddogaeth” ac “Is” yn VBA

Swyddogaethau VBA adeiledig

Cyn i chi ddechrau creu eich swyddogaethau VBA eich hun, mae'n dda gwybod bod gan Excel VBA gasgliad cyfoethog o swyddogaethau adeiledig parod y gallwch eu defnyddio wrth ysgrifennu'ch cod.

Gellir gweld rhestr o'r swyddogaethau hyn yn y golygydd VBA:

  • Agorwch lyfr gwaith Excel a lansiwch y golygydd VBA (cliciwch i wneud hyn Alt + F11), ac yna pwyswch F2.
  • Dewiswch lyfrgell o'r gwymplen ar ochr chwith uchaf y sgrin VBA.
  • Bydd rhestr o ddosbarthiadau a swyddogaethau VBA adeiledig yn ymddangos. Cliciwch ar enw'r swyddogaeth i ddangos ei ddisgrifiad byr ar waelod y ffenestr. gwasgu F1 yn agor y dudalen gymorth ar-lein ar gyfer y nodwedd honno.

Yn ogystal, gellir dod o hyd i restr gyflawn o swyddogaethau VBA adeiledig gydag enghreifftiau yn y Ganolfan Datblygwr Visual Basic.

Gweithdrefnau personol “Swyddogaeth” ac “Is” yn VBA

Yn Excel Visual Basic, gosodir set o orchmynion sy'n cyflawni tasg benodol mewn gweithdrefn. swyddogaeth (Swyddogaeth) neu is (Is-reolwaith). Y prif wahaniaeth rhwng y gweithdrefnau swyddogaeth и is yw bod y weithdrefn swyddogaeth yn dychwelyd canlyniad, gweithdrefn is – ddim.

Felly, os oes angen i chi gyflawni gweithredoedd a chael rhywfaint o ganlyniad (er enghraifft, adio nifer o rifau), yna defnyddir y weithdrefn fel arfer swyddogaeth, ac er mwyn cyflawni rhai gweithredoedd yn syml (er enghraifft, newid fformat grŵp o gelloedd), mae angen i chi ddewis y weithdrefn is.

Dadleuon

Gellir trosglwyddo data amrywiol i weithdrefnau VBA gan ddefnyddio dadleuon. Pennir y rhestr ddadleuon wrth ddatgan trefn. Er enghraifft, y weithdrefn is yn VBA yn ychwanegu'r cyfanrif a roddir (Cyfanrif) i bob cell yn yr ystod a ddewiswyd. Gallwch drosglwyddo'r rhif hwn i'r weithdrefn gan ddefnyddio dadl, fel hyn:

Is AddToCells(i Fel Cyfanrif) ... Diwedd Is

Cadwch mewn cof bod cael dadleuon dros weithdrefnau swyddogaeth и is yn VBA yn ddewisol. Nid oes angen dadleuon ar rai gweithdrefnau.

Dadleuon Dewisol

Gall gweithdrefnau VBA fod â dadleuon dewisol. Mae'r rhain yn ddadleuon y gall y defnyddiwr eu nodi os ydynt yn dymuno, ac os cânt eu hepgor, mae'r weithdrefn yn defnyddio'r gwerthoedd rhagosodedig ar eu cyfer.

Gan ddychwelyd i'r enghraifft flaenorol, i wneud dadl gyfanrif i swyddogaeth yn ddewisol, byddai'n cael ei ddatgan fel hyn:

Is AddToCells(Dewisol i Fel Cyfanrif = 0)

Yn yr achos hwn, y cyfanrif ddadl i y rhagosodiad fydd 0.

Gall fod sawl dadl ddewisol mewn gweithdrefn, a rhestrir pob un ohonynt ar ddiwedd y rhestr ddadleuon.

Pasio dadleuon yn ôl gwerth a thrwy gyfeiriad

Gellir trosglwyddo dadleuon yn VBA i weithdrefn mewn dwy ffordd:

  • ByVal – pasio dadl yn ôl gwerth. Mae hyn yn golygu mai dim ond y gwerth (hynny yw, copi o'r ddadl) sy'n cael ei drosglwyddo i'r weithdrefn, ac felly bydd unrhyw newidiadau a wneir i'r ddadl y tu mewn i'r weithdrefn yn cael eu colli pan ddaw'r weithdrefn i ben.
  • ByRef – pasio dadl trwy gyfeiriad. Hynny yw, mae cyfeiriad gwirioneddol lleoliad y ddadl yn y cof yn cael ei drosglwyddo i'r weithdrefn. Bydd unrhyw newidiadau a wneir i ddadl y tu mewn i'r weithdrefn yn cael eu cadw pan ddaw'r weithdrefn i ben.

Defnyddio geiriau allweddol ByVal or ByRef yn y datganiad gweithdrefn, gallwch nodi sut y caiff y ddadl ei throsglwyddo i'r weithdrefn. Dangosir hyn mewn enghreifftiau isod:

Is AddToCells(ByVal i Fel Cyfanrif) ... Diwedd Is
Yn yr achos hwn, y cyfanrif ddadl i pasio gan werth. Ar ôl gadael y weithdrefn is i gyd wedi eu gwneud gyda i bydd newidiadau yn cael eu colli.
Is AddToCells(ByRef i Fel Cyfanrif) ... Diwedd Is
Yn yr achos hwn, y cyfanrif ddadl i pasio trwy gyfeiriad. Ar ôl gadael y weithdrefn is i gyd wedi eu gwneud gyda i bydd y newidiadau yn cael eu storio yn y newidyn a drosglwyddwyd i'r weithdrefn is.

Cofiwch fod dadleuon yn VBA yn cael eu pasio trwy gyfeirio yn ddiofyn. Mewn geiriau eraill, os na ddefnyddir geiriau allweddol ByVal or ByRef, yna bydd y ddadl yn cael ei phasio trwy gyfeirio.

Cyn bwrw ymlaen â'r gweithdrefnau swyddogaeth и is yn fanylach, bydd yn ddefnyddiol edrych eto ar y nodweddion a'r gwahaniaethau rhwng y ddau fath hyn o weithdrefnau. Mae'r canlynol yn drafodaethau byr am weithdrefnau VBA swyddogaeth и is a dangosir enghreifftiau syml.

Gweithdrefn VBA «Swyddogaeth»

Mae golygydd VBA yn cydnabod y weithdrefn swyddogaethpan fydd yn dod ar draws grŵp o orchmynion sydd wedi'u hamgáu rhwng y datganiadau agor a chau canlynol:

Swyddogaeth ... Diwedd Swyddogaeth

Fel y soniwyd yn gynharach, y weithdrefn swyddogaeth yn VBA (yn hytrach na is) yn dychwelyd gwerth. Mae'r rheolau canlynol yn berthnasol i werthoedd dychwelyd:

  • Rhaid datgan math data'r gwerth dychwelyd ym mhennawd y weithdrefn swyddogaeth.
  • Rhaid enwi'r newidyn sy'n cynnwys y gwerth dychwelyd yr un peth â'r weithdrefn swyddogaeth. Nid oes angen datgan y newidyn hwn ar wahân, gan ei fod bob amser yn bodoli fel rhan annatod o'r weithdrefn. swyddogaeth.

Dangosir hyn yn dda yn yr enghraifft ganlynol.

Enghraifft Swyddogaeth VBA: Perfformio Gweithrediad Mathemategol ar 3 Rhif

Mae'r canlynol yn enghraifft o god gweithdrefn VBA swyddogaeth, sy'n cymryd tair dadl o fath dwbl (rhifau pwynt arnofio manwl-dwbl). O ganlyniad, mae'r weithdrefn yn dychwelyd nifer arall o fath dwblhafal i swm y ddwy ddadl gyntaf namyn y drydedd ddadl:

Swyddogaeth SumMinus(dNum1 Fel Dwbl, dNum2 Fel Dwbl, dNum3 Fel Dwbl) Fel Dwbl SumMinus = dNum1 + dNum2 - dNum3 Diwedd Swyddogaeth

Y weithdrefn VBA syml iawn hon swyddogaeth yn dangos sut mae data yn cael ei drosglwyddo i weithdrefn trwy ddadleuon. Gallwch weld bod y math o ddata a ddychwelwyd gan y weithdrefn wedi'i ddiffinio fel dwbl (dywed y geiriau Fel Dwbl ar ôl y rhestr o ddadleuon). Mae'r enghraifft hon hefyd yn dangos sut mae canlyniad y weithdrefn swyddogaeth storio mewn newidyn gyda'r un enw ag enw'r weithdrefn.

Galw gweithdrefn VBA yn “Swyddogaeth”

Os yw'r weithdrefn syml uchod swyddogaeth wedi'i fewnosod i fodiwl yn y golygydd Visual Basic, gellir ei alw o weithdrefnau VBA eraill neu ei ddefnyddio ar daflen waith mewn llyfr gwaith Excel.

Ffoniwch weithdrefn VBA “Swyddogaeth” o weithdrefn arall

Gweithdrefn swyddogaeth gellir ei alw o weithdrefn VBA arall trwy neilltuo'r weithdrefn honno i newidyn yn unig. Mae'r enghraifft ganlynol yn dangos galwad i weithdrefn Summinus, a ddiffiniwyd uchod.

Is-brif() Cyfanswm pylu fel Cyfanswm dwbl = SumMinus(5, 4, 3) Diwedd Is

Ffoniwch weithdrefn VBA “Swyddogaeth” o daflen waith

Gweithdrefn VBA swyddogaeth gellir ei alw o daflen waith Excel yn yr un modd ag unrhyw swyddogaeth Excel adeiledig arall. Felly, y weithdrefn a grëwyd yn yr enghraifft flaenorol swyddogaeth - Summinus gellir ei alw trwy fewnbynnu'r mynegiad canlynol i mewn i gell taflen waith:

=SumMinus(10, 5, 2)

Gweithdrefn VBA «Is»

Mae golygydd VBA yn deall bod gweithdrefn o'i flaen ispan fydd yn dod ar draws grŵp o orchmynion sydd wedi'u hamgáu rhwng y datganiadau agor a chau canlynol:

Is... Diwedd Is

Gweithdrefn VBA “Is”: Enghraifft 1. Aliniad canol a newid maint ffont mewn ystod ddethol o gelloedd

Ystyriwch enghraifft o weithdrefn VBA syml is, a'i dasg yw newid fformatio'r ystod ddethol o gelloedd. Mae'r celloedd wedi'u canoli (yn fertigol ac yn llorweddol) ac mae maint y ffont yn cael ei newid i'r un a bennir gan y defnyddiwr:

Is Format_Centered_And_Sized(iFontSize Dewisol Fel Cyfanrif = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize Diwedd Is

Y weithdrefn hon is yn cyflawni gweithredoedd ond nid yw'n dychwelyd canlyniad.

Mae'r enghraifft hon hefyd yn defnyddio dadl Ddewisol Maint Ffont. Os bydd y ddadl Maint Ffont heb ei drosglwyddo i weithdrefn is, yna ei werth rhagosodedig yw 10. Fodd bynnag, os yw'r ddadl Maint Ffont pasio i weithdrefn is, yna bydd yr ystod ddethol o gelloedd yn cael ei osod i'r maint ffont a bennir gan y defnyddiwr.

Is-weithdrefn VBA: Enghraifft 2: Aliniad Canol a Ffont Trwm mewn Ystod Dethol o Gelloedd

Mae'r weithdrefn ganlynol yn debyg i'r un sydd newydd ei thrafod, ond y tro hwn, yn lle newid maint, mae'n cymhwyso arddull ffont beiddgar i'r ystod ddethol o gelloedd. Mae hon yn weithdrefn enghreifftiol is, nad yw'n cymryd unrhyw ddadl:

Is Fformat_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = Gwir Diwedd Is

Gweithdrefn Galw “Is” yn Excel VBA

Ffoniwch weithdrefn VBA “Is” o weithdrefn arall

I alw gweithdrefn VBA is o weithdrefn VBA arall, mae angen i chi ysgrifennu'r allweddair Ffoniwch, enw gweithdrefn is ac ymhellach mewn cromfachau y mae dadleuon y drefn. Dangosir hyn yn yr enghraifft isod:

Is-brif () Fformat Galwad_Centered_And_Sized(20) Diwedd Is

Os bydd y weithdrefn Fformat_Canolog_A_Sized â mwy nag un ddadl, rhaid iddynt gael eu gwahanu gan atalnodau. Fel hyn:

Is-brif() Fformat Galwad_Centered_And_Sized(arg1, arg2,...) Diwedd Is

Ffoniwch weithdrefn VBA “Is” o'r daflen waith

Gweithdrefn is ni ellir ei fewnbynnu'n uniongyrchol i gell ddalen Excel, fel y gellir ei wneud gyda gweithdrefn swyddogaethoherwydd bod y weithdrefn is nid yw'n dychwelyd gwerth. Fodd bynnag, gweithdrefnau is, sydd heb unrhyw ddadleuon ac sy'n cael eu datgan fel Cyhoeddus (fel y dangosir isod) ar gael i ddefnyddwyr y daflen waith. Felly, os yw'r gweithdrefnau syml a drafodwyd uchod is wedi'i fewnosod mewn modiwl yn y Golygydd Sylfaenol Gweledol, y weithdrefn Fformat_Canolog_A_Bold ar gael i'w defnyddio mewn taflen waith Excel, a'r weithdrefn Fformat_Canolog_A_Sized – ni fydd ar gael oherwydd bod ganddo ddadleuon.

Dyma ffordd hawdd i redeg (neu weithredu) gweithdrefn is, ar gael o'r daflen waith:

  • Pwyswch Alt + F8 (pwyswch allwedd Alt a thra yn ei ddal i lawr, pwyswch yr allwedd F8).
  • Yn y rhestr o macros sy'n ymddangos, dewiswch yr un rydych chi am ei redeg.
  • Pwyswch Run (rhedeg)

I gyflawni gweithdrefn is yn gyflym ac yn hawdd, gallwch chi neilltuo llwybr byr bysellfwrdd iddo. Ar gyfer hyn:

  • Pwyswch Alt + F8.
  • Yn y rhestr o macros sy'n ymddangos, dewiswch yr un rydych chi am aseinio llwybr byr bysellfwrdd iddo.
  • Pwyswch paramedrau (Dewisiadau) ac yn y blwch deialog sy'n ymddangos, nodwch y llwybr byr bysellfwrdd.
  • Pwyswch OK a chau'r ymgom Macro (Macro).

sylw: Wrth aseinio llwybr byr bysellfwrdd i facro, gwnewch yn siŵr nad yw'n cael ei ddefnyddio fel safon yn Excel (er enghraifft, Ctrl + C). Os dewiswch lwybr byr bysellfwrdd sydd eisoes yn bodoli, bydd yn cael ei ailbennu i'r macro, ac o ganlyniad, gall y defnyddiwr gychwyn y macro ar ddamwain.

Cwmpas Gweithdrefn VBA

Roedd Rhan 2 o'r tiwtorial hwn yn trafod cwmpas newidynnau a chysonion a rôl allweddeiriau. Cyhoeddus и Preifat. Gellir defnyddio'r geiriau allweddol hyn hefyd gyda gweithdrefnau VBA:

Is-Gyhoeddus AddToCells(i Fel Cyfanrif) ... Diwedd Is
Os bydd yr allweddair yn rhagflaenu'r datganiad gweithdrefn Cyhoeddus, yna bydd y drefn ar gael i bob modiwl yn y prosiect VBA hwnnw.
Is Breifat AddToCells(i Fel Cyfanrif) ... Diwedd Is
Os bydd yr allweddair yn rhagflaenu'r datganiad gweithdrefn Preifat, yna bydd y drefn hon ar gael ar gyfer y modiwl presennol yn unig. Ni ellir ei alw tra mewn unrhyw fodiwl arall neu o lyfr gwaith Excel.

Cofiwch, os cyn datgan gweithdrefn VBA swyddogaeth or is nid yw allweddair wedi'i fewnosod, mae'r eiddo rhagosodedig wedi'i osod ar gyfer y weithdrefn Cyhoeddus (hynny yw, bydd ar gael ym mhobman yn y prosiect VBA hwn). Mae hyn yn wahanol i ddatganiadau amrywiol, sydd yn ddiofyn Preifat.

Gadael yn gynnar o weithdrefnau VBA “Swyddogaeth” ac “Is”

Os oes angen i chi derfynu gweithrediad gweithdrefn VBA swyddogaeth or is, heb aros am ei ddiwedd naturiol, yna ar gyfer hyn mae yna weithredwyr Swyddogaeth Gadael и Is Allanfa. Dangosir defnydd y gweithredwyr hyn isod gan ddefnyddio gweithdrefn syml fel enghraifft. swyddogaethA sy'n disgwyl cael dadl gadarnhaol i gyflawni gweithrediadau pellach. Os caiff gwerth nad yw'n gadarnhaol ei drosglwyddo i'r weithdrefn, yna ni ellir cyflawni unrhyw weithrediadau pellach, felly dylid dangos neges gwall i'r defnyddiwr a dylai'r weithdrefn adael ar unwaith:

Swyddogaeth VAT_Swm(sVAT_Rate As Single) Fel Sengl VAT_Amount = 0 Os sVAT_Rate <= 0 Yna MsgBox "Disgwyl Gwerth Positif o sVAT_Rate ond Wedi'i Dderbyn" & sVAT_Rate Gadael Swyddogaeth Diwedd Os... Swyddogaeth Diwedd

Sylwch, cyn cwblhau'r weithdrefn swyddogaeth - TAW_Swm, mae swyddogaeth VBA adeiledig yn cael ei fewnosod yn y cod MsgBlwch, sy'n dangos popup rhybudd i'r defnyddiwr.

Gadael ymateb