Variabilele si constantele utilizate intr-un program VBA pot avea diverse tipuri, specifice datelor memorate. Spre
deosebire de alte limbaje de programare, exista un tip universal -- tipul Variant --, care poate contine aproape orice alt
tip de date. Acest tip este asignat in mod implicit tuturor variabilelor nedeclarate altfel, incat declararea explicita poate fi
utilizata atunci cand se doreste economisirea memoriei (tipul Variant aloca mai multa memorie), viteza in executie sau
atunci cand se scriu date intr-un fisier in acces direct.
Boolean
Domeniu de valori: True sau False (valorile logice)
Memorie: 2 bytes
Declarator de tip:
Observatii. Convertirea valorilor numerice la tipul Boolean: 0 produce False, valorile nenule produc True.
Convertirea valorilor de tip Boolean la alte tipuri numerice: False devine 0, True devine -1.
Byte
Domeniu de valori: 0-255 (numere intregi, fara semn)
Memorie: 1 byte
Declarator de tip:
Observatii.
Currency
Domeniu de valori: -922 337 203 685 477.5808 -- 922 337 203 685 477.5807
Memorie: 8 bytes
Declarator de tip: @
Observatii. Utilizate pentru calcule banesti (sau alte situatii in care precizia este foarte importanta).
Valorile sunt memorate in format intreg, scalate prin 10 000, pentru a obtine 15 cifre la partea intreaga si
4 cifre la partea zecimala (reprezentare in virgula fixa).
Date Domeniu de valori: 1 ianuarie 100 -- 31 decembrie 9999, 0:00:00 -- 23:59:59
Memorie: 8 bytes
Declarator de tip:
Observatii. Informatiile de tip data calendaristica si/sau timp orar sunt memorate drept numere flotante,
partea intreaga reprezentand data calendaristica, partea fractionara reprezentand timpul.
La convertiri, miezul noptii este 0, miezul zilei este .5, numerele negative reprezinta date inainte de 30
decembrie 1899.
Poate fi atribuit ca valoare de tip date orice literal care reprezinta o data calendaristica recunoscuta ca
atare, literalul trebuind sa fie cuprins intre simboluri #, de exemplu #1 Jan 99#.
Decimal
Domeniu de valori: (vezi observatiile)
Memorie: 12 bytes
Declarator de tip:
Observatii. Valorile de tip Decimal sunt memorate ca intregi fara semn insotiti de un factor de scala, intre
0 si 28, specificand numarul de zecimale. Pentru scala=0 (fara parte zecimala), cea mai mare valoare
posibila este +/-79,228,162,514,264,337,593,543,950,335. Cu scala=28 cea mai mare valoare este +/-
7.9228162514264337593543950335 iar cea mai mica valoare nenula este +/-
0.0000000000000000000000000001.
Nota: Deocamdata, tipul Decimal poate fi utilizat doar ca subtip in Variant, adica nu se pot declara
variabile ca fiind de tip Decimal. Acestea pot fi create ca Variant cu subtipul Decimal prin functia Cdec
(functia forteaza o expresie sa fie de un tip specificat, din aceeasi categorie de functii fiind si CBool,
CByte etc.).
Double
Domeniu de valori: numere negative de la -1.79769313486232E308 pana la -4.94065645841247E-324;
numere pozitive de la 4.94065645841247E-324 pana la 1.79769313486232E308 (numere flotante in
dubla precizie).
Memorie: 8 bytes
8
Declarator de tip: #
Observatii.
Integer
Domeniu de valori: -32 768 -- 32 767.
Memorie: 2 bytes
Declarator de tip: %
Observatii.
Long
Domeniu de valori: -2 147 483 648 -- 2 147 483 647.
Memorie: 4 bytes
Declarator de tip: &
Observatii.
Object
Domeniu de valori: (vezi observatiile)
Memorie: 4 bytes
Declarator de tip:
Observatii. Adrese pe 32 de biti care se refera la obiecte. Prin instructiunea Set se atribuie unei variabile
declarate de tip Object referinta la obiectul dorit.
Nota. Prin declararea unei variabile de tip Object, referirea la un obiect prin Set produce o atasare tarzie
(la timpul executiei - run-time binding). Pentru o atasare timpurie (la timpul compilarii - compile-time
binding) se va utiliza o variabila declarata cu numele clasei respective.
Single
Domeniu de valori: numere negative de la -3.402823E38 pana la -1.401298E-45; numere pozitive de la
1.401298E-45 pana la 3.402823E38.
Memorie: 4 bytes
Declarator de tip: !
Observatii.
String
Domeniu de valori: sir de lungime variabila: pana la 2^31 caractere; sir de lungime fixa: pana la 2^16
caractere.
Memorie: 2 bytes
Declarator de tip: $
Observatii. Un sir de lungime fixa declarat Public nu poate fi utilizat intr-un modul de clasa.
Variant (default)
Domeniu de valori: aceleasi cu domeniile specificate la tipurile precedente si care pot fi subtipuri ale
tipului Variant, cu mentiunea ca toate subtipurile numerice au domeniul de la Double.
Memorie: in functie de subtipul valorii: valorile numerice ocupa 16 bytes, valorile de tip String necesita 22
bytes plus cate un byte pentru fiecare caracter.
Declarator de tip:
Observatii. Este tipul specificat implicit (in lipsa unei declaratii explicite) pentru o constanta, variabila, sau
argument (caz care, desi nerecomandat, poate elimina erorile provocate de diferentele de tip ale
argumentelor la apelul procedurilor).
Cu exceptia datelor de tip String cu lungime fixa si a datelor cu tipuri definite de utilizator, tipul Variant
poate contine orice alt tip de data. In plus poate sa contina valorile speciale Empty, Error, Nothing si Null.
Tipul considerat pentru o data continuta intr-un Variant poate fi determinat cu functia VarType sau
TypeName.
Valorile unei variabile Variant pot sa-si converteasca valorile automat. In general, datele numerice sunt
memorate in tipul de origine, dar este posibil ca ele sa fie promovate la tipul superior daca rezultatul unei
operatii necesita acest fapt. De exemplu o valoare declarata initial drept Integer si atribuita unui Variant
va fi memorata ca un intreg pana cand, ridicand-o de exemplu la o putere, valoarea ei excede domeniul
tipului Integer. In acest caz are loc promovarea (ca mod de reprezentare) la tipul superior adecvat (Long
sau Double). Daca depasirea domeniului are loc pentru subtipurile Currency, Decimal sau Double, atunci
se va semnala eroare.
Utilizarea tipului Variant permite o tratare mai diferentiata a sirurilor de cifre: in operatii numerice vor fi
considerate numere iar in operatii cu siruri vor fi considerate siruri.
Accesul la valorile Variant este mai lent decat accesul la valorile definite prin tipuri explicite.
9
Valorile speciale au semnificatia:
o Empty este valoarea unui Variant care nu a fost initializat. In calcule numerice este considerat 0 iar in
operatii cu siruri este sirul de lungime zero.
o Null este valoarea unui Variant care, in mod programatic, nu contine date.
o Error este valoarea utilizata pentru a arata indeplinirea unei conditii de eroare (prin convertirea unui real
cu functia CVErr). Procesarea se va efectua de catre utilizator, tratarea automata a erorilor nu este
activata la setarea acestor valori.
o Nothing este utilizata pentru disocierea unei variabile de tip Object de un obiect efectiv.
Pentru a descărca acest document,
trebuie să te autentifici in contul tău.