VBA este un limbaj interpretat, adică instrucțiunile sale sunt interpretate de fiecare dată când programul este executat. Această limbă este comună pentru toate aplicațiile MS Office; pe el este posibil să scrie cu succes același VBA este un limbaj interpretat, adică instrucțiunile sale sunt interpretate de fiecare dată când programul este executat. Această limbă este împărtășită de toți și nu poate conține aplicații MS Office; pe acesta este posibil să scrieți cu programe de succes egale pentru Access și Word sau Excel. Mai întâi, să examinăm rapid sintaxa limbii VBA.
Pentru a descrie în mod explicit o variabilă, utilizați operatorul Dim.
întunecos <имя переменной> ca <тип переменной>.
De exemplu, Dim i ca intreg, j Ca Integer Dim x As Double
Linile pot fi constante și lungime variabilă. Operatorul Dim <имя переменной> După cum String declară un șir de lungime variabilă și instrucțiunea Dim <имя переменной> Ca String *<количество символов> - lungimea fixă. De exemplu:
Dim str1 Ca șir Dim2 str2 Ca șir * 20.
Puteți introduce o cerință ca toate variabilele să fie descrise în mod explicit. Pentru a face acest lucru, în secțiunea descriere a modulului, trebuie să specificați Declarația explicită a opțiunii. Apoi, Access va detecta automat erorile în scrierea numelor de variabile și va controla potrivirea tipului de variabilă și valorile atribuite.
Variabilele au un anumit domeniu de aplicare. Există patru niveluri de vizibilitate:
1. Nivel local sau nivel de procedură. Variabilele există numai în cadrul procedurii, în care sunt descrise și utilizate;
2. Nivelul formularului (raport). Variabilele sunt descrise în secțiunea descriere a modulului de formular (raport) și sunt disponibile numai pentru procedurile din acest formular (raport) în momentul în care formularul (raportul) este deschis;
3. Nivelul modulului. Variabilele sunt descrise în secțiunea de descriere a modulului standard și sunt disponibile pentru toate procedurile modulului când baza de date este deschisă;
4. Nivelul global. Variabila este scrisă în secțiunea descriere a modulului utilizând instrucțiunile publice sau globale.
Dacă încercați să utilizați variabila dată, implicit, la un moment în care acesta nu este disponibil, Access înlocui creează o nouă variabilă cu același nume, ceea ce poate duce la dificil de detectat erori logice. Acest lucru poate servi ca un motiv suplimentar pentru specificarea explicită a tuturor variabilelor.
Toate variabilele au o anumită durată de viață. Pentru variabilele locale, durata de viață este determinată de momentul utilizării codului. De fiecare dată când este invocată o nouă procedură de apel, variabila este atribuită fie Null. fie 0, fie un șir gol, în funcție de tip. Pentru a crea variabile cu o durată de viață egală cu durata de viață a aplicației, utilizați instrucțiunea statică. Cu toate acestea, o variabilă statică nu poate fi utilizată în alte proceduri. Doar timpul din viața ei se schimbă, și nu domeniul de vizibilitate. Dacă există o rechemare de aceeași procedură care a fost descrisă de o variabilă statică, variabila își va păstra valoarea anterioară, pe care o avea în momentul finalizării acestei proceduri, în cazul în care apelul anterior. Toate variabilele dintr-o procedură specifică va fi statice, dacă înainte de procedura pentru a pune declarația static.
Folosind cuvântul cheie Dim, puteți defini și matrice multidimensionale. Mărimea și numărul elementelor din matrice sunt definite în interiorul parantezei după numele variabilei. De exemplu:
Dim myArray (20) ca șir * 10
Dim myArray (5, 5) Ca dublă sau Dim myArray (3, 3, 3) Ca dublă
Dim dynArray () ca dublu
ReDim conservă dynArray (5, 2, 4)
În timpul execuției programului, limitele inferioare și superioare ale matricei pot fi definite utilizând funcțiile LBound () și UBound (). Puteți șterge un matrice din memorie utilizând instrucțiunea Erase.
Const pi As Double = 3,1415
În plus față de variabilele tipurilor de mai sus, în VBA, puteți specifica variabilele de obiect care sunt utilizate pentru a stoca referințele la obiectele Access. Pentru fiecare colecție a obiectelor principale din Access, există un tip de obiect corespunzător acestuia, precum și un tip general de obiect care acceptă trimiteri la orice obiecte. De exemplu:
Dim myObject As Object - o variabilă a oricărui tip de obiect,
Dim myControl As Control - variabilă de tip control,
Dim myForm Ca formă este o variabilă a tipului de formă.
Puteți atribui valori specifice variabilelor obiect folosind instrucțiunea Set.
Setați myForm = Formulare! [Formularul meu].
De asemenea, utilizatorul își poate crea propriul tip de date pe baza celor existente. Un tip de date personalizat este introdus între tipurile de cuvinte cheie Tip ... End Type.
număr ca șir * 15
tip As String * 10
Accesul la câmpul tipului definit de utilizator se realizează prin operația ".".
Dim tel As tPhone
Puteți introduce variabile de obiecte care conțin multe proprietăți, precum și variabile ale tipului de date definite de utilizator, cu instrucțiunea Cu ... End With.
Dimineți formularul meu ca formă
Setați myForm = Formulare! [Form name]
Proceduri și funcții. Principalele componente ale programelor VBA sunt procedurile și funcțiile. Acestea sunt bucăți de cod între instrucțiunile Sub și End Sub sau între funcția Funcție și End. În general, procedurile și funcțiile sunt redactate după cum urmează:
Sub <имя процедуры<[(<аргументы>)]
funcție <имя функции> [(<аргументы>)] As <тип возвращаемого значения>
<имя функции> = <возвращаемое значение>
Lista argumentelor este separată prin virgule. Funcția diferă de procedură prin faptul că numele acesteia acționează și ca variabilă și se utilizează pentru a returna o valoare punctului de apel al funcției. Pentru a apela o procedură dintr-o altă procedură sau funcție, utilizați instrucțiunea Apel. Mai întâi vine numele procedurii, iar apoi în paranteze o listă a valorilor reale ale argumentelor sale. Procedurile pot fi, de asemenea, numite pur și simplu de numele lor, fără a utiliza instrucțiunea de apel. În acest caz, lista de argumente nu este închisă între paranteze. Funcțiile sunt numite în același mod ca și procedurile, dar mai des sunt numite după numele lor cu o listă cu bracketing a valorilor reale ale argumentelor din partea dreaptă a operatorului de atribuire. De exemplu:
Sunați pe mySub ("Lander", 4, i + 1)
mySub "Lander", 4, i + 1
total_price = myFunc ([Preț] * [Cantitate], [Livrare])
Sub mySyb (srteet ca șir, ByVal clădire ca întreg, ByRef apt ca byte)
Funcția myFunc (full_price ca monedă, expediere ca singură) ca monedă
myFunc = full_price * 1.2 + expediere
Pentru a forța ieșirea din procedură și funcție, se utilizează funcția Exit Sub și Exit.
Gestionarea execuției programului. Gestionarea execuției programului se realizează prin operatorul de transfer necondiționat, operatorii de ramură (operatori condiționali) și buclele. Declarațiile condiționale efectuează un grup de instrucțiuni, în funcție de condiție. Acestea includ instrucțiunea If și instrucțiunea Select Case. În forma cea mai simplă, operatorul Dacă poate fi scris într-o singură linie.
dacă <условие> apoi <оператор>
O versiune mai complicată a folosirii instrucțiunii If este prezentată mai jos:
dacă <условие> apoi
Pentru a specifica alegerea acțiunilor bazate pe verificarea unui întreg grup de condiții, se utilizează o variantă extinsă a instrucțiunii If.
dacă <условие> apoi
Altfel Dacă <условие 2> apoi
Dacă alegerea acțiunilor depinde de valori diferite ale aceleiași expresii, atunci în loc de instrucțiunea if im, este de preferat să utilizați operatorul Select Case ... End Select. Această afirmație determină dacă expresia este adevărată și, de asemenea, evaluează dacă valorile acestei expresii sunt închise în anumite limite.
Selectați Cazul <имя переменной>
caz <выражение 1> [. <выражение 2>, ...]
(operatorii care sunt executați dacă valorile variabilei satisfac expresia 1 sau expresia 2 sau ...)
[Cazul <выражение 3> la <выражение 4>]
(operatorii care sunt executați dacă valoarea variabilei este în intervalul definit de expresiile 3 și 4)
[Cazul Is <выражение отношения>]
(operatori care sunt executați dacă valoarea variabilei satisface expresia relației.)
(operatori care sunt executați dacă niciuna dintre condițiile de mai sus nu este îndeplinită)
Orice linie din program pe VBA poate fi etichetă Etichetă. Puteți să accesați această linie a programului utilizând operatorul de salt al lui GoTo necondiționat <метка>. Cu toate acestea, operatorii GoTo încalcă stilul programării structurate și sunt utilizați numai pentru a gestiona erorile din aplicație.
Exemplele de cicluri din VBA sunt împărțite în două grupuri principale: pentru buclă (Pentru ... Următorul) și bucle cu o condiție (Do ... Loop).
Instrucțiunea Pentru ... Instrucțiunea următoare repetă corpul bucla de câte ori este specificat.
pentru <счетчик> = <начальное значение> la <конечное значение> [Etapa <приращение>]
Pentru a ieși din bucla, utilizați instrucțiunea Exit pentru.
Buclele Do While ... Loop, în timp ce ... Declarațiile buclă Wend sunt sinonime. În timp ce ... Wend este lăsat pentru compatibilitate cu versiunile mai vechi. Aceste afirmații repetă corpul buclei până când condiția este adevărată.
În timp ce <условие [=True]>
Operatorul Do Until ... Loop execută corpul buclă până la condiție
Do Until <условие [<> Adevărat]>
Pentru a se asigura că operatorii corpului bucla sunt executați cel puțin o dată, pot fi utilizate următoarele variante ale acestor bucle.
Buclă În timp ce <условие [=True]>
Buclă Până la <условие [=False]>
Pentru a ieși din aceste bucle, utilizați instrucțiunea Exit Do.
Pentru a construi o buclă pe toate elementele unui tablou sau colecție, utilizați instrucțiunea Pentru fiecare
Pentru fiecare <элемент> în <коллекция>
unde <элемент> Este o variabilă folosită pentru a trimite elemente dintr-o colecție de obiecte. Următorul exemplu va umple lista derulantă a comenzii FieldCollection cu numele tuturor controalelor din formular
Dim ctrl Ca control
Pentru fiecare ctrl În formular