Vartotojo apibrėžtos funkcijos (UDF) kūrimas „Excel VBA“ (galutinis vadovas)

Naudodami VBA galite sukurti pasirinktinę funkciją (dar vadinamą vartotojo apibrėžta funkcija), kurią galima naudoti darbalapiuose, kaip ir įprastas funkcijas.

Tai naudinga, kai nepakanka esamų „Excel“ funkcijų. Tokiais atvejais galite sukurti savo pasirinktinę vartotojo apibrėžtą funkciją (UDF), kad atitiktų jūsų konkrečius poreikius.

Šioje pamokoje aptarsiu viską apie pasirinktinių funkcijų kūrimą ir naudojimą VBA.

Jei jus domina lengvas VBA mokymasis, patikrinkite mano Internetinis „Excel VBA“ mokymas.

Kas yra funkcijų procedūra VBA?

Funkcijų procedūra yra VBA kodas, kuris atlieka skaičiavimus ir grąžina reikšmę (arba reikšmių masyvą).

Naudodami funkcijų procedūrą, galite sukurti funkciją, kurią galite naudoti darbalapyje (kaip ir bet kurią įprastą „Excel“ funkciją, pvz., SUM arba VLOOKUP).

Sukūrę funkcijų procedūrą naudodami VBA, galite ją naudoti trimis būdais:

  1. Kaip formulė darbalapyje, kur ji gali priimti argumentus kaip įvestį ir grąžina reikšmę arba reikšmių masyvą.
  2. Kaip VBA paprogramės kodo ar kito funkcijos kodo dalis.
  3. Sąlyginiame formatavime.

Nors darbalapyje jau yra 450 ir daugiau integruotų „Excel“ funkcijų, jums gali prireikti pasirinktinės funkcijos, jei:

  • Integruotos funkcijos negali padaryti to, ko norite. Tokiu atveju galite sukurti pasirinktinę funkciją pagal savo poreikius.
  • Integruotos funkcijos gali atlikti darbą, tačiau formulė yra ilga ir sudėtinga. Tokiu atveju galite sukurti pasirinktinę funkciją, kurią lengva skaityti ir naudoti.
Atminkite, kad pasirinktinės funkcijos, sukurtos naudojant VBA, gali būti žymiai lėtesnės nei integruotos funkcijos. Taigi jie geriausiai tinka situacijoms, kai negalite gauti rezultato naudodami integruotas funkcijas.

Funkcija vs. Paprogramė VBA

„Subroutine“ leidžia vykdyti kodo rinkinį, o „Funkcija“ grąžina reikšmę (arba reikšmių masyvą).

Pavyzdžiui, jei turite skaičių (tiek teigiamų, tiek neigiamų) sąrašą ir norite nustatyti neigiamus skaičius, štai ką galite padaryti naudodami funkciją ir paprogramę.

Paprogramė gali kilpoti per kiekvieną diapazono langelį ir paryškinti visas ląsteles, kuriose yra neigiama reikšmė. Šiuo atveju paprogramė galiausiai pakeičia diapazono objekto savybes (pakeisdama ląstelių spalvą).

Naudodami pasirinktinę funkciją, galite ją naudoti atskirame stulpelyje ir ji gali grąžinti TRUE, jei langelio reikšmė yra neigiama, o FALSE, jei teigiama. Naudodami funkciją, negalite keisti objekto savybių. Tai reiškia, kad negalite pakeisti langelio spalvos naudodami pačią funkciją (tačiau tai galite padaryti naudodami sąlyginį formatavimą naudodami pasirinktinę funkciją).

Kai kuriate vartotojo apibrėžtą funkciją (UDF) naudodami VBA, tą funkciją galite naudoti darbalapyje, kaip ir bet kurią kitą funkciją. Daugiau apie tai aptarsiu skyriuje „Skirtingi vartotojo nustatytos funkcijos naudojimo„ Excel “būdai“.

Paprastos vartotojo nustatytos funkcijos kūrimas VBA

Leiskite man sukurti paprastą vartotojo apibrėžtą funkciją VBA ir parodysiu, kaip ji veikia.

Žemiau pateiktas kodas sukuria funkciją, kuri ištrauks skaitines dalis iš raidinės ir skaitmeninės eilutės.

Funkcija „GetNumeric“ („CellRef“ kaip eilutė) kaip „Long Dim String“ Ilgis kaip sveikasis skaičius „StringLength“ = Len („CellRef“), kai „i = 1“ iki „StringLength“, jei „IsNumeric“ („Mid“ („CellRef“, „i“, „1“)), tada „Result“ = „Result & Mid“ („CellRef“, „i“, „1“) Kitas i GetNumeric = Rezultato pabaigos funkcija

Kai modulyje turite pirmiau nurodytą kodą, galite naudoti šią funkciją darbaknygėje.

Žemiau yra, kaip ši funkcija - „GetNumeric“ - galima naudoti „Excel“.

Prieš pasakydamas, kaip ši funkcija sukurta VBA ir kaip ji veikia, yra keletas dalykų, kuriuos turėtumėte žinoti:

  • Kai sukuriate funkciją VBA, ji tampa prieinama visoje darbaknygėje, kaip ir bet kuri kita įprasta funkcija.
  • Kai įvedate funkcijos pavadinimą ir po to lygybės ženklą, „Excel“ parodys jums funkcijos pavadinimą atitinkamų funkcijų sąraše. Pirmiau pateiktame pavyzdyje, kai įvedžiau = Gauti, „Excel“ man parodė sąrašą, kuriame buvo pasirinktinė funkcija.

Manau, kad tai yra geras pavyzdys, kai galite naudoti VBA, kad sukurtumėte paprasta naudoti funkciją „Excel“. Tą patį galite padaryti naudodami formulę (kaip parodyta šioje pamokoje), tačiau tai tampa sudėtinga ir sunku suprasti. Naudodami šį UDF, turite pateikti tik vieną argumentą ir gausite rezultatą.

Vartotojo nustatytos funkcijos anatomija VBA

Ankstesniame skyriuje aš jums daviau kodą ir darbalapyje parodžiau, kaip veikia UDF funkcija.

Dabar gilinkimės ir pažiūrėkime, kaip sukurta ši funkcija. Toliau pateiktą kodą turite įdėti į modulį VB redaktoriuje. Šią temą nagrinėju skyriuje - „Kur įdėti vartotojo apibrėžtos funkcijos VBA kodą“.

