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.

Lucrul cu VBA procedurile

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 sau de a folosi butonul Run Sub / bara de instrumente userform Standard (Standard, fig. 2).

Lucrul cu VBA procedurile

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.

Lucrul cu VBA procedurile

Fig. 3. caseta de dialog Macro în Excel

A treia metodă. Folosind combinația de taste și atribuite procedurilor cheie (în cazul în care procedura este atribuită combinație de taste). Dacă în momentul în care procedura nu este cheia a fost atribuit de a face niciodată nu este prea târziu. Deschideți macro. așa cum este descris mai sus, selectați procedura în caseta Macro name. faceți clic pe Setări. și introduceți litera în caseta cheie comandă rapidă (fig. 4).

Lucrul cu VBA procedurile

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ă.

Lucrul cu VBA procedurile

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.

Lucrul cu VBA procedurile

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.