Saturs
- Iebūvētas VBA funkcijas
- Pielāgotas procedūras “Funkcija” un “Apakšpunkts” VBA
- Argumenti
- VBA procedūra "Funkcija"
- VBA procedūra "Sub"
- VBA procedūras joma
- Agrīna iziešana no VBA procedūrām “Funkcija” un “Sub”
Iebūvētas VBA funkcijas
Pirms sākat izveidot savas VBA funkcijas, ir labi zināt, ka programmā Excel VBA ir bagātīga iepriekš iebūvētu funkciju kolekcija, ko varat izmantot, rakstot kodu.
Šo funkciju sarakstu var skatīt VBA redaktorā:
- Atveriet Excel darbgrāmatu un palaidiet VBA redaktoru (noklikšķiniet, lai to izdarītu Alt+F11) un pēc tam nospiediet F2.
- Ekrāna augšējā kreisajā stūrī esošajā nolaižamajā sarakstā atlasiet bibliotēku VBA.
- Tiks parādīts iebūvēto VBA klašu un funkciju saraksts. Noklikšķiniet uz funkcijas nosaukuma, lai loga apakšā parādītu tās īsu aprakstu. spiešana F1 tiks atvērta šīs funkcijas tiešsaistes palīdzības lapa.
Turklāt pilnu iebūvēto VBA funkciju sarakstu ar piemēriem var atrast Visual Basic izstrādātāju centrā.
Pielāgotas procedūras “Funkcija” un “Apakšpunkts” VBA
Programmā Excel Visual Basic procedūrā tiek ievietota komandu kopa, kas veic noteiktu uzdevumu. funkcija (Funkcija) vai Saskaņā ar (Apakšprogramma). Galvenā atšķirība starp procedūrām funkcija и Saskaņā ar vai tā ir procedūra funkcija atgriež rezultātu, procedūru Saskaņā ar – nē.
Tāpēc, ja nepieciešams veikt darbības un iegūt kādu rezultātu (piemēram, summēt vairākus skaitļus), tad parasti tiek izmantota procedūra funkcija, un lai vienkārši veiktu dažas darbības (piemēram, mainītu šūnu grupas formatējumu), jums ir jāizvēlas procedūra Saskaņā ar.
Argumenti
Izmantojot argumentus, VBA procedūrām var nodot dažādus datus. Argumentu saraksts tiek norādīts, deklarējot procedūru. Piemēram, procedūra Saskaņā ar VBA pievieno doto veselo skaitli (Integer) katrai šūnai atlasītajā diapazonā. Šo numuru var nodot procedūrai, izmantojot šādu argumentu:
Sub AddToCells(i As Integer) ... Beigas Sub
Paturiet prātā, ka jums ir argumenti par procedūrām funkcija и Saskaņā ar VBA ir neobligāts. Dažām procedūrām nav nepieciešami argumenti.
Izvēles argumenti
VBA procedūrām var būt neobligāti argumenti. Šie ir argumenti, kurus lietotājs var norādīt, ja vēlas, un, ja tie tiek izlaisti, procedūra tiem izmanto noklusējuma vērtības.
Atgriežoties pie iepriekšējā piemēra, lai vesela skaitļa arguments funkcijai būtu neobligāts, tas tiktu deklarēts šādi:
Sub AddToCells (neobligāti i kā vesels skaitlis = 0)
Šajā gadījumā vesela skaitļa arguments i noklusējuma vērtība būs 0.
Procedūrā var būt vairāki neobligāti argumenti, un tie visi ir norādīti argumentu saraksta beigās.
Argumentu nodošana pēc vērtības un atsauces
Argumentus VBA var nodot procedūrai divos veidos:
- Autors Val – argumenta nodošana pēc vērtības. Tas nozīmē, ka procedūrai tiek nodota tikai vērtība (tas ir, argumenta kopija), un tāpēc visas procedūrā veiktās argumentā veiktās izmaiņas tiks zaudētas, kad procedūra tiks izbeigta.
- ByRef – argumenta nodošana ar atsauci. Tas nozīmē, ka faktiskā argumenta atrašanās vietas adrese atmiņā tiek nodota procedūrai. Visas izmaiņas, kas procedūrā veiktas argumentā, tiks saglabātas, kad procedūra tiks izbeigta.
Atslēgvārdu izmantošana Autors Val or ByRef procedūras deklarācijā varat norādīt, kā arguments tiek nodots procedūrai. Tas ir parādīts piemēros zemāk:
Sub AddToCells(ByVal i As Integer) ... Beigas Sub | Šajā gadījumā vesela skaitļa arguments i pagājis pēc vērtības. Pēc procedūras atstāšanas Saskaņā ar viss izgatavots ar i izmaiņas tiks zaudētas. |
Sub AddToCells(ByRef i As Integer) ... Beigas Sub | Šajā gadījumā vesela skaitļa arguments i nodots ar atsauci. Pēc procedūras atstāšanas Saskaņā ar viss izgatavots ar i izmaiņas tiks saglabātas mainīgajā, kas tika nodots procedūrai Saskaņā ar. |
Atcerieties, ka VBA argumenti pēc noklusējuma tiek nodoti pēc atsauces. Citiem vārdiem sakot, ja netiek izmantoti atslēgvārdi Autors Val or ByRef, tad arguments tiks nodots ar atsauci.
Pirms procedūru turpināšanas funkcija и Saskaņā ar sīkāk, būs lietderīgi vēlreiz apskatīt šo divu veidu procedūru iezīmes un atšķirības. Tālāk ir sniegtas īsas diskusijas par VBA procedūrām funkcija и Saskaņā ar un tiek parādīti vienkārši piemēri.
VBA procedūra "Funkcija"
VBA redaktors atpazīst procedūru funkcijakad tas saskaras ar komandu grupu, kas atrodas starp šādiem sākuma un beigu paziņojumiem:
Funkcija ... Beigu funkcija
Kā minēts iepriekš, procedūra funkcija VBA (pretēji Saskaņā ar) atgriež vērtību. Uz atgriežamajām vērtībām attiecas šādi noteikumi:
- Procedūras galvenē ir jānorāda atgriešanas vērtības datu tips funkcija.
- Mainīgajam, kas satur atgriešanas vērtību, ir jābūt tādam pašam nosaukumam kā procedūrai funkcija. Šis mainīgais nav atsevišķi jādeklarē, jo tas vienmēr pastāv kā procedūras neatņemama sastāvdaļa. funkcija.
Tas ir labi ilustrēts nākamajā piemērā.
VBA funkcijas piemērs: matemātiskas darbības veikšana ar 3 skaitļiem
Tālāk ir sniegts VBA procedūras koda piemērs funkcija, kurā ir trīs veida argumenti Dubultosies (dubultās precizitātes peldošā komata skaitļi). Rezultātā procedūra atgriež citu veida numuru Dubultosiesvienāds ar pirmo divu argumentu summu mīnus trešais arguments:
Funkcija SumMinus(dNum1 kā dubultā, dNum2 kā dubultā, dNum3 kā dubultā) kā dubultā summaMinus = dNum1 + dNum2 - dNum3 beigu funkcija
Šī ļoti vienkāršā VBA procedūra funkcija ilustrē, kā dati tiek nodoti procedūrai, izmantojot argumentus. Var redzēt, ka procedūras atgrieztais datu tips ir definēts kā Dubultosies (vārdi saka Kā Double aiz argumentu saraksta). Šis piemērs parāda arī procedūras rezultātu funkcija tiek saglabāts mainīgajā ar tādu pašu nosaukumu kā procedūras nosaukumam.
VBA procedūras izsaukšana “Funkcija”
Ja iepriekš minētā vienkāršā procedūra funkcija ievietots Visual Basic redaktora modulī, to var izsaukt no citām VBA procedūrām vai izmantot darblapā Excel darbgrāmatā.
Izsauciet VBA procedūru “Funkcija” no citas procedūras
Procedūra funkcija var izsaukt no citas VBA procedūras, vienkārši piešķirot šo procedūru mainīgajam. Nākamajā piemērā parādīts procedūras izsaukums Summinus, kas tika definēts iepriekš.
Apakšgalvenais() Dim kopā kā Dubultā summa = SumMinus(5, 4, 3) End Sub
Izsauciet VBA procedūru “Funkcija” no darblapas
VBA procedūra funkcija var izsaukt no Excel darblapas tāpat kā jebkuru citu iebūvēto Excel funkciju. Tāpēc iepriekšējā piemērā izveidotā procedūra funkcija - Summinus var izsaukt, darblapas šūnā ievadot šādu izteiksmi:
=SumMinus(10, 5, 2)
VBA procedūra "Sub"
VBA redaktors saprot, ka priekšā ir procedūra Saskaņā arkad tas saskaras ar komandu grupu, kas atrodas starp šādiem sākuma un beigu paziņojumiem:
Apakš... Beigt apakš
VBA procedūra “Sub”: 1. piemērs. Izlīdzinājuma centrā un fonta lieluma maiņa atlasītajā šūnu diapazonā
Apsveriet vienkāršas VBA procedūras piemēru Saskaņā ar, kuras uzdevums ir mainīt atlasītā šūnu diapazona formatējumu. Šūnas ir centrētas (gan vertikāli, gan horizontāli), un fonta lielums tiek mainīts uz lietotāja norādīto:
Apakšformāts_centrēts_un_izmērs(Izvēles iFontSize kā vesels skaitlis = 10) Selection.Horizontal Alignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize Beigu apakšpunkts
Šī procedūra Saskaņā ar veic darbības, bet neatgriež rezultātu.
Šajā piemērā tiek izmantots arī neobligāts arguments Fonta izmērs. Ja arguments Fonta izmērs nav nodots procedūrai Saskaņā ar, tad tā noklusējuma vērtība ir 10. Tomēr, ja arguments Fonta izmērs nodota procedūrai Saskaņā ar, tad atlasītajam šūnu diapazonam tiks iestatīts lietotāja norādītais fonta lielums.
VBA apakšprocedūra: 2. piemērs: līdzināšana centrā un treknraksts atlasītajā šūnu diapazonā
Šī procedūra ir līdzīga tikko apspriestajai, taču šoreiz tā vietā, lai mainītu izmērus, atlasītajam šūnu diapazonam tiek izmantots treknraksts. Šis ir procedūras piemērs Saskaņā ar, kas neprasa argumentus:
Apakšformāts_centrēts_un_trekns() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub
“Apakš” procedūras izsaukšana programmā Excel VBA
Izsauciet VBA procedūru “Sub” no citas procedūras
Lai izsauktu VBA procedūru Saskaņā ar no citas VBA procedūras, jums jāieraksta atslēgvārds izsaukums, procedūras nosaukums Saskaņā ar un tālāk iekavās ir procedūras argumenti. Tas ir parādīts zemāk esošajā piemērā:
Sub main() Call Format_Centered_Un_Sized(20) End Sub
Ja procedūra Formāts_centrēts_un_izmērs ir vairāk nekā viens arguments, tie ir jāatdala ar komatiem. Kā šis:
Sub main() Call Format_Centered_and_Sized(arg1, arg2, ...) End Sub
Izsauciet VBA procedūru “Sub” no darblapas
Procedūra Saskaņā ar nevar ievadīt tieši Excel lapas šūnā, kā to var izdarīt ar procedūru funkcijajo procedūra Saskaņā ar neatgriež vērtību. Tomēr procedūras Saskaņā ar, kuriem nav argumentu un kas tiek deklarēti kā valsts (kā parādīts zemāk) būs pieejams darblapas lietotājiem. Tādējādi, ja vienkāršās procedūras tika apspriestas iepriekš Saskaņā ar ievietota Visual Basic redaktora modulī, procedūra Format_Centred_Un_Bold būs pieejams lietošanai Excel darblapā, un procedūru Formāts_centrēts_un_izmērs – nebūs pieejams, jo tam ir argumenti.
Šeit ir vienkāršs veids, kā palaist (vai izpildīt) procedūru Saskaņā ar, kas pieejams no darblapas:
- prese Alt+F8 (nospiediet taustiņu cits un, turot to nospiestu, nospiediet taustiņu F8).
- Parādītajā makro sarakstā atlasiet to, kuru vēlaties palaist.
- prese skrējiens (skriet)
Lai veiktu procedūru Saskaņā ar ātri un vienkārši varat tam piešķirt īsinājumtaustiņus. Priekš šī:
- prese Alt+F8.
- Parādītajā makro sarakstā atlasiet to, kuram vēlaties piešķirt īsinājumtaustiņu.
- prese parametri (Opcijas) un parādītajā dialoglodziņā ievadiet īsinājumtaustiņu.
- prese OK un aizveriet dialoglodziņu Makro (Makro).
uzmanību: Piešķirot makro īsinājumtaustiņus, pārliecinieties, ka programmā Excel tas netiek izmantots kā standarts (piemēram, Ctrl + C). Ja atlasīsit jau esošu īsinājumtaustiņu, tas tiks atkārtoti piešķirts makro, un rezultātā lietotājs var nejauši palaist makro.
VBA procedūras joma
Šīs apmācības 2. daļā tika apspriests mainīgo un konstantu apjoms un atslēgvārdu loma. valsts и Privāts. Šos atslēgvārdus var izmantot arī ar VBA procedūrām:
Publiskās apakšgrupas AddToCells(i kā vesels skaitlis) ... Beigas sub | Ja pirms procedūras deklarācijas ir atslēgvārds valsts, tad procedūra būs pieejama visiem šī VBA projekta moduļiem. |
Privātas apakšgrupas AddToCells(i kā vesels skaitlis) ... Beigt sub | Ja pirms procedūras deklarācijas ir atslēgvārds Privāts, tad šī procedūra būs pieejama tikai pašreizējam modulim. To nevar izsaukt nevienā citā modulī vai no Excel darbgrāmatas. |
Atcerieties, ka, ja pirms VBA procedūras deklarēšanas funkcija or Saskaņā ar atslēgvārds nav ievietots, procedūrai ir iestatīts noklusējuma rekvizīts valsts (tas ir, tas būs pieejams visur šajā VBA projektā). Tas ir pretstatā mainīgo deklarācijām, kuras pēc noklusējuma ir Privāts.
Agrīna iziešana no VBA procedūrām “Funkcija” un “Sub”
Ja nepieciešams pārtraukt VBA procedūras izpildi funkcija or Saskaņā ar, negaidot tā dabisko beigas, tad šim ir operatori Izejas funkcija и Iziet no apakš. Šo operatoru izmantošana ir parādīta zemāk, izmantojot vienkāršu procedūru kā piemēru. funkcijaA, kas sagaida pozitīvu argumentu turpmāko darbību veikšanai. Ja procedūrai tiek nodota nepozitīva vērtība, turpmākas darbības nevar veikt, tāpēc lietotājam jāparāda kļūdas ziņojums un procedūra nekavējoties jāiziet:
Funkcija VAT_Amount(sVAT_Rate As Single) As Single VAT_Amount = 0 If sVAT_Rate <= 0 then MsgBox "Sagaidīja pozitīvu sVAT_Rate vērtību, bet saņemta" & sVAT_Rate Izejas funkcija Beigt, ja... Beigt funkciju
Lūdzu, ņemiet vērā, ka pirms procedūras pabeigšanas funkcija - PVN_Summa, kodā tiek ievietota iebūvēta VBA funkcija MsgBox, kurā lietotājam tiek parādīts brīdinājuma uznirstošais logs.