Funkcija „GetNumeric“ („CellRef As String“) kaip ilga “Ši funkcija ištraukia skaitinę dalį iš eilutės Dim StringLength As Integer StringLength = Len (CellRef), kai i = 1 iki StringLength If IsNumeric (Mid (CellRef, i, 1)) Tada Rezultatas = Rezultatas ir vidurys (CellRef, i, 1) Kitas i GetNumeric = Rezultato pabaigos funkcija

Pirmoji kodo eilutė prasideda žodžiu - Funkcija.

Šis žodis sako VBA, kad mūsų kodas yra funkcija (o ne paprograma). Po žodžio Funkcija eina funkcijos pavadinimas - „GetNumeric“. Tai yra vardas, kurį mes naudosime darbalapyje, kad galėtume naudoti šią funkciją.

  • Funkcijos pavadinime negali būti tarpų. Be to, negalite pavadinti funkcijos, jei ji nesutampa su langelio nuorodos pavadinimu. Pavyzdžiui, negalite pavadinti funkcijos ABC123, nes ji taip pat nurodo langelį „Excel“ darbalapyje.
  • Jūs neturėtumėte savo funkcijai suteikti to paties pavadinimo, kaip ir esamos funkcijos. Jei tai padarysite, „Excel“ pirmenybę teiktų integruotai funkcijai.
  • Jei norite atskirti žodžius, galite naudoti pabraukimą. Pavyzdžiui, „Get_Numeric“ yra priimtinas pavadinimas.

Po funkcijos pavadinimo skliausteliuose pateikiami kai kurie argumentai. Tai yra argumentai, kurių mūsų funkcijai reikėtų iš vartotojo. Tai yra kaip argumentai, kuriuos turime pateikti „Excel“ integruotoms funkcijoms. Pavyzdžiui, funkcijoje COUNTIF yra du argumentai (diapazonas ir kriterijai)

Skliaustuose turite nurodyti argumentus.

Mūsų pavyzdyje yra tik vienas argumentas - „CellRef“.

Taip pat gera praktika yra nurodyti, kokio argumento funkcija tikisi. Šiame pavyzdyje, kadangi mes šifruosime funkciją langelio nuoroda, galime nurodyti argumentą kaip „diapazono“ tipą. Jei nenurodysite duomenų tipo, VBA jį laikys variantu (tai reiškia, kad galite naudoti bet kokį duomenų tipą).

Jei turite daugiau nei vieną argumentą, galite nurodyti tuos pačius skliaustus, atskirtus kableliu. Vėliau šiame vadove pamatysime, kaip naudoti kelis argumentus vartotojo apibrėžtoje funkcijoje.

Atminkite, kad funkcija nurodyta kaip „String“ duomenų tipas. Tai pasakytų VBA, kad formulės rezultatas bus duomenų tipo „String“.

Nors čia galiu naudoti skaitinių duomenų tipą (pvz., „Long“ arba „Double“), tai apribotų skaičių diapazoną, kurį jis gali grąžinti. Jei turiu 20 skaičių ilgio eilutę, kurią turiu išgauti iš bendros eilutės, funkcijos paskelbimas ilga arba dviguba suteiktų klaidą (nes skaičius nepatektų į diapazoną). Taigi funkcijos išvesties duomenų tipą išlaikiau kaip eilutę.

Antroji kodo eilutė - žalia, prasidedanti apostrofu - yra komentaras. Skaitydamas kodą, VBA ignoruoja šią eilutę. Tai galite naudoti norėdami pridėti kodo aprašymą ar išsamią informaciją.

Trečioji kodo eilutė deklaruoja kintamąjį „StringLength“ kaip sveikų duomenų tipą. Tai yra kintamasis, kuriame saugome formulės analizuojamos eilutės ilgio vertę.

Ketvirtoji eilutė deklaruoja kintamąjį Rezultatas kaip eilutės duomenų tipą. Tai kintamasis, kuriame ištrauksime skaičius iš raidinės ir skaitmeninės eilutės.

Penktoji eilutė įvesties argumento eilutės ilgį priskiria kintamajam „StringLength“. Atminkite, kad „CellRef“ reiškia argumentą, kurį vartotojas pateiks naudodamas darbalapio formulę (arba naudodamas ją VBA - tai pamatysime vėliau šiame vadove).

Šeštoji, septintoji ir aštuntoji eilutės yra ciklo „Kitas“ dalis. Ciklas veikia tiek kartų, kiek įvesties argumente yra simbolių. Šį skaičių suteikia funkcija LEN ir jis priskiriamas kintamajam „StringLength“.

Taigi kilpa eina nuo „1 iki eilutės ilgio“.

Ciklo metu IF sakinys analizuoja kiekvieną eilutės simbolį ir, jei jis yra skaitinis, prideda tą skaitinį simbolį prie rezultato kintamojo. Tam ji naudoja MBA funkciją VBA.

Antroji paskutinė kodo eilutė funkcijai priskiria rezultato vertę. Būtent ši kodo eilutė užtikrina, kad funkcija grąžins „Result“ reikšmę ląstelėje (iš kur ji vadinama).

Paskutinė kodo eilutė yra pabaigos funkcija. Tai yra privaloma kodo eilutė, nurodanti VBA, kad funkcijos kodas čia baigiasi.

Aukščiau pateiktas kodas paaiškina skirtingas tipinės pasirinktinės funkcijos, sukurtos VBA, dalis. Tolesniuose skyriuose mes gilinsimės į šiuos elementus ir taip pat pamatysime įvairius būdus, kaip vykdyti VBA funkciją „Excel“.

Argumentai vartotojo apibrėžtoje funkcijoje VBA

Anksčiau pateiktuose pavyzdžiuose, kur mes sukūrėme vartotojo apibrėžtą funkciją, kad gautume skaitinę dalį iš raidinės ir skaitmeninės eilutės („GetNumeric“), funkcija buvo sukurta taip, kad būtų priimtas vienas argumentas.

Šiame skyriuje aptarsiu, kaip sukurti funkcijas, kuriose nėra argumentų, prie tų, kuriose pateikiami keli argumentai (privalomi ir pasirenkami argumentai).

Funkcijos kūrimas VBA be jokių argumentų

„Excel“ darbalapyje turime keletą funkcijų, kurios nereikalauja jokių argumentų (pvz., RAND, TODAY, NOW).

Šios funkcijos nepriklauso nuo jokių įvesties argumentų. Pvz., Funkcija TODAY grąžins dabartinę datą, o RAND funkcija - atsitiktinį skaičių nuo 0 iki 1.

Tokią panašią funkciją galite sukurti ir VBA.

