Lucrul cu VBA procedurile
Procedură - o secvență de operatori VBA situate în modulul VBA, accesul la care pot fi accesate cu ajutorul VBE. Modulul poate cuprinde orice număr de proceduri. [1] Unele proceduri sunt argumente. Argumentul - este informația utilizată de procedura în timpul executării. Argumentele de rutină sunt foarte asemănătoare cu argumentele utilizate funcții Excel.

Fig. 1. Executați procedura din Visual Basic Editor
Descărcați o notă în Word sau PDF
Privat (un cuvânt cheie opțional). Aceasta indică faptul că procedura este accesibilă numai altor proceduri în același modul.
Public (un cuvânt cheie opțional). Aceasta indică faptul că procedura este accesibilă tuturor celorlalte proceduri din toate modulele din registrul de lucru. Atunci când este utilizat în modulul care conține declarația privind opțiunea modulului privat, procedura nu este disponibilă în afara proiectului.
Static (cuvinte cheie opțional). Aceasta indică faptul că variabilele procedură stocată după procedura.
Sub (cuvinte cheie necesar). Acesta marchează începutul procedurii.
Nume. Orice nume procedură validă.
Instrucțiuni (opțional). VBA corect instrucțiunile.
Exit Sub (operator opțional). Aceasta determină o ieșire imediată din procedura înainte de încheierea formală a acestuia.
End Sub (operatorul obligatoriu). Acesta indică sfârșitul procedurii.
efectuarea procedurilor
Principalele metode de implementare, sau un apel, procedura VBA.
Prima cale. Cu o echipa de Run-> Run Sub / userform (Run -> Run procedură / formă de utilizator, figura 1.) În VBE. Alternativa - să apăsați

Fig. 2. Butonul Run Sub / userform de pe panoul Standard VBE
Doilea mod. Din dialogul Macro pentru Excel (Fig. 3). Pentru a afișa trece pe meniul Developer -> Macro sau apăsați pe Alt + F8.

Fig. 3. caseta de dialog Macro în Excel
A treia metodă. Folosind combinația de taste

Fig. 4. intrarile de la tastatura procedura de atribuire
mod de 4-y. Făcând clic pe butonul sau orice figura foaie de lucru. Procedura (fig. 5) trebuie să fie atribuit acestui buton sau cifră.

