"Fungsi" jeung "Sub" Prosedur di VBA

Diwangun-di Fungsi VBA

Samemeh Anjeun mimiti nyieun fungsi VBA sorangan, éta alus uninga yen Excel VBA boga koleksi euyeub fungsi diwangun-di prebuilt nu bisa Anjeun pake bari nulis kode Anjeun.

Daptar fungsi ieu tiasa ditingali dina editor VBA:

  • Buka buku kerja Excel sareng jalankeun éditor VBA (klik pikeun ngalakukeun ieu Alt + F11), teras pencét F2.
  • Pilih perpustakaan tina daptar dropdown di kénca luhur layar VBA.
  • Daptar kelas sareng fungsi VBA anu diwangun bakal muncul. Pencét nami fungsi pikeun ningalikeun pedaran ringkesna di handapeun jandela. mencétan F1 bakal muka halaman pitulung online pikeun fitur éta.

Salaku tambahan, daptar lengkep fungsi VBA anu diwangun sareng conto tiasa dipendakan di Pusat Pangembang Visual Basic.

Prosedur custom "Fungsi" jeung "Sub" dina VBA

Dina Excel Visual Basic, sakumpulan paréntah anu ngalaksanakeun tugas khusus disimpen dina prosedur. fungsi (Fungsi) atawa sub (Subrutin). Beda utama antara prosedur fungsi и sub nya éta prosedur fungsi mulih hasil, prosedur sub – henteu.

Ku alatan éta, lamun perlu ngalakukeun lampah tur meunangkeun sababaraha hasil (contona, jumlah sababaraha angka), prosedur ieu biasana dipaké fungsi, sareng pikeun ngan saukur ngalakukeun sababaraha tindakan (contona, ngarobih pormat sakelompok sél), anjeun kedah milih prosedur. sub.

alesan

Rupa-rupa data bisa dikirimkeun ka prosedur VBA ngagunakeun argumen. Daptar argumen dieusian nalika nyatakeun prosedur. Contona, prosedur sub dina VBA nambahkeun integer dibikeun (Integer) ka unggal sél dina rentang dipilih. Anjeun tiasa ngalebetkeun nomer ieu kana prosedur nganggo argumen, sapertos kieu:

Sub AddToCells(i Salaku Integer) ... Tungtung Sub

Émut yén gaduh alesan pikeun prosedur fungsi и sub dina VBA nyaeta pilihan. Sababaraha prosedur teu merlukeun argumen.

Argumen Pilihan

Prosedur VBA tiasa gaduh argumen pilihan. Ieu mangrupikeun argumen anu tiasa ditetepkeun ku pangguna upami aranjeunna hoyong, sareng upami disingkahkeun, prosedurna nganggo nilai standar pikeun aranjeunna.

Balik deui ka conto samemehna, sangkan argumen integer kana fungsi pilihan, éta bakal dinyatakeun kawas kieu:

Sub AddToCells(Opsional i As Integer = 0)

Dina hal ieu, argumen integer i standarna bakal 0.

Aya sababaraha argumen pilihan dina prosedur, sadayana didaptarkeun di tungtung daptar argumen.

Ngalirkeun argumen ku nilai sareng rujukan

Argumen dina VBA bisa dibikeun ka prosedur ku dua cara:

  • ByVal – ngalirkeun argumen ku nilai. Ieu ngandung harti yén ngan nilai (nyaéta, salinan argumen) disalurkeun kana prosedur, sarta ku kituna sagala parobahan dijieun kana argumen di jero prosedur bakal leungit nalika prosedur kaluar.
  • KuRef - ngalirkeun argumen ku rujukan. Hartina, alamat sabenerna lokasi argumen dina mémori disalurkeun kana prosedur. Sakur parobahan anu dilakukeun kana argumen di jero prosedur bakal disimpen nalika prosedur kaluar.

Ngagunakeun kecap konci ByVal or KuRef dina deklarasi prosedur, Anjeun bisa nangtukeun kumaha argumen disalurkeun kana prosedur. Ieu ditémbongkeun dina conto di handap:

Sub AddToCells(ByVal i As Integer) ... End Sub
Dina hal ieu, argumen integer i diliwatan ku nilai. Sanggeus ninggalkeun prosedur sub kabéh dijieun kalawan i parobahan bakal leungit.
Sub AddToCells(ByRef i As Integer) ... End Sub
Dina hal ieu, argumen integer i diliwatan ku rujukan. Sanggeus ninggalkeun prosedur sub kabéh dijieun kalawan i parobahanana bakal disimpen dina variabel anu disalurkeun kana prosedur sub.

Inget yen argumen di VBA diliwatan ku rujukan sacara standar. Dina basa sejen, lamun kecap konci teu dipaké ByVal or KuRef, lajeng argumen bakal diliwatan ku rujukan.

