Tutorial privind funcția Excel VBA și proceduri sub

Built-in functii VBA

Înainte de a începe crearea propriilor funcții VBA, este util să se știe că Excel VBA are o vastă colecție de funcții gata încorporate pe care le puteți utiliza la scriere de cod.

În plus, o listă completă de funcții predefinite VBA cu exemple pot fi găsite pe Visual Basic Developer Center.

Proceduri personalizate «funcții» și «Sub» în VBA

În setul Excel Visual Basic de comandă care efectuează o anumită sarcină, acesta este plasat într-o procedură de funcții (funcția) sau sub (subrutină). Diferența principală dintre funcții și proceduri Sub este că procedura returnează un rezultat, procedura Sub - nr.

Prin urmare, dacă doriți să efectuați și de a obține un fel de rezultat (de exemplu, pentru suma de mai multe numere), acesta este de obicei folosită procedura de funcții. și pentru a efectua o acțiune pur și simplu (de exemplu, modificați formatarea unui grup de celule), trebuie să alegeți o procedură secundară.

Rețineți că prezența argumentelor procedurilor Sub și funcția în VBA nu este necesară. Pentru unii, argumentele nu au nevoie de proceduri.

argumente opționale

Procedurile VBA pot avea argumente opționale. Acestea sunt argumentele pe care utilizatorul poate specifica în cazul în care doresc, iar în cazul în care lipsesc, procedura utilizează la care valorile implicite.

Revenind la exemplul anterior, pentru a face o funcție de argument întreg opțional, acesta trebuie să fie declarat ca aceasta:

În acest caz, argumentul implicit întreg i va fi egal cu 0.

Argumentele opționale în procedura poate fi câteva, toate acestea sunt enumerate la sfârșitul lista de argumente.

Transmiterea argumentelor prin valoare și prin referință

Argumentele VBA pot fi transmise în procedură două moduri:

În acest caz, am număr întreg argumentul trecut prin valoare. După ieșirea din procedura secundară, toate realizate cu i modificările vor fi pierdute.

În acest caz, i număr întreg argumentul transmis prin referință. După ieșirea din procedura secundară, toate realizate cu i modificările vor fi salvate într-o variabilă, care a fost transferată procedura secundară.

Rețineți că argumentul implicit în VBA sunt transmise prin referință. Cu alte cuvinte, dacă nu utilizați cuvinte cheie ByVal sau ByRef. atunci argumentul va fi transmis prin referință.

Înainte de a continua să studieze funcția și procedurile Sub mai în detaliu, este util, încă o dată să se uite la caracteristicile și diferențele dintre aceste două tipuri de proceduri. În urma este o scurtă discuție de funcții VBA și proceduri Sub, și prezintă un exemplu simplu.

Procedura VBA «Funcție»

Așa cum am menționat anterior, procedura de funcții VBA (spre deosebire de Sub), se returnează o valoare. Pentru a reveni la valori următoarele reguli:

  • întoarcere valoare tip de date trebuie să fie declarate în cadrul procedurii din titlu de funcții.
  • O variabilă care conține valoarea de returnare ar trebui să fie numit în același mod ca și procedura de funcții. Această variabilă nu trebuie să fie declarate separat, deoarece este întotdeauna acolo ca parte integrantă a unei proceduri de funcții.

Este perfect ilustrat în exemplul următor.

EXEMPLUL VBA «Funcție» Procedura: efectua operații matematice cu numere de 3

Mai jos este un exemplu de cod VBA procedură de funcții. care are trei argumente de tip dublă (virgulă mobilă dublă precizie). Ca urmare, procedura returnează un număr mai de tip dublu. egală cu suma primelor două argumente minus al treilea argument:

Acest lucru foarte simplu procedură VBA Funcția ilustrează modul în care datele sunt transmise prin argumentele procedurii. Puteti vedea ce tip de date returnate de procedura, definită ca o dublă (vorbind despre acest cuvânt Ca dublă după lista de argumente). De asemenea, acest exemplu ilustrează modul în care rezultatul procedurii Funcția este stocată într-un nume de variabilă care se potrivește cu numele procedurii.

Call VBA «Funcție» Procedura

Call VBA «Funcție» Procedura de la o altă procedură

Procedura de funcții pot fi apelate de la o altă procedură de VBA folosind acest simplu proces de atribuire variabilă. Următorul exemplu ilustrează un tratament procedurii SumMinus. care a fost definit mai sus.

Call VBA «Funcție» Procedura de foaie de lucru