Žemiau yra kodas, kuris suteiks jums failo pavadinimą. Tam nereikia jokių argumentų, nes rezultatas, kurį reikia grąžinti, nepriklauso nuo jokių argumentų.

Funkcija WorkbookName () kaip eilutė WorkbookName = ThisWorkbook.Name Pabaigos funkcija

Aukščiau pateiktas kodas nurodo funkcijos rezultatą kaip eilutės duomenų tipą (kaip rezultatas, kurio norime, yra failo pavadinimas - eilutė).

Ši funkcija funkcijai priskiria „ThisWorkbook.Name“ reikšmę, kuri grąžinama, kai funkcija naudojama darbalapyje.

Jei failas buvo išsaugotas, jis grąžina pavadinimą su failo plėtiniu, kitaip jis tiesiog nurodo pavadinimą.

Tačiau aukščiau aprašyta problema yra viena.

Jei failo pavadinimas pasikeis, jis nebus automatiškai atnaujinamas. Paprastai funkcija atnaujinama, kai pasikeičia įvesties argumentai. Tačiau kadangi šioje funkcijoje nėra argumentų, funkcija neskaičiuojama iš naujo (net jei pakeisite darbaknygės pavadinimą, uždarykite ją ir vėl atidarykite).

Jei norite, galite priversti perskaičiuoti naudodami sparčiuosius klavišus - „Control“ + „Alt“ + F9.

Kad formulė būtų perskaičiuojama kiekvieną kartą, kai pasikeičia darbalapis, turite į ją įtraukti kodo eilutę.

Žemiau pateiktas kodas leidžia funkcijai perskaičiuoti kiekvieną kartą, kai pasikeičia darbalapis (kaip ir kitos panašios darbalapio funkcijos, tokios kaip TODAY arba RAND funkcija).

Funkcija WorkbookName () kaip eilutės programa. Lakus tikrasis darbaknygės pavadinimas = ThisWorkbook.Name pabaigos funkcija

Dabar, jei pakeisite darbaknygės pavadinimą, ši funkcija bus atnaujinta, kai pasikeis darbalapis arba iš naujo atidarysite šią darbaknygę.

Funkcijos kūrimas VBA su vienu argumentu

Viename iš aukščiau pateiktų skyrių jau matėme, kaip sukurti funkciją, kuri apima tik vieną argumentą (aukščiau aprašyta funkcija „GetNumeric“).

Sukurkime dar vieną paprastą funkciją, kuriai reikia tik vieno argumento.

Funkcija, sukurta naudojant žemiau esantį kodą, nurodytą tekstą pavers didžiosiomis raidėmis. Dabar „Excel“ jau turime tam skirtą funkciją ir ši funkcija skirta tik parodyti, kaip ji veikia. Jei turite tai padaryti, geriau naudoti įmontuotą UPPER funkciją.

Funkcija „ConvertToUpperCase“ („CellRef“ kaip diapazonas) „ConvertToUpperCase“ = UCase („CellRef“) pabaigos funkcija

Ši funkcija naudoja UCase funkciją VBA, kad pakeistų kintamojo „CellRef“ vertę. Tada ji priskiria vertę funkcijai „ConvertToUpperCase“.

Kadangi ši funkcija yra argumentas, mums nereikia naudoti programos. Lakioji dalis čia. Kai tik argumentas pasikeičia, funkcija automatiškai atnaujinama.

Funkcijos kūrimas VBA su keliais argumentais

Kaip ir darbalapio funkcijos, galite sukurti funkcijas VBA, kurioms reikia kelių argumentų.

Žemiau pateiktas kodas sukurtų funkciją, kuri ištrauks tekstą prieš nurodytą ribotuvą. Tam reikalingi du argumentai - langelio nuoroda, kurioje yra teksto eilutė, ir skiriamasis ženklas.

Funkcija „GetDataBeforeDelimiter“ („CellRef As Range“, „Delim As String“) kaip „String Dim“ Rezultatas kaip „String Dim“ DelimPosition As Integer DelimPosition = InStr (1, CellRef, Delim, vbBinaryCompare) - 1 Result = Left (CellRef, DelimPosition)

Kai naudotojo apibrėžtoje funkcijoje reikia naudoti daugiau nei vieną argumentą, visus skliausteliuose esančius argumentus galite atskirti kableliu.

Atminkite, kad kiekvienam argumentui galite nurodyti duomenų tipą. Pirmiau pateiktame pavyzdyje „CellRef“ buvo deklaruotas kaip diapazono duomenų tipas, o „Delim“ - kaip eilutės duomenų tipas. Jei nenurodote jokio duomenų tipo, VBA mano, kad tai yra duomenų tipo variantas.

Kai darbalapyje naudojate aukščiau nurodytą funkciją, turite nurodyti langelio nuorodą, kurios tekstas yra pirmasis argumentas, o antrasis argumentas - skiriamieji ženklai (-ai) dvigubose kabutėse.

Tada ji patikrina, ar nėra ribų padėties, naudojant INBA funkciją VBA. Tada ši pozicija naudojama išgauti visus simbolius prieš skiriamąjį ženklą (naudojant funkciją LEFT).

Galiausiai rezultatas priskiriamas funkcijai.

Ši formulė toli gražu nėra tobula. Pvz., Jei įvedate skiriamąjį ženklą, kurio nėra tekste, tai sukels klaidą. Dabar galite naudoti IFERROR funkciją darbalapyje, kad atsikratytumėte klaidų, arba galite naudoti žemiau esantį kodą, kuris grąžina visą tekstą, kai neranda ribos.

Funkcija „GetDataBeforeDelimiter“ („CellRef As Range“, „Delim As String“) kaip „String Dim“ rezultatas kaip „String Dim“ „DelimPosition As Integer“ CellRef, DelimPosition) GetDataBeforeDelimiter = Rezultato pabaigos funkcija

Mes galime dar labiau optimizuoti šią funkciją.

Jei įvedate tekstą (iš kurio norite išgauti prieš skiriamąjį elementą) esančią funkciją, tai sukels klaidą. Pirmyn … pabandykite!

Tai atsitinka, nes mes nurodėme „CellRef“ kaip diapazono duomenų tipą.

Arba, jei norite, kad ribotuvas būtų ląstelėje ir naudojate langelio nuorodą, o ne ją sunkiai koduojate formulėje, to negalite padaryti naudodami aukščiau pateiktą kodą. Taip yra todėl, kad „Delim“ buvo paskelbtas eilutės duomenų tipu.