Sateuacan neraskeun prosedur fungsi и sub dina leuwih jéntré, eta bakal mangpaat pikeun katingal sejen dina fitur sarta béda antara dua jenis ieu prosedur. Di handap ieu diskusi ringkes ngeunaan prosedur VBA fungsi и sub jeung conto basajan ditémbongkeun.

Prosedur VBA "Fungsi"

Editor VBA ngakuan prosedur fungsinalika éta mendakan sakelompok paréntah anu ditutupan antara pernyataan bubuka sareng nutup ieu:

Fungsi ... Fungsi tungtung

Salaku disebutkeun tadi, prosedur fungsi dina VBA (sabalikna sub) ngabalikeun nilai. Aturan di handap ieu dilarapkeun pikeun ngabalikeun nilai:

  • Jinis data tina nilai balik kudu dinyatakeun dina lulugu prosedur fungsi.
  • Variabel nu ngandung nilai balik kudu ngaranna sarua jeung prosedur fungsi. Variabel ieu henteu kedah dinyatakeun nyalira, sabab salawasna aya salaku bagian integral tina prosedur. fungsi.

Ieu ogé digambarkeun dina conto di handap ieu.

Conto Fungsi VBA: Ngalaksanakeun Operasi Matematika dina 3 Angka

Di handap ieu conto kodeu prosedur VBA fungsi, nu nyokot tilu argumen tipe ganda (dobel-precision floating-titik angka). Hasilna, prosedur ngabalikeun sajumlah jinis anu sanés gandasarua jeung jumlah dua argumen kahiji dikurangan argumen katilu:

Fungsi SumMinus(dNum1 Salaku Ganda, dNum2 Salaku Ganda, dNum3 Salaku Ganda) Salaku Ganda SumMinus = dNum1 + dNum2 - dNum3 Fungsi Tungtung

Prosedur VBA basajan pisan ieu fungsi illustrates kumaha data dikirimkeun ka prosedur ngaliwatan argumen. Anjeun tiasa ningali yén tipe data balik ku prosedur diartikeun salaku ganda (kecap nyebutkeun Salaku Ganda sanggeus daptar argumen). Conto ieu ogé nunjukkeun kumaha hasil tina prosedur fungsi disimpen dina variabel nu ngaranna sarua jeung ngaran prosedur.

Nyauran prosedur VBA "Fungsi"

Lamun prosedur basajan di luhur fungsi diselapkeun kana modul dina pangropéa Visual Basic, éta bisa disebut tina prosedur VBA séjén atawa dipaké dina LKS dina workbook Excel.

Nelepon prosedur VBA "Fungsi" tina prosedur anu sanés

prosedur fungsi bisa disebut tina prosedur VBA sejen ku saukur assigning prosedur nu ka variabel. Conto di handap ieu nunjukkeun telepon kana prosedur Summinus, anu didefinisikeun di luhur.

Sub utama () Taram total salaku Double total = SumMinus (5, 4, 3) Tungtung Sub

Nelepon prosedur VBA "Fungsi" tina lembar kerja

Prosedur VBA fungsi tiasa disebut tina lembar kerja Excel dina cara anu sami sareng fungsi Excel anu sanésna. Ku alatan éta, prosedur dijieun dina conto saméméhna fungsi - Summinus bisa disebut ku cara nuliskeun éksprési handap kana sél LKS:

=SumMinus(10, 5, 2)

Prosedur VBA "Sub"

Éditor VBA ngartos yén aya prosedur di payuneunana subnalika éta mendakan sakelompok paréntah anu ditutupan antara pernyataan bubuka sareng nutup ieu:

Sub ... Tungtung Sub

Prosedur VBA "Sub": Conto 1. alignment Center sarta ukuran font robah dina rentang dipilih sél

Mertimbangkeun conto prosedur VBA basajan sub, anu tugasna nyaéta ngarobih pormat rentang sél anu dipilih. Sél dipuseurkeun (boh vertikal sareng horisontal) sareng ukuran font dirobih kana anu dispésikeun ku pangguna:

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

Prosedur ieu sub ngalakukeun tindakan tapi henteu ngahasilkeun hasil.

Conto ieu ogé ngagunakeun argumen Pilihan Ukuran Font. Lamun argumen Ukuran Font teu lulus kana prosedur sub, lajeng nilai standar nyaeta 10. Sanajan kitu, lamun argumen Ukuran Font lulus kana prosedur sub, mangka rentang sél nu dipilih bakal disetel ka ukuran font dieusian ku pamaké.

VBA Sub Prosedur: Conto 2: Center Align jeung Bold Font dina rentang sél dipilih

Prosedur di handap ieu sami sareng anu nembé dibahas, tapi waktos ieu, sanés pangropéa ukuran, éta nerapkeun gaya font anu wani kana rentang sél anu dipilih. Ieu conto prosedur sub, nu teu butuh argumen:

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

Nelepon Prosedur "Sub" dina Excel VBA

Nelepon prosedur VBA "Sub" tina prosedur anu sanés