Fig. 5. Numirea figura macro
mod de 5-y. Dintr-o altă procedură. Procedura secundară și Funcția poate apela alte proceduri.
drumul 6-y. Utilizarea elementului de control al utilizatorului situat pe bandă. În plus, controalele bandă încorporate pot fi „reprogramat“ la apelul macro pentru executare.
mod de 7-y. Din meniul contextual al utilizatorului.
mod de 8-y. După efectuarea unui anumit eveniment. Astfel de evenimente pot face deschiderea unui registru de lucru, salvați registrul de lucru, închiderea unui registru de lucru, schimba celula, trece la o altă foaie de lucru, și multe altele.
mod de 9-y. fereastra Debug (imediată) în VBE. Trebuie doar să introduceți numele procedurii, selectați toate argumentele necesare și presa
Trecerea proceduri argumente
Argumentele furnizează procedurile de date utilizate în instrucțiunile sale. Argumentul poate transmite următoarele date: o variabilă constantă, matrice, obiect.
Există două moduri de a transfera argumentele procedurii.
În exemplul următor, procedura argument Procesul este transmis prin referință (implicit). După Procedura principală MyValue atribuie o valoare de 10, aceasta invocă o procedură și transmite Process MyValue ca argument. Procedura de proces multiplică valoarea argumentelor (denumirea YourValue) la 10. La finalul procedurii de proces reia executia procedurii principale, iar funcția MsgBox afișează linia MyValue: 100.
Sub Main ()
Dim MyValue Ca Integer
MyValue = 10
Procesul de apel (MyValue)
MsgBox MyValue
end Sub
Sub Process (YourValue)
YourValue = YourValue * 10
end Sub
Dacă doriți procedura numita nu modifică variabilele obținute ca argumente, editați lista de argumente pentru procedura apelată, astfel încât argumentele sunt transmise prin valoare, nu prin referință. Pentru a face acest lucru, adăugați argumentul la ByVal de cuvinte cheie. Apoi, procedura numita va rula o copie a datelor transmise, nu datele în sine. Procedura următoare, de exemplu, schimbările care au loc cu Process YourValue în cadrul procedurii nu afectează valoarea variabilei în procedura principală MyValue. Ca rezultat, MsgBox funcție afișează 10, în loc de 100.
Sub Process (ByVal YourValue)
YourValue = YourValue * 10
end Sub
eroare de manipulare
Pentru a specifica. Programul, ce ar trebui să se întâmple atunci când apare o eroare, operatorul utilizează la eroare. Puteți alege una dintre cele două opțiuni.
- Ignoră eroarea și pentru a permite VBA pentru a continua programul. Puteți analiza apoi Err obiect, pentru a afla ce a avut loc eroarea, și, dacă este necesar, să ia măsuri pentru a preveni.
- Du-te la o secțiune specială de cod să se ocupe de erori, pentru a efectua acțiunile necesare. Această secțiune este introdus în sfârșitul procedurii, și este notat un marcaj special.
Programul a continuat să funcționeze după ce se produce o eroare, este necesar să se introducă, la începutul procedurii de operator de eroare Reluare următor. Dacă apare o eroare, puteți utiliza obiectul Err pentru a determina numărul său. De exemplu, în Fig. 6 ilustrează o procedură care atribuie un nume Listu2 Baseline. Cu toate acestea, cartea nu poate fi Lista2. În acest caz, apare un mesaj de eroare.

Fig. 6. Procedura pentru atribuirea numele foii de lucru Excel, procesarea eroare
MsgBox Err
MsgBox Err.Number
În declarația de eroare este de asemenea utilizat pentru a determina în cazul în care, în cadrul procedurii, care trebuie să se deplaseze programul în cazul unei erori. Pentru a desemna un loc utilizat de o etichetă.
La Eroare GoTo ErrorHandler
Următoarea procedură selectează toate celulele din formulele actuale Gama conține care returnează un număr. Procedura utilizează, de asemenea, declarația Dacă pentru a determina rezultatul: în cazul în care a intervenit o eroare. Declarație privind Error GoTo 0 restabilește manipularea normală de eroare înainte de a ieși procedura.
Sub SelectFormulas2 ()
On Error Reluare următor
Selection.SpecialCells (xlFormulas, xlNumbers); selectați
Dacă Err.Number = 1,004 Apoi MsgBox „El a descoperit celule cu formule.“
La Eroare GoTo 0
#“... [cod]
end Sub
În cazul în care proprietatea Numărul obiectului Err nu este egal cu 0, apare o eroare. Cu ajutorul declarației Dacă se verifică nu este egal proprietatea Are Err.Number de 1004, și, în caz afirmativ, se afișează o casetă de mesaj. În acest exemplu, verificarea codului se efectuează pentru a detecta eroarea cu numărul specificat.
Următorul exemplu de cod demonstrează eroare de manipulare prin comutarea pe etichetă.
Sub ErrorDemo ()
La Eroare GoTo Handler
Selection.Value = 123
Exit Sub
handler:
MsgBox „Nu se poate atribui o valoare în intervalul selectat.“
end Sub
Procedura încearcă să atribuie o valoare a obiectului curent selectat. Dacă apare o eroare (de exemplu, a evidențiat o serie de celule sau de foaie este protejată), operatorul de atribuire returnează o eroare. În declarația de eroare specifică Handler se mută la index în cazul unei erori. Rețineți că, înainte de eticheta utilizată Exit subserie. program de procesare nu este executat în cazul în care nu au existat erori.