Jei norite, kad funkcija galėtų lanksčiai priimti tiesioginį teksto įvedimą ar langelio nuorodas iš vartotojo, turite pašalinti duomenų tipo deklaraciją. Galų gale tai būtų argumentas kaip duomenų tipo variantas, kuris gali priimti bet kokio tipo argumentus ir juos apdoroti.

Žemiau pateiktas kodas tai padarys:

Funkcija „GetDataBeforeDelimiter“ („CellRef“, „Delim“) kaip eilutės pritemdytas rezultatas kaip eilutės šviesa „DelimPosition“ kaip sveikasis skaičius „DelimPosition = InStr“ (1, „CellRef“, „Delim“, „vbBinaryCompare“) - 1 Jei „DelimPosition“ <0, tada „DelimPosition“ = „Len“ („CellRef“) rezultatas = kairė („CellRef“, „DelimPosition“) GetDataBeforeDelimiter = Rezultato pabaigos funkcija

Funkcijos kūrimas VBA su neprivalomais argumentais

„Excel“ yra daug funkcijų, kuriose kai kurie argumentai yra neprivalomi.

Pavyzdžiui, legendinėje VLOOKUP funkcijoje yra 3 privalomi argumentai ir vienas pasirenkamas argumentas.

Neprivalomas argumentas, kaip rodo pavadinimas, yra neprivalomas nurodyti. Jei nenurodysite vieno iš privalomų argumentų, jūsų funkcija pateiks klaidą, tačiau jei nenurodysite neprivalomo argumento, jūsų funkcija veiktų.

Tačiau neprivalomi argumentai nėra nenaudingi. Jie leidžia jums pasirinkti iš daugybės variantų.

Pavyzdžiui, funkcijoje VLOOKUP, jei nenurodote ketvirtojo argumento, VLOOKUP atlieka apytikslę peržiūrą, o jei paskutinį argumentą nurodote kaip FALSE (arba 0), jis tiksliai atitinka.

Atminkite, kad neprivalomi argumentai visada turi būti po visų privalomų argumentų. Pradžioje negalite turėti neprivalomų argumentų.

Dabar pažiūrėkime, kaip sukurti funkciją VBA su neprivalomais argumentais.

Funkcija su tik pasirenkamu argumentu

Kiek žinau, nėra integruotos funkcijos, kuri imtų tik neprivalomus argumentus (čia galiu klysti, bet negaliu sugalvoti tokios funkcijos).

Bet mes galime sukurti vieną su VBA.

Žemiau yra funkcijos kodas, kuris suteiks jums dabartinę datą formatu dd-mm-yyyy, jei neįvesite jokio argumento (ty paliksite jį tuščią), ir „dd mmmm, yyyy“ formatu, jei ką nors įvesite kaip argumentą (ty bet ką, kad argumentas nebūtų tuščias).

Funkcija CurrDate (pasirinktinai fmt kaip variantas) Dim Result If IsMissing (fmt) then CurrDate = Format (Date, "dd-mm-yyyy") Else CurrDate = Format (Date, "dd mmmm, yyyy") End If End Function

Atminkite, kad aukščiau pateikta funkcija naudoja „IsMissing“, kad patikrintų, ar trūksta argumento, ar ne. Jei norite naudoti „IsMissing“ funkciją, pasirenkamas argumentas turi būti duomenų tipo variantas.

Aukščiau pateikta funkcija veikia nepriklausomai nuo to, ką įvedate kaip argumentą. Kode tikriname, ar neprivalomas argumentas pateiktas, ar ne.

Tai galite padaryti tvirtesnę, kaip argumentus imdami tik konkrečias reikšmes ir kitais atvejais parodydami klaidą (kaip parodyta toliau pateiktame kode).

Funkcija CurrDate (pasirinktinai fmt kaip variantas) Dim Rezultatas If IsMissing (fmt) Tada CurrDate = Formatas (Data, "dd-mm-yyyy") ElseIf fmt = 1 Tada CurrDate = Format (Date, "dd mmmm, yyyy") Else CurrDate = CVErr (xlErrValue) Funkcija End If End

Aukščiau pateiktas kodas sukuria funkciją, kuri rodo datą „dd-mm-yyyy“ formatu, jei nepateikiamas argumentas, ir „dd mmmm, yyyy“ formatu, kai argumentas yra 1. Visais kitais atvejais pateikiama klaida.

Funkcija su privalomais ir neprivalomais argumentais

Mes jau matėme kodą, kuris ištraukia skaitinę dalį iš eilutės.

Dabar pažvelkime į panašų pavyzdį, kuriame pateikiami tiek privalomi, tiek neprivalomi argumentai.

Žemiau pateiktas kodas sukuria funkciją, kuri ištraukia teksto dalį iš eilutės. Jei pasirenkamas argumentas yra TIESA, rezultatas pateikiamas didžiosiomis raidėmis, o jei pasirenkamas argumentas yra FALSE arba praleistas, jis pateikia tokį, koks yra.

Funkcija „GetText“ („CellRef“ kaip diapazonas, pasirenkamas „TextCase“ = klaidinga) Kaip eilutė „Dim StringLength“ kaip sveikas skaičius Dim Rezultatas kaip eilutė „StringLength = Len“ („CellRef“), kai „i = 1“ iki „StringLength“, jei ne („IsNumeric“ (vidurys („CellRef“, „i“, „1“)))) Rezultatas = Rezultatas ir vidurys (CellRef, i, 1) Kitas i Jei TextCase = Tiesa, tada Rezultatas = UCase (Rezultatas) GetText = Rezultato pabaigos funkcija

Atminkite, kad aukščiau pateiktame kode mes inicijavome „TextCase“ reikšmę kaip klaidingą (žiūrėkite skliausteliuose pirmoje eilutėje).

Tai darydami įsitikinome, kad pasirenkamas argumentas prasideda nuo numatytosios vertės, kuri yra FALSE. Jei vartotojas nurodo reikšmę TRUE, funkcija grąžina tekstą didžiosiomis raidėmis, o jei vartotojas nurodo pasirenkamą argumentą kaip FALSE arba praleidžia, tada grąžinamas tekstas yra toks, koks yra.

Funkcijos kūrimas VBA su masyvu kaip argumentas

Iki šiol matėme funkcijų su pasirinktiniais/privalomais argumentais kūrimo pavyzdžių, kai šie argumentai buvo viena reikšmė.

Taip pat galite sukurti funkciją, kuri kaip argumentą gali naudoti masyvą. „Excel“ darbalapio funkcijose yra daug funkcijų, kurios naudoja masyvo argumentus, pvz., SUM, VLOOKUP, SUMIF, COUNTIF ir kt.