Pikeun nelepon prosedur VBA sub ti prosedur VBA sejen, Anjeun kudu nulis keyword nelpon, ngaran prosedur sub sarta salajengna dina kurung aya argumen prosedur. Ieu ditémbongkeun dina conto di handap:

Sub utama() Telepon Format_Centered_And_Sized(20) End Sub

Lamun prosedur Format_Centered_And_Sized boga leuwih ti hiji argumen, maranéhanana kudu dipisahkeun ku koma. Resep ieu:

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

Nelepon prosedur VBA "Sub" tina lembar kerja

prosedur sub teu bisa diasupkeun langsung kana sél lambar Excel, sakumaha bisa dipigawé ku prosedur fungsisabab prosedur sub teu balik nilai a. Sanajan kitu, prosedur sub, nu teu boga argumen jeung dinyatakeun salaku masarakat (sakumaha ditémbongkeun di handap) bakal sadia pikeun pamaké lembar kerja. Ku kituna, lamun prosedur basajan dibahas di luhur sub diselapkeun kana modul dina Visual Basic Editor, prosedur Format_Centered_And_Bold bakal sadia pikeun dianggo dina lembar kerja Excel, sareng prosedurna Format_Centered_And_Sized - moal sadia sabab boga argumen.

Ieu mangrupikeun cara anu gampang pikeun ngajalankeun (atanapi ngaéksekusi) prosedur sub, tiasa diaksés tina lembar kerja:

  • pers Alt + F8 (pencét kenop Alt jeung bari nahan eta, pencét kenop F8).
  • Dina daptar makro nu nembongan, pilih salah sahiji nu Anjeun hoyong ngajalankeun.
  • pers lalumpatan (lumpat)

Pikeun ngalakukeun prosedur sub gancang sarta gampang, anjeun tiasa napelkeun potong kompas keyboard ka dinya. Kanggo ieu:

  • pers Alt + F8.
  • Dina daptar makro anu némbongan, pilih anu anjeun hoyong pasihan potong kompas keyboard.
  • pers parameter (Pilihan) sareng dina kotak dialog anu nembongan, lebetkeun potong kompas keyboard.
  • pers OK jeung nutup dialog macro (Makro).

Perhatosan: Nalika netepkeun potong kompas keyboard ka makro, pastikeun yén éta henteu dianggo salaku standar dina Excel (contona, Ctrl + C). Upami anjeun milih potong kompas keyboard anu tos aya, éta bakal ditugaskeun deui ka makro, sareng akibatna, pangguna tiasa ngamimitian makro ku teu kahaja.

Lingkup Prosedur VBA

Bagian 2 tina tutorial ieu ngabahas ruang lingkup variabel sareng konstanta sareng peran kecap konci. masarakat и wasta. Kecap konci ieu ogé tiasa dianggo sareng prosedur VBA:

Public Sub AddToCells(i Salaku Integer) ... End Sub
Lamun deklarasi prosedur dimimitian ku kecap konci masarakat, teras prosedurna bakal sayogi pikeun sadaya modul dina proyék VBA éta.
Wasta Sub AddToCells(i Salaku Integer) ... Tungtung Sub
Lamun deklarasi prosedur dimimitian ku kecap konci wasta, mangka prosedur ieu bakal sadia ngan pikeun modul ayeuna. Éta henteu tiasa disebat nalika aya dina modul anu sanés atanapi tina buku kerja Excel.

Inget yen lamun saméméh nyatakeun prosedur VBA fungsi or sub keyword teu diselapkeun, sipat standar diatur pikeun prosedur masarakat (nyaéta, éta bakal sayogi di mana waé dina proyék VBA ieu). Ieu kontras sareng deklarasi variabel, anu sacara standar nyaéta wasta.

Kaluar awal tina prosedur VBA "Fungsi" sareng "Sub"

Upami anjeun kedah ngeureunkeun palaksanaan prosedur VBA fungsi or sub, tanpa ngantosan tungtung alam na, lajeng pikeun ieu aya operator Fungsi Kaluar и Kaluar Sub. Pamakéan operator ieu ditémbongkeun di handap ngagunakeun prosedur basajan sabagé conto. fungsiA nu nyangka nampi argumen positif pikeun ngalakukeun operasi salajengna. Upami nilai non-positip disalurkeun kana prosedur, maka teu aya operasi salajengna anu tiasa dilakukeun, janten pangguna kedah ditingalikeun pesen kasalahan sareng prosedurna kedah langsung kaluar:

Fungsi VAT_Amount(sVAT_Rate Salaku Tunggal) Salaku Single VAT_Amount = 0 Lamun sVAT_Rate <= 0 Lajeng MsgBox "Diharepkeun nilai Positip sVAT_Rate tapi Ditampi" & sVAT_Rate Kaluar Fungsi Tungtung Lamun ... Fungsi Tungtung

Punten dicatet yén sateuacan ngalengkepan prosedur fungsi - PPN_Jumlah, fungsi VBA diwangun-di diselapkeun kana kode MsgBox, nu mintonkeun popup warning ka pamaké.

Leave a Reply