VBA Procedura de funcții pot fi apelate din foaie de calcul Excel același mod ca și orice altă funcție construit Excel. În consecință, creat în procedura anterioară de funcții Exemplu - SumMinus poate fi accesat prin tastarea în expresia unei celule din foaia de lucru este:

Procedura VBA «Sub»

Procedura VBA «Sub»: Exemplu 1. Aliniați centrul și schimba dimensiunea fontului în gama de celule selectate

Luați în considerare exemplul unui simplu VBA proceduri Sub. a cărui misiune - pentru a schimba formatarea gamei de celule selectate. Celulele set centrate (atât pe verticală cât și pe orizontală) și dimensiunea fontului este schimbat la definit de utilizator:

Această procedură Sub efectuează acțiuni, dar nu returnează un rezultat.

Acest exemplu folosit, de asemenea, opțional (opțional) argumentul iFontSize. În cazul în care argumentul este trecut procedura Sub iFontSize. implicit sa se presupune a fi 10. Cu toate acestea, în cazul în care argumentul este trecut procedura Sub iFontSize. în intervalul de celule selectate este setat dimensiunea fontului specificat de utilizator.

Procedura VBA «Sub»: Exemplu 2. Aliniați centrul și utilizarea boldface fontului în gama de celule selectate

Următoarea procedură este similară cu cea tocmai luate în considerare, dar de data aceasta, în loc de a se aplica redimensionarea îngroșa în intervalul de celule selectate. Aceasta este o procedură de exemplu Sub. care are argumente:

Apel «Sub» Procedura în Excel VBA

Call VBA «Sub» procedură dintr-o altă procedură

Pentru a apela o procedură sub VBA dintr-o altă procedură de VBA, aveți nevoie pentru a scrie apel cuvinte cheie. Sub numele procedurii, iar apoi în paranteze argumente de rutină. Acest lucru este prezentat în exemplul de mai jos:

În cazul în care procedura de Format_Centered_And_Sized durează mai mult de un argument, acestea trebuie să fie separate prin virgule. Iată cum:

Call VBA «Sub» Procedura de foaie de lucru

Aici este un mod simplu de a rula (sau a alerga) procedura Sub. disponibile din foaia de lucru:

  • Apăsați Alt + F8 (apăsați tasta Alt și în timp ce țineți-l în jos, apăsați tasta F8).
  • În lista rezultată, selectați macro pe care doriți să rulați.
  • Faceți clic pe Executare (Run)

Sub pentru a efectua procedura de rapid și ușor, aveți posibilitatea să atribuiți o comandă rapidă de la tastatură pentru a. Pentru a face acest lucru:

  • Apăsați Alt + F8.
  • În lista rezultată, selectați macrocomanda pe care doriți să alocați o comandă rapidă de la tastatură.
  • Faceți clic pe Opțiuni (Options) și în pop-introduceți caseta de dialog de comenzi rapide.
  • Faceți clic pe OK și închideți caseta de dialog macro (Macro).

Notă: Prin atribuirea unei comenzi rapide tastatură la macro, asigurați-vă că acesta nu este utilizat ca standard în Excel (de exemplu, Ctrl + C). Dacă selectați o comandă rapidă existentă, acesta va fi suprascris de macro, și, ca rezultat, utilizatorul poate rula macro accidental.

Domeniul de aplicare al procedurilor de VBA

În partea 2 a acestui tutorial au discutat tema domeniului de variabile și constante, precum și rolul de cuvinte cheie publice și private. Aceste cuvinte cheie pot fi, de asemenea, utilizate în legătură cu procedurile VBA:

părăsirea timpurie a procedurilor VBA «Funcția» și «Sub»

Dacă aveți nevoie pentru a finaliza procedura de funcții VBA sau subregiune. fără a aștepta naturale final, atunci, pentru aceasta există operatori și Exit Function Exit Sub. Aplicarea acestor operatori este prezentată mai jos pentru o procedură simplă de funcții. care este de așteptat să primească un argument pozitiv pentru funcționarea în continuare. În cazul în care procedura nu este transferat la o valoare pozitivă, atunci operațiunile ulterioare nu pot fi efectuate, astfel încât utilizatorul trebuie să fie afișat un mesaj de eroare, iar procedura trebuie completat imediat:

Rețineți că, înainte de a finaliza procedura de funcții - VAT_Amount. inserată în codul încorporat în funcția VBA MsgBox. care arată fereastra pop-up de utilizator cu un avertisment.

articole similare