Žemiau yra kodas, sukuriantis funkciją, kuri nurodo visų lyginių skaičių sumą nurodytame langelių diapazone.

Funkcija „AddEven“ („CellRef“ kaip diapazonas) „Dim Cell“ kaip diapazonas kiekvienai „CellRef“ langeliui, jei ji yra skaitmeninė („Cell.Value“), tada „If Cell.Value“ Mod 2 = 0 Tada „Result = Result“ + „Cell“. Funkcija

Šią funkciją galite naudoti darbalapyje ir pateikti langelių, kurių argumentai yra skaičiai, diapazoną. Funkcija grąžins vieną reikšmę - visų lyginių skaičių sumą (kaip parodyta žemiau).

Aukščiau pateiktoje funkcijoje vietoj vienos vertės pateikėme masyvą (A1: A10). Kad tai veiktų, turite įsitikinti, kad jūsų argumento duomenų tipas gali priimti masyvą.

Pirmiau pateiktame kode nurodiau argumentą „CellRef“ kaip diapazoną (kuris gali įvesti masyvą). Čia taip pat galite naudoti duomenų tipo variantą.

Kode yra ciklas „Už kiekvieną“, kuris eina per kiekvieną langelį ir patikrina, ar tai yra ne. Jei taip nėra, nieko neįvyksta ir jis pereina į kitą langelį. Jei tai skaičius, jis patikrina, ar jis lygus, ar ne (naudojant funkciją MOD).

Galų gale visi lyginiai skaičiai pridedami ir suma priskiriama funkcijai.

Funkcijos su neapibrėžtu skaičiumi argumentų kūrimas

Kurdami kai kurias funkcijas VBA, galite nežinoti tikslaus argumentų, kuriuos vartotojas nori pateikti, skaičiaus. Taigi reikia sukurti funkciją, kuri galėtų priimti tiek daug argumentų, tiek panaudoti juos rezultatui grąžinti.

Tokios darbalapio funkcijos pavyzdys yra funkcija SUM. Galite pateikti kelis argumentus (tokius kaip šis):

= SUMA (A1, A2: A4, B1: B20)

Aukščiau pateikta funkcija pridėtų visų šių argumentų reikšmes. Taip pat atkreipkite dėmesį, kad tai gali būti viena ląstelė arba langelių masyvas.

Tokią funkciją galite sukurti VBA, pasirinkę paskutinį argumentą (arba tai gali būti vienintelis argumentas). Be to, prieš šį neprivalomą argumentą turėtų būti pateiktas raktinis žodis „ParamArray“.

„ParamArray“ yra modifikatorius, leidžiantis priimti tiek argumentų, kiek norite. Atminkite, kad naudojant žodį „ParamArray“ prieš argumentą argumentas tampa neprivalomas. Tačiau čia nereikia naudoti žodžio Neprivaloma.

Dabar sukurkime funkciją, galinčią priimti bet kokį skaičių argumentų ir pridėti visus nurodytų argumentų skaičius:

Funkcija AddArguments (ParamArray arglist () kaip variantas) Kiekvienam arg Argl sąraše AddArguments = AddArguments + arg Next arg

Aukščiau pateikta funkcija gali priimti bet kokį argumentų skaičių ir pridėti šiuos argumentus, kad gautų rezultatą.

Atminkite, kad kaip argumentą galite naudoti tik vieną reikšmę, langelio nuorodą, loginę reikšmę ar išraišką. Negalite pateikti masyvo kaip argumento. Pvz., Jei vienas iš jūsų argumentų yra D8: D10, ši formulė sukels klaidą.

Jei norite naudoti abu kelių langelių argumentus, turite naudoti žemiau esantį kodą:

Funkcija AddArguments („ParamArray arglist“ () kaip variantas) Kiekvienam arg Arglist kiekvienam langui arg AddArguments = AddArguments + Langelis Kitas langelis Kitas arg Pabaigos funkcija

Atminkite, kad ši formulė veikia su keliomis ląstelėmis ir masyvo nuorodomis, tačiau ji negali apdoroti koduotų reikšmių ar išraiškų. Galite sukurti patikimesnę funkciją tikrindami ir gydydami šias sąlygas, tačiau tai nėra tikslas.

Čia ketinama parodyti, kaip veikia „ParamArray“, kad funkcijoje galėtumėte leisti neribotą skaičių argumentų. Jei norite geresnės funkcijos nei sukurta aukščiau esančiu kodu, naudokite darbalapio funkciją SUM.

Funkcijos, kuri grąžina masyvą, sukūrimas

Iki šiol matėme funkcijas, kurios grąžina vieną reikšmę.

Naudodami VBA galite sukurti funkciją, kuri grąžina variantą, kuriame gali būti visas reikšmių masyvas.

Masyvo formules taip pat galima rasti kaip integruotas funkcijas „Excel“ darbalapiuose. Jei esate susipažinę su „Excel“ masyvo formulėmis, žinotumėte, kad jos įvedamos naudojant „Control“ + „Shift“ + „Enter“ (o ne tik „Enter“). Daugiau apie masyvo formules galite perskaityti čia. Jei nežinote apie masyvo formules, nesijaudinkite, skaitykite toliau.

Sukurkime formulę, kuri grąžina trijų skaičių masyvą (1,2,3).

Žemiau pateiktas kodas tai padarys.

Funkcija ThreeNumbers () kaip variantas Dim NumberValue (nuo 1 iki 3) NumberValue (1) = 1 NumberValue (2) = 2 NumberValue (3) = 3 ThreeNumbers = NumberValue Pabaigos funkcija

Pirmiau pateiktame kode mes kaip variantą nurodėme funkciją „ThreeNumbers“. Tai leidžia jai išlaikyti reikšmių masyvą.

Kintamasis „NumberValue“ deklaruojamas kaip masyvas su 3 elementais. Jame yra trys vertės ir priskiriama „ThreeNumbers“ funkcijai.

Šią funkciją galite naudoti darbalapyje įvesdami funkciją ir paspausdami klavišą „Control“ + „Shift“ + „Enter“ (laikykite nuspaudę „Control“ ir „Shift“ klavišus, tada paspauskite „Enter“).

Kai tai padarysite, langelyje grįš 1, bet iš tikrųjų jis turi visas tris vertes. Norėdami tai patikrinti, naudokite šią formulę:

= MAX (trys skaičiai ())

