Spre deosebire de alte limbaje de programare
in VBA, există un tip universal — tipul Variant —, care poate conţine aproape
orice alt tip de date. Acest tip este dat în mod implicit tuturor variabilelor
nedeclarate altfel. Pentru a economisii
memorie (pentru Variant se aloca
mai multa memorie) şi a creşte viteza de execuţie se recomandă declararea explicită.
Tip
|
Domeniu de valori
|
Memorie
|
Declarator
de tip
|
Boolean
|
True sau False
|
2 bytes
|
|
Byte
|
0–255 (numere întregi, fără semn)
|
1 byte
|
|
Currency
|
-922 337 203 685 477.5808 — 922 337 203 685 477.5807
|
8 bytes
|
@
|
Date
|
1 ian 100 — 31 dec 9999
0:00:00 — 23:59:59 |
8 bytes
|
|
Decimal
|
Vezi nota
|
12 bytes
|
|
Double
|
-1.79769313486232E308 - 4.94065645841247E-324
numere flotante în dublă precizie |
8 bytes
|
#
|
Integer
|
-32 768 — 32 767
|
2 bytes
|
%
|
Long
|
-2 147 483 648 — 2 147 483 647
|
4 bytes
|
&
|
Object
|
Vezi nota
|
4 bytes
|
|
Single
|
-3.402823E38
- 3.402823E38
|
4 bytes
|
!
|
String
|
şir de lungime variabila: până la 2^31 caractere;
şir de lungime fixa: până la 2^16 caractere. |
10 bytes + şirul propriu-yis
|
$
|
Variant
|
Vezi nota
|
|
|
Note
Currency
- Sunt utilizate pentru calcule băneşti
(sau alte situaţii în care precizia este foarte importantă).
Date -
Informaţiile de tip data calendaristică şi/sau timp orar sunt memorate
drept numere flotante, partea întreagă reprezentând data calendaristică, partea
fractionară reprezentând timpul.
La convertiri, miezul nopţii este 0, miezul zilei este .5, numerele negative reprezintă date înainte de 30 decembrie 1899.
La convertiri, miezul nopţii este 0, miezul zilei este .5, numerele negative reprezintă date înainte de 30 decembrie 1899.
Decimal - Intregi +/-79,228,162,514,264,337,593,543,950,335.
Cu zecimale 28 cifre ptr zecimele +/-7.9228162514264337593543950335
Cu zecimale 28 cifre ptr zecimele +/-7.9228162514264337593543950335
Object
- Adrese pe 32 de biţi care se
referă la obiecte. Prin instructiunea Set
se atribuie unei variabile declarate de tip Object referinţa la obiectul dorit.
Variant -
subtip numeric – orice număr mare decât cel Double, spaţiu alocat 16 bytes
subtip caractere - similar cu cele de tip String, spaţiu alocat 22 bytes plus câte un byte pentru fiecare caracter
subtip numeric – orice număr mare decât cel Double, spaţiu alocat 16 bytes
subtip caractere - similar cu cele de tip String, spaţiu alocat 22 bytes plus câte un byte pentru fiecare caracter
Valorile speciale au semnificaţia:
Empty este valoarea unui Variant care nu a fost
iniţializat. În calcule numerice este considerat 0 iar în operatii cu siruri
este sirul de lungime zero.
Null este valoarea unui Variant care, în mod
programatic, nu conţine date.
Error este valoarea utilizată pentru a arăta
îndeplinirea unei condiţii de eroare (prin convertirea unui real cu functia
CVErr). Procesarea se va efectua de către utilizator, tratarea automată a
erorilor nu este activată la setarea acestor valori.
Nothing este utilizată pentru disocierea unei
variabile de tip Object de un obiect
efectiv.
Tipuri definite de utilizator
[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .
End Type
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .
End Type
Declararea constantelor, variabilelor si tablourilor Nume
Reguli:
- primul caracter trebuie să fie o literă;
- nu se utilizează spaţiu, punct (.), semnul exclamării(!), sau caracterele @, &, $, #
- lungimea denumirii nu poate depășii 255 de caractere;
- la acelasi nivel de existenţă nu pot să existe denumiri identice
- primul caracter trebuie să fie o literă;
- nu se utilizează spaţiu, punct (.), semnul exclamării(!), sau caracterele @, &, $, #
- lungimea denumirii nu poate depășii 255 de caractere;
- la acelasi nivel de existenţă nu pot să existe denumiri identice
Nu se utilizează denumiri identice cu nume de
funcţii, instrucţiuni sau metode existente în Visual Basic.
Declararea constantelor
Definirea unei constante se realizeaza prin
instrucţiunea Const.
[Public | Private] Const constname [As type] =
expression
Public — opţtional, utilizat la nivel de modul
pentru a declara constante recunoscute în toateprocedurile din toate modulele
Private —opţional, utilizat la nivel de modul pentru
a declara constante recunoscute în toate procedurile din modulul în care apare
declaratia.
constname — numele constantei (obligatoriu).
type — tipul constantei Fiecare constanta presupune o clauză As type proprie.
expression — combinaţie de identificatori, constante,
operatori (cu excepţia Is) care
produce un sir, numar sau obiect. Nu se pot utiliza variabile, funcţii
utilizator sau funcţii VBA predefinite.
În mod implicit, constantele sunt private. La
nivel de procedură, sau de modul clasa, domeniul lor nu poate fi modificat prin
utilizarea clauzei Public. La nivel
de modul standard vizibilitatea poate fi modificată prin Public.
Constantele declarate în proceduri Sub, Function sau Property
sunt locale procedurii, constantele declarate în afara unei proceduri este
definita în modulul respectiv.
Declararea variabilelor
Variabilele, simple sau tablou, se definesc
prin instructiunile Dim, Private,
Public, ReDim sau Static. Numele
unei variabile trebuie sa respecte reguli similare cu cele ale constantelor.
În cazul în care modulul contine
instructiunea Option Explicit şi
care trebuie sa apară înaintea oricărei proceduri din modul, toate variabilele
trebuie să fie declarate prin instrucţiunile menţionate. Lipsa instrucţiunii Option Explicit permite ca variabilele
să fie definite acolo unde este nevoie de ele prin simpla menţionare a unui nou
identificator, tipul lor fiind stabilit implicit. Aceasta ultima posibilitate
poate produce erori greu detectabile.
Sintaxa instrucţiunilor de declarare:
Dim [WithEvents] varname[([subscripts])] [As
[New] type]
Private [WithEvents] varname[([subscripts])]
[As [New] type]
Public [WithEvents] varname[([subscripts])]
[As [New] type]
Static varname[([subscripts])] [As [New] type]
ReDim [Preserve] varname(subscripts) [As type]
Unde:
varname — numele variabilei
(obligatoriu)
subscripts — dimensiunile tabloului de date (dacă se declara o variabilă tablou). Pot exista până la 60 de indici, separaţi prin virgule
Dacă nu se indica limitele indicilor (dar parantezele sunt prezente), se defineşte o variabilă tablou dinamică (nu si prin Static) ale carei dimensiuni pot fi precizate/redefinite prin instrucţiunea ReDim.
New — permite crearea implicită a unui obiect (atunci când se declară o variabilă de tip obiect).
subscripts — dimensiunile tabloului de date (dacă se declara o variabilă tablou). Pot exista până la 60 de indici, separaţi prin virgule
Dacă nu se indica limitele indicilor (dar parantezele sunt prezente), se defineşte o variabilă tablou dinamică (nu si prin Static) ale carei dimensiuni pot fi precizate/redefinite prin instrucţiunea ReDim.
New — permite crearea implicită a unui obiect (atunci când se declară o variabilă de tip obiect).
Dim defineşte variabile atât
la nivel de modul cât şi la nivel de procedură. Variabilele definite la nivel
de modul sunt accesibile în procedurile acelui modul, iar variabilele de la
nivel de procedură sunt vizibile doar în procedura respectivă.
Private este utilizată la nivel
de modul pentru a declara variabile accesibile doar în procedurile acelui modul.
Public este utilizată pentru a
declara variabile accesibile în toate procedurile din toate modulele şi din
toate aplicaţiile. Prin includerea instructiunii Option Private Module este posibil ca variabilele publice sa fie
vizibile doar în proiectul în care sunt definite.
Static este utilizată la nivel de procedură
nestatica pentru a declara variabile care îşi păstrează valoarea de la o execuţie
a procedurii la alta, atât timp cât modulul în care apare procedura nu este resetat
sau repornit. Variabilele definite prin Static
sunt vizibile doar în procedura respectiva. Este de remarcat ca se poate defini
o întreaga procedură utilizând clauza Static,
caz în care toate variabilele sunt statice.
ReDim este utilizată la nivel de procedură pentru
realocarea memoriei variabilelor tablou dinamice. Utilizarea clauzei Preserve permite doar modificarea
ultimei dimensiuni şi păstrează valorile deja existente.
Domeniul unei variabile, constante sau proceduri
Domeniul unei entităţi reprezintă locul unde
poate fi referită acea entitate, de unde
este. Domeniul este dependent de locul definirii entităţii, de clauzele care
apar la definire şi de parametrii globali ai proiectului.
Exista trei tipuri de domenii:
la nivel de
procedură;
la nivel de modul, privat;
la nivel de modul, public.
la nivel de modul, privat;
la nivel de modul, public.
Nivelul procedură - O variabilă sau constantă definită într-o
procedura este vizibilă doar în procedura respectivă.
Nivel de modul, privat - Variabilele şi
constantele definite la nivel de modul (în secţiunea Declarations) sunt Private
în mod implicit, adica sunt vizibile doar în modulul respectiv. Utilizarea
clauzei Private nu este deci necesară,
dar este recomandată.
Nivel de modul, public - Variabilele
declarate la nivel de modul drept Public
sunt vizibile în toate procedurile din proiect. Procedurile sunt publice în mod
implicit, cu exceptie procedurilor de tratare a evenimentelor, care sunt Private în mod implicit.
Daca se utilizează instrucţiunea Option Private Module (în secţiunea Declarations a modulului) atunci variabilele
şi procedurile publice vor fi vizibile doar în proiectul curent.
Niciun comentariu:
Trimiteți un comentariu