TOP

VBA-Lecția 6.2. Tipuri de date (Variables)

Î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

Matrice unidimensională

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

constante

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

Crearea propriului tip de variabilă

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