Naudokite aukščiau pateiktą funkciją su „Control“ + „Shift“ + „Enter“. Pastebėsite, kad rezultatas dabar yra 3, nes tai yra didžiausios reikšmės masyve, kurią grąžina funkcija „Max“, kuri gauna tris skaičius kaip vartotojo nustatytos funkcijos - „ThreeNumbers“ - rezultatas.

Tą pačią techniką galite naudoti norėdami sukurti funkciją, kuri grąžina mėnesio pavadinimų masyvą, kaip parodyta žemiau esančiame kode:

Funkcijos mėnesiai () kaip variantas Dim MonthName (nuo 1 iki 12) MonthName (1) = "January" MonthName (2) = "February" MonthName (3) = "March" MonthName (4) = "April" MonthName (5) = "Gegužė" MonthName (6) = "June" MonthName (7) = "July" MonthName (8) = "August" MonthName (9) = "September" MonthName (10) = "October" MonthName (11) = "November" "MonthName (12) =" December "Months = MonthName pabaigos funkcija

Dabar, kai „Excel“ darbalapyje įvesite funkciją = Mėnesiai () ir naudosite „Control“ + „Shift“ + „Enter“, jis grąžins visą mėnesių pavadinimų masyvą. Atminkite, kad ląstelėje matote tik sausį, nes tai yra pirmoji masyvo vertė. Tai nereiškia, kad masyvas grąžina tik vieną reikšmę.

Norėdami parodyti, kad jis grąžina visas reikšmes, atlikite tai - pasirinkite langelį su formule, eikite į formulės juostą, pasirinkite visą formulę ir paspauskite F9. Tai parodys visas reikšmes, kurias funkcija grąžina.

Tai galite naudoti naudodami toliau pateiktą INDEX formulę, kad vienu metu gautumėte visų mėnesių pavadinimų sąrašą.

= INDEX (mėnesiai (), ROW ())

Dabar, jei turite daug vertybių, nėra gera praktika priskirti šias vertes po vieną (kaip mes padarėme aukščiau). Vietoj to, VBA galite naudoti masyvo funkciją.

Taigi tas pats kodas, kuriame sukuriame „mėnesių“ funkciją, sutrumpėtų, kaip parodyta žemiau:

Funkcijų mėnesiai () Kaip kintamieji mėnesiai = masyvas („sausis“, „vasaris“, „kovas“, „balandis“, „gegužė“, „birželis“, _ „liepa“, „rugpjūtis“, „rugsėjis“, „spalis“ , „Lapkritis“, „gruodis“) pabaigos funkcija

Aukščiau pateikta funkcija naudoja funkciją „Masyvas“, kad reikšmės būtų tiesiogiai priskirtos funkcijai.

Atminkite, kad visos anksčiau sukurtos funkcijos grąžina horizontalų reikšmių masyvą. Tai reiškia, kad jei pasirinksite 12 horizontalių langelių (tarkime, A1: L1) ir A1 langelyje įvesite formulę = Mėnesiai (), tai suteiks jums visų mėnesių pavadinimus.

Bet ką daryti, jei norite, kad šios vertės būtų vertikaliame langelių diapazone.

Tai galite padaryti naudodami darbalapio formulę TRANSPOSE.

Tiesiog pasirinkite 12 vertikalių langelių (gretimų) ir įveskite žemiau pateiktą formulę.

„Excel“ vartotojo apibrėžtos funkcijos apimties supratimas

Funkcija gali turėti dvi apimtis - Viešas arba Privatus.

  • A Viešoji apimtis reiškia, kad funkcija pasiekiama visuose darbaknygės lapuose, taip pat visos procedūros (papildomos ir funkcijos) visuose darbo knygos moduliuose. Tai naudinga, kai norite iškviesti funkciją iš paprogramės (kaip tai daroma, pamatysime kitame skyriuje).
  • A Privati ​​taikymo sritis reiškia, kad funkcija galima tik tame modulyje, kuriame ji egzistuoja. Jūs negalite jo naudoti kituose moduliuose. To taip pat nematysite darbalapio funkcijų sąraše. Pvz., Jei jūsų funkcijos pavadinimas yra „Mėnesiai ()“ ir „Excel“ įvedate funkciją (po = ženklo), funkcijos pavadinimas nebus rodomas. Tačiau vis tiek galite jį naudoti, jei įvesite formulės pavadinimą.

Jei nieko nenurodysite, funkcija pagal numatytuosius nustatymus yra vieša funkcija.

Žemiau yra privati ​​funkcija:

Privati ​​funkcija WorkbookName () As String WorkbookName = ThisWorkbook.Name Pabaigos funkcija

Šią funkciją galite naudoti tų pačių modulių paprogramėse ir procedūrose, bet negalite jos naudoti kituose moduliuose. Ši funkcija taip pat nebūtų rodoma darbalapyje.

Žemiau pateiktas kodas šią funkciją paviešintų. Tai taip pat bus rodoma darbalapyje.

Funkcija WorkbookName () kaip eilutė WorkbookName = ThisWorkbook.Name Pabaigos funkcija

Skirtingi vartotojo nustatytos funkcijos naudojimo „Excel“ būdai

Sukūrę vartotojo apibrėžtą funkciją VBA, galite ją naudoti įvairiais būdais.

Pirmiausia aptarkime, kaip naudoti darbalapio funkcijas.

UDF naudojimas darbalapiuose

Jau matėme darbalapyje VBA sukurtos funkcijos naudojimo pavyzdžių.

Viskas, ką jums reikia padaryti, tai įvesti funkcijų pavadinimą ir jis rodomas intellisense.

Atminkite, kad norint, kad funkcija būtų rodoma darbalapyje, ji turi būti vieša funkcija (kaip paaiškinta aukščiau esančiame skyriuje).

Taip pat galite naudoti dialogo langą Įterpti funkciją, kad įterptumėte vartotojo apibrėžtą funkciją (atlikdami toliau nurodytus veiksmus). Tai veiktų tik viešoms funkcijoms.

  • Eikite į skirtuką Duomenys.
  • Spustelėkite parinktį „Įterpti funkciją“.
  • Dialogo lange Įterpti funkciją pasirinkite kategoriją Vartotojo apibrėžta. Ši parinktis rodoma tik tada, kai turite funkciją VB redaktoriuje (o funkcija yra vieša).
  • Pasirinkite funkciją iš visų viešai apibrėžtų funkcijų sąrašo.
  • Spustelėkite mygtuką Gerai.

Pirmiau minėti veiksmai įterptų funkciją į darbalapį. Jame taip pat rodomas dialogo langas Funkcijos argumentai, kuriame bus pateikta išsami informacija apie argumentus ir rezultatas.

