În lecția anterioară, ne-am uitat la variabile în care anumite date pot fi scrise, dar nu pot conține mai mult de o valoare. Pentru a ocoli această limitare, există matrice în VBA care pot stoca mai multe valori.
Iată câteva exemple de diferite matrice:
Sub variables() 'Un exemplu de declarare a unei variabile Dim var1 As String 'Un exemplu de declarare a unui tablou unidimensional Dim array1(4) As String 'Un exemplu de declarare a unui tablou bidimensional Dim array2(4, 3) As String 'Un exemplu de declarare a unui tablou tridimensional Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
O matrice unidimensională poate fi gândită ca un tabel format dintr-o coloană. Matricea array1(4) este o matrice unidimensională care poate deține 5 înregistrări. De ce 5? Deoarece numărul de intrări din matrice încep de la zero (0, 1, 2, 3, 4).
Acum să considerăm o matrice bidimensională:
Dim array2(4, 3) As String
Va arăta deja ca un tabel cu 5 rânduri și 4 coloane:
„Atribuirea de valori pentru celulele colorate array2(0, 0) = „Valoare în celule roșii” array2(4, 1) = „Valoare în celula verde” array2(2, 3) = „Valoarea din celula albastră”
La fel ca variabilele, constantele pot fi folosite pentru a stoca valori, dar diferența este că valorile nu se pot schimba. Putem adăuga o constantă pentru a evita repetarea valorii, de exemplu 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Acest lucru face codul mai ușor de înțeles și editat. De asemenea, vă permite să schimbați valoarea constantei destul de simplu:
Sub const_example() 'Declararea unei constante + atribuirea unei valori Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Domeniul variabilelor
Dacă o variabilă este declarată la începutul unei proceduri (Sub), atunci poate fi utilizată numai în această procedură. Valoarea variabilei nu va mai fi disponibilă după executarea procedurii.
Sub procedure1() Dim var1 As Integer '=> Variabila este valabilă numai în această procedură End Sub Sub procedure2() '=> var1 nu poate fi folosit aici End Sub
Pentru a utiliza o variabilă în orice procedură de modul, trebuie doar să o declarăm chiar la începutul modulului. Și dacă declarați o variabilă ca aceasta, aceasta va fi disponibilă până când registrul de lucru este închis.
Dim var1 As Integer Sub procedure1() '=> var1 poate fi folosit aici End Sub Sub procedure2() '=> var1 poate fi folosit și aici End Sub
Dacă doriți să utilizați aceeași variabilă în toate modulele cărții, ar trebui să înlocuiți doar Dim cu Global în exemplul anterior:
Global var1 As Integer
Pentru a utiliza o variabilă după executarea procedurii în care aceasta apare, înlocuiți Dim cu Static:
Sub procedure1() Static var1 As Integer End Sub
Pentru a utiliza valorile tuturor variabilelor din procedură, adăugați Static înainte de Sub:
Static Sub procedure1() Dim var1 As Integer End Sub
Iată un exemplu rapid despre cum vă puteți crea propriul tip:
'Crearea unui tip de variabilă Type customers last_name As String first_name As String End Type Sub variables() 'Declararea unei variabile Dim cust1 As customers 'Atribuirea unei valori pentru cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'Exemplu de utilizare MsgBox cust1.last_name & " " & cust1.first_name End Sub