Variabilele, simple sau tablou, se definesc prin instructiunile Dim, Private, Public, ReDim sau Static. Numele unei variabile trebuie sa respecte regulile generale de formare a identificatorilor, tipul variabilei poate fi definit explicit (prin clauza As type) sau implicit (ca Variant).
În cazul în care modulul contine instructi 424i87e unea Option Explicit cu sintaxa
Option Explicit
si care trebuie sa apara înaintea oricarei proceduri din modul, toate variabilele trebuie sa fie declarate prin instructiunile mentionate. Lipsa instructiunii Option Explicit permite ca variabilele sa fie definite acolo unde este nevoie de ele prin simpla mentionare a unui nou identificator, tipul lor fiind stabilit implicit. Aceasta ultima posibilitate poate produce erori greu detectabile.
Sintaxa instructiunilor de declarare a variabilelor este urmatoarea si se observa asemanarea clauzelor.
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]
varname — numele variabilei (obligatoriu).
subscripts — dimensiunile tabloului de date (daca se declara o variabila tablou). Pot exista pâna la 60 de indici, separati prin virgule, declararea dimensiunilor pentru un indice fiind de forma
[lower To] upper
Limita inferioara este, implicit, 0, dar poate fi controlata prin instructiunea Option Base.
Daca nu se indica limitele indicilor (dar parantezele sunt prezente), se defineste o variabila tablou dinamica (nu si prin Static) ale carei dimensiuni pot fi precizate/redefinite prin instructiunea ReDim.
New — permite crearea implicita a unui obiect (atunci când se declara o variabila de tip obiect). O noua instanta a obiectului este creata la prima referinta a variabilei definite. Clauza nu poate sa apara la declararea variabilelor de tipuri intrinseci si nici la declararea instantelor obiectelor dependente.
type — tipul variabilei definite: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (nesuportat înca), Date, String (pentru siruri cu lungime variabila), String * length (pentru siruri cu lungime fixa), Object, Variant, tip utilizator sau tip de obiect.
Daca se definesc mai multe variabile într-o instructiune, definitiile se separa prin virgula iar clauza de tip nu este extinsa si la variabilele definite ulterior.
Desi toate instructiunile permit declararea unor variabile (simple sau tablou), fiecare instructiune are un efect distinct în ceea ce priveste vizibilitatea variabilelor si persistenta valorilor.
Dim x As Double, ColtStanga As Integer
Private I, J As Long
Static Venit As Currency, NumPren As String
Dim Retineri(5) As Currency
Public indicatori(10) As Byte
Dim matrice(1 To 3, 100 To 200) As String
Public fntScris As Font
Dim appWD As Word.Application
Proceduri
Printr-o procedura se întelege, similar altor limbaje de programare, o multime de instructiuni care este identificata printr-un nume si care se executa unitar printr-un singur apel. Ar trebui, pentru claritatea programului, ca o procedura sa efectueze o prelucrare unitara identificabila în logica programului.
Exista trei tipuri principale de proceduri: Sub, Function si Property. Ultimul tip este caracteristic definirii unui obiect si va fi prezentat ulterior. O procedura de tip Sub poate primi si transmite informatii prin intermediul unor variabile publice sau/si a unor parametri. Numele procedurii nu are atasata nici o valoare. O procedura de tip Function se deosebeste prin aceea ca numele procedurii are atasata o valoare (valoarea functiei) si poate fi utilizat ca orice alta variabila din proiect.
Observatie. Orice instructiune executabila trebuie sa apartina unei proceduri. Declaratiile pot sa apara si în afara procedurilor, la nivel de modul.
|