Vartotojo apibrėžtą funkciją galite naudoti kaip ir bet kurią kitą „Excel“ funkciją. Tai taip pat reiškia, kad galite jį naudoti su kitomis integruotomis „Excel“ funkcijomis. Pavyzdžiui. žemiau pateikta formulė nurodytų darbaknygės pavadinimą didžiosiomis raidėmis:

= Viršutinis (darbaknygės pavadinimas ())

Naudotojo nustatytų funkcijų naudojimas VBA procedūrose ir funkcijose

Sukūrę funkciją, galite ją naudoti ir kitose papildomose procedūrose.

Jei funkcija yra vieša, ją galima naudoti bet kurioje to paties ar kito modulio procedūroje. Jei jis yra privatus, jį galima naudoti tik tame pačiame modulyje.

Žemiau yra funkcija, kuri grąžina darbaknygės pavadinimą.

Funkcija WorkbookName () kaip eilutė WorkbookName = ThisWorkbook.Name Pabaigos funkcija

Toliau nurodyta procedūra iškviečia funkciją ir tada pranešimų laukelyje parodo pavadinimą.

Sub ShowWorkbookName () „MsgBox WorkbookName“ pabaiga

Taip pat galite iškviesti funkciją iš kitos funkcijos.

Toliau pateiktuose koduose pirmasis kodas grąžina darbaknygės pavadinimą, o antrasis - pavadinimą didžiosiomis raidėmis, iškviesdamas pirmąją funkciją.

Funkcija WorkbookName () kaip eilutė WorkbookName = ThisWorkbook.Name Pabaigos funkcija
Funkcija WorkbookNameinUpper () WorkbookNameinUpper = UCase (WorkbookName) Pabaigos funkcija

Naudotojo nustatytos funkcijos iškvietimas iš kitų darbaknygių

Jei darbaknygėje turite funkciją, galite ją pavadinti ir kitose darbaknygėse.

Yra keli būdai tai padaryti:

  1. Priedo kūrimas
  2. Išsaugojimo funkcija asmeninėje makrokomandos darbaknygėje
  3. Funkcijos nuoroda iš kitos darbaknygės.

Priedo kūrimas

Kurdami ir įdiegdami priedą, turėsite pasirinktinę funkciją, kurią rasite visose darbaknygėse.

Tarkime, kad sukūrėte pasirinktinę funkciją - „GetNumeric“ ir norite, kad ji būtų visose darbaknygėse. Norėdami tai padaryti, sukurkite naują darbaknygę ir funkcijos kodą įtraukite į šios naujos darbaknygės modulį.

Dabar atlikite toliau nurodytus veiksmus, kad išsaugotumėte jį kaip priedą ir įdiegtumėte „Excel“.

  • Eikite į skirtuką Failas ir spustelėkite Įrašyti kaip.
  • Dialogo lange Išsaugoti kaip pakeiskite „Išsaugoti kaip“ tipą į .xlam. Failui priskirtas vardas būtų jūsų priedo pavadinimas. Šiame pavyzdyje failas išsaugomas pavadinimu „GetNumeric“.
    • Pastebėsite, kad failo kelias, kuriame jis išsaugomas, automatiškai keičiasi. Jei norite, galite naudoti numatytąjį arba jį pakeisti.
  • Atidarykite naują „Excel“ darbaknygę ir eikite į skirtuką Kūrėjas.
  • Spustelėkite „Excel“ priedų parinktį.
  • Dialogo lange Priedai naršykite ir suraskite išsaugotą failą ir spustelėkite Gerai.

Dabar priedas suaktyvintas.

Dabar galite naudoti pasirinktinę funkciją visose darbaknygėse.

Funkcijos išsaugojimas asmeninėje makrokomandos darbaknygėje

Asmeninė makrokomandos darbaknygė yra jūsų sistemoje paslėpta darbaknygė, kuri atidaroma kiekvieną kartą atidarius „Excel“ programą.

Tai vieta, kurioje galite saugoti makrokomandas ir tada pasiekti šias makrokomandas iš bet kurios darbaknygės. Tai puiki vieta saugoti tas makrokomandas, kurias norite dažnai naudoti.

Pagal numatytuosius nustatymus „Excel“ nėra asmeninės makrokomandos darbaknygės. Ją turite sukurti įrašydami makrokomandą ir išsaugodami ją asmeninėje makrokomandos darbaknygėje.

Išsamius veiksmus, kaip sukurti ir išsaugoti makrokomandas, rasite asmeninėje makrokomandos darbaknygėje.

Funkcijos nuoroda iš kitos darbaknygės

Nors pirmieji du metodai (priedo kūrimas ir asmeninės makrokomandos darbaknygės naudojimas) veiktų visomis situacijomis, jei norite nurodyti funkciją iš kitos darbaknygės, ta darbaknygė turi būti atidaryta.

Tarkime, kad turite darbaknygę pavadinimu „Darbo knyga su formule “ir turi funkciją su pavadinimu „„GetNumeric“.

Norėdami naudoti šią funkciją kitoje darbaknygėje (tuo tarpu Darbo knyga su formule yra atidaryta), galite naudoti šią formulę:

= „Darbaknygė su formule“! GetNumeric (A1)

Aukščiau pateikta formulė naudos vartotojo apibrėžtą funkciją Darbo knyga su formule failą ir parodykite rezultatą.

Atminkite, kad, kadangi darbaknygės pavadinime yra tarpų, turite jį įtraukti į kabutes.

Naudojant išėjimo funkcijų pareiškimą VBA

Jei norite išeiti iš funkcijos, kol kodas veikia, tai galite padaryti naudodami teiginį „Išeiti iš funkcijos“.

Žemiau pateiktas kodas iš raidžių ir skaitmenų teksto eilutės išgautų pirmuosius tris skaitmeninius simbolius. Kai tik gauna tris simbolius, funkcija baigiasi ir grąžina rezultatą.

Funkcija „GetNumericFirstThree“ („CellRef“ kaip diapazonas) „Long Dim String“ Ilgis kaip sveikasis skaičius „StringLength = Len“ („CellRef“) Jei „i = 1“ į „StringLength“, jei J = 3, tada išeikite iš funkcijos, jei ji yra skaitmeninė („Mid“ („CellRef“, „i“, „1“)), tada J = J + 1 Rezultatas = rezultatas ir vidurys (CellRef, i, 1) GetNumericFirstThree = Rezultato pabaiga, jei kita i pabaigos funkcija

Aukščiau pateikta funkcija tikrina, ar nėra skaičių skaitmenų, ir kai ji gauna 3 skaitmeninius simbolius, ji išeina iš funkcijos kitoje cikle.

Naudotojo nustatytos funkcijos derinimas

Yra keletas būdų, kuriuos galite naudoti derindami vartotojo apibrėžtą funkciją VBA:

Tinkintos funkcijos derinimas naudojant pranešimų laukelį

Naudokite funkciją „MsgBox“, kad parodytumėte pranešimų laukelį su konkrečia reikšme.

Rodoma vertė gali būti pagrįsta tuo, ką norite išbandyti. Pvz., Jei norite patikrinti, ar kodas vykdomas, ar ne, bet koks pranešimas veiktų, o jei norite patikrinti, ar kilpos veikia, ar ne, galite rodyti konkrečią vertę arba ciklo skaitiklį.

Tinkintos funkcijos derinimas nustatant lūžio tašką

Nustatykite lūžio tašką, kad galėtumėte pereiti kiekvieną eilutę po vieną. Norėdami nustatyti lūžio tašką, pasirinkite norimą eilutę ir paspauskite F9 arba spustelėkite pilką vertikalią sritį, kuri yra palikta kodo eilutėms. Bet kuris iš šių metodų įterptų lūžio tašką (pilkoje srityje matysite raudoną tašką).

Nustačius lūžio tašką ir vykdant funkciją, jis eina iki lūžio taško linijos ir tada sustoja. Dabar galite pereiti per kodą naudodami klavišą F8. Vieną kartą paspaudus F8 pereinama prie kitos kodo eilutės.

Tinkintos funkcijos derinimas naudojant derinimą. Spausdinkite kode

Galite naudoti Debug.Print teiginį savo kode, kad gautumėte nurodytų kintamųjų/argumentų reikšmes tiesioginiame lange.

Pavyzdžiui, žemiau esančiame kode naudojau „Debug.Print“, kad gautumėte dviejų kintamųjų - „j“ ir „Rezultatas“ vertę

Funkcija „GetNumericFirstThree“ („CellRef“ kaip diapazonas) „Long Dim String“ Ilgis kaip sveikasis skaičius StringLength = Len (CellRef) Jei „i = 1“ iki „StringLength“, jei J = 3, tada išeikite iš funkcijos, jei ji yra skaitinė (vidurys („CellRef“, i, 1)) Tada „J = J + 1“ Rezultatas = Rezultatas ir vidurys (CellRef, i, 1) Derinimas. Spausdinti J, Rezultatas GetNumericFirstThree = Rezultato pabaiga, jei kita i pabaigos funkcija

Vykdant šį kodą, tiesioginiame lange rodoma ši informacija.

Integruotos „Excel“ funkcijos vs. VBA vartotojo apibrėžta funkcija

Naudojant integruotas „Excel“ funkcijas, palyginti su pasirinktinėmis funkcijomis, sukurtomis naudojant VBA, yra keletas stiprių pranašumų.

  • Integruotos funkcijos yra daug greitesnės nei VBA funkcijos.
  • Kai kuriate ataskaitą/prietaisų skydelį naudodami VBA funkcijas ir siunčiate jį klientui/kolegai, jiems nereikės jaudintis, ar makrokomandos įjungtos, ar ne. Kai kuriais atvejais klientai/klientai išsigąsta pamatę įspėjimą geltonoje juostoje (kuri paprasčiausiai prašo įjungti makrokomandas).
  • Naudodami integruotas „Excel“ funkcijas, jums nereikia jaudintis dėl failų plėtinių. Jei darbaknygėje yra makrokomandų ar vartotojo apibrėžtų funkcijų, turite ją išsaugoti .xlsm.

Nors yra daug rimtų priežasčių naudoti „Excel“ integruotas funkcijas, kai kuriais atvejais geriau naudoti vartotojo apibrėžtą funkciją.

  • Geriau naudoti vartotojo apibrėžtą funkciją, jei jūsų integruota formulė yra didžiulė ir sudėtinga. Tai tampa dar aktualesnė, kai jums reikia, kad kažkas atnaujintų formules. Pavyzdžiui, jei turite didžiulę formulę, sudarytą iš daugybės skirtingų funkcijų, net nuorodos keitimas į langelį gali būti varginantis ir klaidingas. Vietoj to, galite sukurti pasirinktinę funkciją, kuri apimtų tik vieną ar du argumentus ir visą sunkumą pakeltų.
  • Kai turite atlikti kažką, ko negalima padaryti naudojant „Excel“ integruotas funkcijas. To pavyzdys gali būti tada, kai norite iš eilutės išgauti visus skaitinius simbolius. Tokiais atvejais naudingumas naudojant vartotojo apibrėžtą funkciją gar nusveria jo neigiamus aspektus.

Kur įdėti vartotojo apibrėžtos funkcijos VBA kodą

Kurdami pasirinktinę funkciją, turite įdėti kodą į darbaknygės, kurioje norite naudoti šią funkciją, kodo langą.

Žemiau pateikiami veiksmai, kaip įdėti „GetNumeric“ funkcijos kodą į darbaknygę.

  1. Eikite į skirtuką Kūrėjas.
  2. Spustelėkite „Visual Basic“ parinktį. Tai atidarys VB redaktorių užpakalinėje sistemoje.
  3. VB redaktoriaus „Project Explorer“ srityje dešiniuoju pelės mygtuku spustelėkite bet kurį darbaknygės objektą, į kurį norite įterpti kodą. Jei nematote „Project Explorer“, eikite į skirtuką „View“ ir spustelėkite „Project Explorer“.
  4. Eikite į „Įterpti“ ir spustelėkite „Modulis“. Tai įterps jūsų darbo knygos modulio objektą.
  5. Nukopijuokite ir įklijuokite kodą modulio lange.

Jums taip pat gali patikti šios „Excel VBA“ pamokos:

  • Darbas su ląstelėmis ir diapazonais „Excel VBA“.
  • Darbas su darbalapiais „Excel VBA“.
  • Darbas su darbaknygėmis naudojant VBA.
  • Kaip naudoti kilpas „Excel VBA“.
  • „Excel VBA Events“ - lengvas (ir išsamus) vadovas
  • Naudojant IF tada kitus teiginius VBA.
  • Kaip įrašyti makrokomandą „Excel“.
  • Kaip paleisti makrokomandą „Excel“.
  • Kaip rūšiuoti duomenis „Excel“ naudojant VBA (žingsnis po žingsnio vadovas).
  • „Excel VBA InStr“ funkcija - paaiškinta pavyzdžiais.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave