Sunteți pe pagina 1din 166

Universitatea OVIDIUS Constana

Departamentul ID-IFR
Facultatea de tiine Economice
Specializarea Economia Comerului, Turismului i Serviciilor
Forma de nvmnt ID
Anul de studiu I
Semestrul 1
Valabil ncepnd cu anul universitar 2009-2010

Caiet de Studiu Individual


pentru

Bazele informaticii

Coordonator disciplin: Prof. univ. Cosma Emil

Cuprins

Bazele informaticii
CUPRINS
Unitate Titlul
de
nvare
INTRODUCERE
1

3 i 4

Pagina
1
3

O introducere n calculul tabelar


Obiectivele Unitii de nvare Nr. 1
1.1. Programul de calcul tabelar Excel
1.2. Editarea documentelor Excel
1.3. Funcii Excel
1.4. Rezumat
Lucrare de verificare Unitate de nvare Nr. 1

4
5
6
8
9
10

Editarea foilor electronice de calcul

11

Obiectivele Unitii de nvare Nr. 2


2.1. Inserare i tergere pentru linii i coloane
2.2. Ajustarea dimensiunilor liniilor i a coloanelor
2.3. Referine absolute i relative de celul
2.4. Copiere, tiere, alipire de celule
2.5. Formatarea coninutului celulelor
2.6. Rezumat
Lucrare de verificare Unitate de nvare Nr. 2

12
14
15
15
16
17
20
21

Calcule financiare. Tabele de decizie

24
25
25
26
26
27
27
28
28
30
31

Obiectivele Unitii de nvare Nr. 3 i 4


3.1. Despre funcii financiare
3.1.1. Funcia FV
3.1.2. Funcia PV
3.1.3. Funcia NPER
3.1.4. Funcia PMT
3.1.5. Funcia IPMT
3.2. Tabele de decizie
3.3. Rezumat
Lucrare de verificare Unitate de nvare Nr. 3 i 4

Bazele informaticii

Cuprins

5 i 6

Tabele de date. Grafice

34

Obiectivele Unitii de nvare Nr. 5 i 6


5.1. Tabele de date
5.1.1. tergere (Delete) i inserare (Insert)
5.1.2. Sortare i filtrare (Sort & Filter)
5.2. Grafice (diagrame)
5.3. Rezumat
Lucrare de verificare Unitate de nvare Nr. 5 i 6

35
35
36
38
42
44
45

Macrocomenzi

47

Obiectivele Unitii de nvare Nr. 7


7.1. nregistrarea unei macrocomenzi VBA
7.2. Rezumat
Lucrare de verificare Unitate de nvare Nr. 7

48
48
55
55

Editorul VBA

56

Obiectivele Unitii de nvare Nr. 8


8.1. Lansarea editorului VBA
8.2. Mediul de editare VBA
8.3. Module VBA
8.3.1. Identificarea modulelor
8.3.2. Rularea modulelor
8.3.3. Save i Open pentru aplicaiile Office i modulele
asociate
8.3.4. Sistemul de asisten la scrierea codului
8.3.5. Proceduri
8.3.5.1. Proceduri Sub
8.3.5.2. Proceduri Function
8.4. Formulare VBA
8.4.1. Crearea unui formular
8.4.2. Rularea unui formular
8.4.3. Controale OLE
8.5. Documente Office active
8.5.1. Controale ActiveX
8.5.2. Proceduri eveniment
8.6. Rezumat
Lucrare de verificare Unitate de nvare Nr. 8

57
57
57
59
59
59

Secvene de cod VBA

74

60
60
61
61
63
64
65
66
66
68
69
70
72
73

75
75
76
76
79
79

Obiectivele Unitii de nvare Nr. 9


9.1. Cuvintele
9.2. Comentariile
9.3. Tipuri de date
9.4. Expresiile
9.4.1. Operanzi
Bazele informaticii

II

Cuprins

10

11

12

9.4.2. Operatori
9.4.3. Ordinea de evaluare a expresiilor
9.5. Constante i variabile
9.5.1. Constante
9.5.2. Variabile
9.6. Instruciunea de atribuire
9.7. Liste (arrays) de variabile
9.7.1. Liste dinamice
Lucrare de verificare Unitate de nvare Nr. 9

79
80
81
81
82
83
84
85
86

Funcii VBA predefinite

89

Obiectivele Unitii de nvare Nr. 10


10.1. Funcia Format
10.2. Funcii matematice
10.3. Funcii financiare
10.4. Funcii pe iruri de caractere
10.5. Funcii pentru dat calendaristic i timp
10.6. Funcii pentru conversii
10.7. Funcii pentru testarea tipului de date
Lucrare de verificare Unitate de nvare Nr. 10

90
90
91
91
93
93
94
94
95

Structuri de control VBA

100

Obiectivele Unitii de nvare Nr. 11


11.1. Structurile de control
11.1.1. Instruciunea de selecie simpl
11.1.2. Instruciunea de selecie multipl
11.1.3. Structurile repetitive
11.1.3.1. Ciclul Do While (cu test iniial)
11.1.3.2. Ciclul Do Until (cu test iniial)
11.1.3.3. Ciclurile Do While i Do Until cu test final
11.1.3.4. Ciclul For Next, cu numr finit de pai
11.2. Lucrare de verificare Unitate de nvare Nr. 11

101
102
102
103
107
107
108
110
110
111

Module VBA

112

Obiectivele Unitii de nvare Nr. 12


12.1. Variabile locale (private)
12.2. Variabile publice (globale)
12.3. Variabile private
12.4. Transmiterea argumentelor prin valoare i prin referin
12.5. Funcii recursive
Lucrare de verificare Unitate de nvare Nr. 12

113
113
113
114
117
118
119

Bazele informaticii

III

Cuprins

13 i 14

Formulare VBA

121

Obiectivele Unitii de nvare Nr. 13 i 14


13.1. Formulare (form-uri)
13.2. Proprieti i proceduri eveniment
13.3. Proprietatea Caption
13.4. Proprietatea StartUpPosition
13.5. Proprietatea Height i Width
13.6. Proprietile ForeColor i BackColor
13.7. Utilizarea controalelor
13.7.1.
CommandButton
13.7.2.
Label
13.7.3.
TextBox
13.7.4.
CheckBox
13.7.5.
Frame
13.7.6.
OptionButton
13.7.7.
ListBox
13.7.8.
ComboBox
13.7.9.
Image
13.7.10.
SpinButton
13.8. Modificarea proprietilor din cod
Lucrare de verificare Unitate de nvare Nr. 13 i 14

122
124
125
126
128
128
129
130
131
131
134
137
139
140
142
145
148
149
150
155

BIBLIOGRAFIE

161

Bazele informaticii

IV

Introducere

Bazele informaticii
INTRODUCERE

Stimate cursant,

nc de la nceput doresc s i urez bun venit n domeniul informaticii. Acest curs


se adreseaz att cursanilor cu un grad mai mare de familiarizare cu universul
calculatoarelor ct i cursanilor nceptori. Exist totui anumite cunotine
specifice necesare parcurgerii acestui curs i anume:
Cunoaterea modalitii de organizare i manipulare a informaiei n format
electronic (sistem de fiiere, directoare, copierea, mutarea i
deschiderea fiierelor).
Operaii de baz utiliznd sistemul de operare Microsoft Windows
(pornirea unei sesiuni de lucru, deschiderea unei aplicaii, comutarea ntre
mai multe aplicaii ce ruleaz simultan, noiunea de desktop i noiunea de
shortcut, nchiderea n mod corespunztor a sistemului),
Utilizarea tastaturii PC standard i a mouse-ului (combinaii de taste,
utilizarea tastelor speciale, right i left click pentru mouse)
Manualul de fa este organizat n dou pri (programare tabelar - Excel
i programare n limbajul Basic - VBA) cu 14 uniti de nvare, fiecare dintre
aceste uniti coninnd o parte de prezentare a subiectului tratat, o parte de exerciii
practice i rezolvrile acestora.

Exerciiile practice sunt marcate cu simbolul

Spor la nvat i succes!

Bazele informaticii

Introducere

Programele de calcul tabelar (foi electronice de calcul) se adreseaz


utilizatorilor neprogramatori ce prelucreaz date statistice, financiare, tiinifice,
fiind, datorit funciilor predefinite puse la dispoziie, un instrument flexibil i
uor de nvat. Foile electronice de calcul permit cele mai diverse operaii asupra
informaiilor de pia, preiau datele colectate i pstrate n fiiere sau date captate
prin intermediul reelelor de transmisie. Cele mai multe studii de pia care se
comercializeaz la ora actual n lume, se livreaz n fiiere tip foaie electronic
de calcul.
Un program de calculator este o list de instruciuni care spun unui
calculator ce sarcini are de ndeplinit. Calculatorul ruleaz instruciunile pn cnd
ajunge la sfritul programului. Fiecare linie dintr-un program este, de obicei, o
singur comand pe care calculatorul trebuie s o execute, cum ar fi adunarea a
dou numere. Cu o succesiune de comenzi calculatorul poate realiza mai multe:
bilanul unui carnet de cecuri, tiprirea unui document, desenarea de imagini.
Programul de calculator (program surs) poate fi scris n limbaje diferite.
Calculatoarele neleg numai limbajul main (program obiect) un ir de bii.
Limbajele de programare ca BASIC (limbaj procedural simplu, creat n 1964) permit
oamenilor s scrie programe ntr-un limbaj asemntor limbii engleze. n orice
caz, toate programele pot s fie citite de oameni i trebuie s fie convertite n
limbaj main, pentru a putea fi interpretate de calculator. Adesea, numele
limbajului BASIC este ortografiat cu litere mici (Basic). Cu toate acestea, BASIC
i-a fcut de fapt debutul ca un acronim, reprezentnd prescurtarea de la
Beginner's All-purpose Symbolic Instruction Code (codul de instruciuni simbolice
generale pentru nceptori).
Pentru a uura lectura, materialul didactic prezentat n continuare include
particulariti i elemente convenionale:
Simboluri explicative:
Simbol
Semnificaie
Atenie

Exemplu_

Bazele informaticii

Exemplu
Indicaii, meniuni
Aplicaii

Simboluri pentru descrierea sintaxei instruciunilor VBA:


elementul este opional
[]
variant
|
tip de dat
<tip>
valoarea unei constante, a unei variabile sau a unei expresii
<valoare>
<expresie> expresie oarecare
<condiie> condiie (expresie logic)

O introducere n calculul tabelar

Unitatea de nvare Nr. 1


O introducere n calculul tabelar
Cuprins
Obiectivele Unitii de nvare Nr. 1
1.1. Programul de calcul tabelar Excel
1.2. Editarea documentelor Excel
1.3. Funcii Excel
1.4. Rezumat
Lucrare de verificare Unitate de nvare Nr. 1

Bazele informaticii

Pagina
4
5
6
8
9
10

O introducere n calculul tabelar

Un program de calcul tabelar (Spreadsheets), numit i "foaie electronic


de calcul" este un produs ce cuprinde faciliti de lucru cu tabele, baze de date
i posibiliti de reprezentare grafic a foilor de calcul. Programele de calcul
tabelar se adreseaz utilizatorilor neprogramatori ce prelucreaz date statistice,
financiare, tiinifice, fiind, datorit funciilor predefinite puse la dispoziie, un
instrument flexibil i uor de nvat. De asemenea foile electronice de calcul
permit cele mai diverse operaii asupra informaiilor de pia, preiau datele
colectate i pstrate n fiiere sau date captate prin intermediul reelelor de
transmisie. Cele mai multe studii de pia care se comercializeaz la ora actual
n lume, se livreaz n fiiere tip foaie electronic de calcul.
Foaia electronic de calcul este mprit n linii i coloane i este
prevzut cu un sistem de coordonate. Coloanele sunt notate cu litere, iar liniile
cu cifre arabe (tabl de ah), interseciile liniilor i coloanelor numindu-se
celule (de exemplu celula G3 este pe coloana G linia 3). Cu ajutorul acestui
sistem de coordonate o celul este determinat n mod unic.
Fiecare celul poate conine unul din urmtoarele trei tipuri de date : un
text, un numr sau o formul. Ultimul tip este "gselnia" problemei.
Numerele aflate n celule sunt legate ntre ele prin formule, astfel nct dac se
modific coninutul unei celule, aceasta va afecta n lan multe altele. De
exemplu, dac celulele B1, B2, B3, B4, B5, conin cifre, se poate aduna
coninutul lor,
printr-o formul plasat n alt celul: B1+B2+B3+B4+B5 sau
SUM(B1:B5).
Un program de calcul tabelar ofer zeci de funcii de calcul, att
matematice, ct i financiare i statistice. Acestea pot fi interconectate dup
toate regulile matematicii, fapt ce permite descrierea unui algoritm de calcul,
utilitatea calculului tabelar fiind verificat ca valoare i funcionalitate n multe
domenii de activitate.
Instrumentele principale de lucru ale unui program de calcul tabelar sunt
tabelul i graficul. Prezentarea datelor n form tabelar i n form grafic
contribuie la redarea concentrat a informaiilor.

Bazele informaticii

O introducere n calculul tabelar

Tabelele de date trebuie s fie astfel constituite nct:


s asigure o prezentare compact a datelor numerice;
s nu fie suprancrcate cu detalii (deseori dou tabele scurte sunt
preferabile unui tabel lung);
s includ un titlu complet i clar pentru identificarea imediat a
coninutului lor;
s precizeze, dac este cazul, unitile de msur;
s indice tipul de pre (curent sau constant);
s prezinte datele sub form procentual sau ca indici, atunci cnd este
necesar un plus de claritate.

Programul de calcul tabelar Excel


Excel este un program de calcul tabelar, care face parte din familia de
utilitare Microsoft Office. Fa de Microsoft Office 2003, la Microsoft Office 2007
s-au fcut schimbri majore n interfaa acestuia (de fapt a fost refcut complet):

Meniurile i barele de instrumente tradiionale au fost nlocuite de tab-uri


(Home, Insert, Page Layout, Formulas), care includ butoane (Picture, Clip Art,
Shapes, SmartArt) grupate pe seciuni (Tables, Illustrations, Charts). n cazul
n care spaiul de lucru nu este suficient de ntins pentru a lucra eficient pe el,
minimizarea tab-urilor se realizeaz efectund dublu clic pe ele (la fel pentru
readucerea lor napoi). Funciile extinse asociate seciunilor sau butoanelor pot fi
vizualizate prin clic, cu mouse-ul, pe sgeata din dreapta acestora. Funciile
disponibile pot fi afiate i prin comenzi rapide, de exemplu Ctrl+Shift+F, n
cazul fonturilor.
Comenzile asociate opiunii File, dintr-un meniu clasic,
se obin prin acionarea butonului Office. A fost dezvoltat un
nou format pentru salvarea fiierelor (*xlsx n loc de
*xls) existnd compatibilitate cu vechile formate (Save
As, Excel 97-2003 Workbook). A devenit disponibil i
exportarea fiierelor direct n formatul PDF (Save As, Adobe
PDF).

Bazele informaticii

ButonulOffice

O introducere n calculul tabelar

n dreapta butonului Office se situeaz bara


de instrumente Quick Acces, personalizabil. Se pot
aduga, pe lng butoanele Save, Undo i Redo, o
serie de alte funcii precum Sort Ascending, Sort
Descending, Quick Print, Print Preview... prin
intermediul sgeii din dreapta acesteia.

Definirea coninutului unei foi electronice de calcul se face cu ajutorul


tastelor ordinare (litere, cifre, caractere speciale) sau prin combinaii de taste,
n pagina logic. Pagina logic este ncadrat n pagina fizic (coala de hrtie,
de obicei de format A4) prin margini (dreapta/stnga, sus/jos). La lansarea
Excel-ului cursorul se afl n poziia Home (celula A1).

Editarea documentelor Excel


Documentele Excel (Book1, Book2, sau numele fiierelor sub care au
fost salvate foile electronice de calcul) cuprind pagini (Sheet1, Sheet2, ...).
Unitatea de lucru, pe foaia electronic de calcul, fiind celula, aciunile de
editare se desfoar la nivel de celul i sunt vizualizate n linia de editare.
Coninutul curent al celulei poate fi validat dac se acioneaz tasta Enter sau
dac se iniiaz deplasarea cursorului ntr-o alt celul.
Adresaceluleiactive

Liniadeeditare

PoziiaHome

Editarea celulelor are ca scop introducerea celor trei tipuri de informaie:


text, numere, formule.
Introducerea textului presupune tastarea oricrui ir de caractere.
Alinierea textului se face la stnga celulei. Este posibil ca lungimea textului
introdus ntr-o celul s depeasc capacitatea celulei, n acest caz textul
aflat n exces fiind afiat peste celulele urmtoare dac acestea nu sunt vide

Bazele informaticii

O introducere n calculul tabelar

(n caz contrar se afieaz coninutul acestora).


Introducerea numerelor se face cu ajutorul cifrelor, semnelor + i - (plus
i minus) , virgulei zecimale (,) i eventual a exponentului (E). Numerele
sunt implicit aliniate la dreapta. Dac un numr trebuie s fie tratat ca text,
este necesar ca mai nti s fie tastat un apostrof (exemplu: '20765).
Introducerea formulelor trebuie s nceap prin tastarea semnului
=(egal). Expresiile de calcul pot s conin: operatori, constante,
identificatori de celule, nume de funcii pentru calcul i sunt alctuite
conform regulilor algebrice.
Constantele conin valori sub form de numere ntregi (ex: 1, -23),
numere reale n format fix (ex: 22,31, -12,234), numere reale n
format exponenial (ex: 12,76E3) sau date procentuale (ex: 125%).
Identificatorii de celule permit referirea acestora (ex: A1, D10,
A1:E8).
Funciile de calcul pot fi :
- financiare
- statistice
- matematice i trigonometrice
- logice
Operatorii, mpreun cu ordinea lor de evaluare sunt descrii n
urmtoarea tabel :
Operator

Nivel

^ (exponenial)

+ (pozitiv),

- (negativ)

* (nmulire), / (mprire)

+ (adunare), - (scdere)

= (egal), <> (diferit)

< (strict mai mic)


> (strict mai mare)
<= (mai mic sau egal cu)

Tastele utilizate cel mai frecvent pentru deplasarea cursorului sunt:


Tasta

sau
sau
Home

Bazele informaticii

Micarea cursorului
cu o celul, la stnga sau la dreapta
cu o linie, mai sus sau mai jos
pe prima celul din linie

O introducere n calculul tabelar

PgUp
PgDn
Ctrl+Home
Ctrl+End

la nceputul ferestrei precedente

Ctrl+G sau F5

la celula specificat

la nceputul ferestrei urmtoare


n colul din stnga sus al foii de calcul
n colul din dreapta jos al foii de calcul

Funcii Excel
Funciile Excel (de 0, 1 sau mai multe argumente) pot fi introduse
textual, dar este de preferat a se utiliza casetele de editare a lor (se apas
butonul
):

Implicit sunt afiate cele mai recent utilizate funcii (Most Recently Used)
dar se pot selecta i funcii din categoria dorit (All, Financial, Date & Time )
Exemplu____________________________________________________________________________________
Caseta de introducere a argumentelor funciei IF (dac):

___________________________________________________________________________________Exemplu

Bazele informaticii

O introducere n calculul tabelar

Comenzile mediului de editare Excel.


Conceptul de foaie electronic de calcul.
Editarea textului.
Editarea informaiei numerice.
Editarea formulelor de calcul.
Introducerea funciilor.
Definirea domeniilor de celule.

1. Lansai programul de calcul tabelar Excel.


2. Consultai coninutul tab-urilor.
3. Familiarizai-v cu folosirea Help-ului (tasta F1 sau butonul
din colul
dreapta sus al ecranului).
4. S se editeze urmtorul document, s se salveze i s se previzualizeze:

n celula F5, pentru calculul mediei aritmetice, se va introduce formula:


=AVERAGE(A4:F4)

Bazele informaticii

O introducere n calculul tabelar

5. S se editeze urmtoarea foaie electronic de calcul a rdcinilor ecuaiei de


gradul 2, pentru diferite valori ale coeficienilor a, b, c.

n celula E3, pentru calculul valorii delta, se va nscrie formula:


=B4^2-4*B3*B5
(b2 - 4ac)

n celulele E4, E5 pentru determinarea rdcinilor x1, x2 se vor nscrie


formulele de calcul, coninnd funciile IF (dac) i SQRT (radical). Funcia
IF aparine categoriei de funcii Logical (sau All).

=IF(E3>=0;(-B4+SQRT(E3))/(2*B3);F2)
=IF(E3>=0;(-B4-SQRT(E3))/(2*B3);F2)
avnd semnificaia: dac delta 0 atunci afieaz rezultatul real, n caz
contrar afieaz mesaj de rezultat complex

Bazele informaticii

10

Editarea foilor electronice de calcul

Unitatea de nvare Nr. 2


Editarea foilor electronice de calcul
Cuprins
Obiectivele Unitii de nvare Nr. 2
2.1. Inserare i tergere pentru linii i coloane
2.2. Ajustarea dimensiunilor liniilor i a coloanelor
2.3. Referine absolute i relative de celul
2.4. Copiere, tiere, alipire de celule
2.5. Formatarea coninutului celulelor
2.6. Rezumat
Lucrare de verificare Unitate de nvare Nr. 2

Bazele informaticii

Pagina
12
14
15
15
16
17
20
21

11

Editarea foilor electronice de calcul

Editarea coninutului unei celule selectate, se poate realiza prin


apsarea tastei F2 sau prin poziionare direct, cu ajutorul mouse-ului, n
linia de editare numit i formula bar, folosind urmtoarele taste:
Tasta
sau

Aciune
salt cu un caracter, la stnga sau la dreapta

Home
End
Backspace
Delete

salt la nceputul liniei de editare

Shift + sau

selecie unul sau mai multe caractere

salt la sfritul liniei de editare


terge caracterul din stnga cursorului
terge caracterul de pe poziia cursorului

Coninutul curent al celulei poate fi validat dac se acioneaz tasta


Enter sau dac se iniiaz deplasarea cursorului ntr-o alt celul. Deoarece
acionarea tastei Enter determin trecerea cursorului cu o celula mai jos,
pentru a introduce mai multe rnduri n aceeai celul este utilizat
combinaia de taste Alt+Enter . Tasta ESC are rolul, ca i n alte medii de
editare, de anulare a operaiei curente.
Punerea n eviden (highlighting) a unui bloc (domeniu) de celule se
face n vederea executrii de ctre Excel a unei aciuni ulterioare asupra
acestuia (copiere, tergere, construirea graficelor, etc). Selecia unui bloc se
realizeaz folosind tastele sgei sau cu ajutorul mouse-ului. Un bloc de celule
poate fi alctuit dintr-o singur celul, dintr-o linie de celule, dintr-o coloan de
celule sau oricare alt poriune dreptunghiular a foii de calcul. Specificarea
unui bloc de celule se poate face prin precizarea primei i ultimei celule din
bloc (Ex. B3:B7, D2:E7).
Exemplu____________________________________________________________________________________
Selectarea domeniului B2:D3

___________________________________________________________________________________Exemplu
Bazele informaticii

12

Editarea foilor electronice de calcul

Celule vecine pot fi contopite n una singur utiliznd


butonul
din tab-ul Home, seciunea Alignment
(Merge/Unmerge):

Exemplu____________________________________________________________________________________

____________________________________________________________________________________Exemplu
Principalul scop al editrii foilor electronice fiind acela al efecturii unor
calcule, trebuie respectate regulile sintactice de scriere a relaiilor de calcul.
n foarte multe relaii de calcul sunt incluse i funcii. Excel ofer posibilitatea
efecturii unor calcule diverse prin funcii de calcul (financiare, statistice,
matematice i trigonometrice, pentru
baze de date, etc).
Caseta de
introducere a argumentelor unei funcii este afiat prin acionarea butonului
asociat liniei de editare.
Funciile de calcul financiar dau posibilitatea efecturii unor calcule
privind rata dobnzii, valoarea viitoare sau prezent a unei investiii raportate
la un numr de perioade de timp. Valorile monetare sunt introduse din
postura de debit/credit, prin convenie cu +/- (de menionat c toate valorile
cu semnificaie de pli sunt valori negative). Argumentele marcate cu bold
(n caseta de specificare a argumentelor) sunt obligatorii a fi introduse,
celelalte fiind opionale. Valorile argumentelor pot rezulta i prin editarea
unor relaii de calcul.
Exemplu____________________________________________________________________________________
Funcia NPER (Rate rata dobnzii; Pmt plata periodic; Pv valoarea
prezent - sold), returneaz numrul de perioade necesare pentru a obine un
anumit sold cu rata i dobnda specificate. Valoarea returnat este de tip real,
de aceea, aceasta trebuie, eventual, rotunjit la o valoare ntreag (cu funcia
Round). Se poate observa prezena unor valori negative (-B1, -B3) dar i a
relaiei B2/12 n postur de argument:

Bazele informaticii

13

Editarea foilor electronice de calcul

Funcia FV (rata dobnzii; numrul de pli; plata periodic), calculeaz


valoarea de viitor a unei investiii, cu pli periodice egale, pentru perioade
egale de timp, la o valoare dat a ratei dobnzii. Argumentele Rate, Nper, Pmt
ale acestei funcii sunt obligatorii (n caseta funciei sunt marcate bold), iar
argumentele Pv, Type sunt opionale.

____________________________________________________________________________________Exemplu

Insert (inserare), Delete (tergere) pentru linii i coloane

Inserarea liniilor sau a coloanelor se face ntotdeauna before (naite) de


linia curent sau coloana curent:
din tab-ul Home, seciunea Cells:

cu mouse-ul, prin clic dreapta pe linia de marcaj a


liniilor (coloanelor):

Bazele informaticii

14

Editarea foilor electronice de calcul

Ajustarea dimensiunilor liniilor i a coloanelor


Prin limea coloanei se precizeaz numrul de caractere coninute de o
celul aparinnd acesteia. Limea implicit a unei coloane este de 8,43
caractere normale. Dac o celul conine text n exces acesta este afiat peste
celulele urmtoare, cu condiia ca acestea s nu fie vide.

Datele numerice care depesc ca numr de caractere limea celulei


sunt afiate n format exponenial iar dac i acest mod de afiare nu
este posibil se tiprete irul de caractere ###### (depire de
format !).
Schimbarea dimensiunii unei coloane/linii se poate realiza utiliznd
mouse-ul, prin culisarea liniilor gril pentru coloane i rnduri (se ine apsat
butonul stng al mouse-ului).
Exemplu____________________________________________________________________________________
Schimbarea dimensiunii unei coloane:

_____________________________________________________________________________Exemplu

Referine absolute i relative de celul


Celulele pot fi referite n dou moduri, modurile de referire rezultnd din
tabelul urmtor :
Referire
coloan relativ, linie relativ
coloan absolut, linie absolut
coloan relativ, linie absolut
coloana absolut, linie relativ

Bazele informaticii

Exemple

A2
$A$2
A$2
$A2

15

Editarea foilor electronice de calcul

O referire absolut nseamn o poziie fix n foaia de calcul, poziie care


nu este afectat de modificri n foaia de calcul. Modificrile din foaia de calcul
(tergeri de linii i coloane) se reflect i n referinele relative.

Copierea formulelor (procedeele de copiere vor fi tratate ulterior)


dintr-o celul de calcul n alt celul de calcul este influenat de modul
de referire a celulelor. Toate referirile relative sunt "translatate", n timp
ce referirile absolute rmn nemodificate.

Copy (copiere), Cut (tiere), Paste (alipire)


Copierea i mutarea coninutului celulelor se realizeaz n patru pai:
1.
2.
3.
4.

Se selecteaz celula (sau domeniul de celule).


Copy (sau Cut).
Se stabilete celula (sau domeniul de celule) receptoare.
Paste.

Pentru realizarea
posibiliti:

pailor

amintii

anterior

sunt

oferite

urmtoarele

din tab-ul Home, seciunea Clipboard se selecteaz butoanele

Copy,

Cut sau

Din combinaii de taste:

Paste:
Ctrl+C
Ctrl+X
Ctrl+V

Copy
Cut
Paste

Prin clic dreapta pe elementul selectat, din meniul


vertical, se alege Copy, Cut sau Paste:

Bazele informaticii

16

Editarea foilor electronice de calcul

Dac, n loc de Paste se selecteaz Paste Special posibilitile de


alipire sunt extinse. De exemplu, dac sursa copiat este o formul se
poate obine, prin copiere, doar valoarea (Values), fr a se efectua
translatarea formulei.

Mouse-ul se plaseaz n colul dreapta jos al zonei selectate acesteia,


astfel nct cursorul i schimb forma n simbolul . inndu-se apsat
butonul drept se face deplasarea mouse-ului n zona receptoare, la
eliberarea lui obinndu-se rezultatul copierii.
Exemplu____________________________________________________________________________________

Copierea formulei din E1 (C1*D1) n E2 determin translatarea (devine C2*D2):

Copierea formulei din E1 ($C$1*$D$1) n E2 se realizeaz fr translatare


(rmne $C$1*$D$1):

Bazele informaticii

17

Editarea foilor electronice de calcul

La copierea celulei E1 prin Paste Special, Values n E2 se reproduce


valoarea 56:

Copierea celulei E1, n E2, utiliznd mouse-ul:

____________________________________________________________________________________Exemplu

Formatarea coninutului celulelor

Modul de afiare al coninutului celulelor (afiarea numerelor Number,


alinierea Alignment, fontul Font, aspectul liniilor de bordare Border,
umplerea Fill, ) poate fi schimbat n funcie de tipul informaiei pe care-l
conine:

Bazele informaticii

18

Editarea foilor electronice de calcul

Prin apsarea butonului sgeat din dreapta seciunilor tab-ului Home.


Prin clic dreapta pe zona selectat, Format Cells .
Din combinaie de taste Ctrl+Shift+F.

Pentru numere se poate utiliza separatorul punct (Use 1000


separator) sau numrul de zecimale cu care se face afiarea acestora
(Decimal places). Un tip foarte utilizat de afiare a numerelor este cel
procentual (Percentage, exemplu: 25%) sau monetar (Currency, exemplu:
23,45 lei).

Formatul celulelor se pstreaz. Dac modul de afiare a valorilor


coninute n celule trebuie schimbat se va aciona n consecin. De
exemplu dac ntr-o celul se nscrie valoarea 14% formatul celulei va fi

Percentage i orice nou valoare numeric nscris va fi afiat prin


adugarea simbolului %.

Cele mai multe funcii financiare calculeaz valori monetare, ca urmare


formatul de afiare stabilit va fi Currency.

Bazele informaticii

19

Editarea foilor electronice de calcul

Atributele textului, afiat n celule, pot fi fixate i utiliznd butoane:


Font: bold, italic, subliniat

bordarea (Border) celulelor

umplere (Fill), culoarea fontului

alinierea coninutului
tipul fontului i mrimea

Editarea coninutului unei celule


Contopirea celulelor
Editarea funciilor de calcul financiar
Inserarea liniilor i a coloanelor
Ajustarea dimensiunii liniilor i a coloanelor
Referine relative i absolute de celule
Copiere i mutare
Formatarea celulelor

Bazele informaticii

20

Editarea foilor electronice de calcul

1. Pentru comercializarea mrfurilor se folosesc documente justificative cum ar


fi factura. S se editeze urmtoarea factur folosind posibilitile de calcul
oferite de Excel:

Celulele D1:E1, B12:C13, D12:E13 sunt contopite.


Denumirile din capul de tabel sunt scrise pe dou rnduri (Alt+Enter
pentru rnd nou n interiorul celulei).
n celula E4 este introdus funcia TODAY.
Valoare (Pret Unitar * Cantitate) i Valoare TVA (Valoare * 19%) se vor
calcula doar pentru primul produs (=E8*F8, =G8*19%), pentru restul
produselor formulele se pot copia (de exemplu utiliznd mouse-ul).
Sumele totale se vor calcula prin acionarea butonului
din tab-ul Home.
Se vor respecta modalitile de bordare (Border) i umplere (Fill).

Bazele informaticii

21

Editarea foilor electronice de calcul

2. tiind suma lunar care se poate investi i rata dobnzii oferit de o banc
oarecare s se calculeze cte depuneri sunt necesare pentru a se atinge
soldul propus:

Singurele valori care se introduc de la tastatur (datele de intrare) sunt cele


din celulele B1 (format Currency), B2 (format Percentage), B3 (format
Currency), restul valorilor se calculeaz.
Numrul de perioade necesar atingerii soldului propus de 1.500 lei prin
depuneri de 100 lei, cu dobnda 13% se calculeaz n celula E1 cu funcia
NPER. Rezultatul, rotunjit n E2 (14 depuneri), intr n calculul soldului final
(E3), prin funcia FV.

Formule:

E1
E2
E3
A6
B6
C6
D6
E6
A7

Bazele informaticii

:
:
:
:
:
:
:
:
:

=-NPER(B2/12;-B1;-B3)
=ROUND(E1;0)
=FV(B2/12;E2;-B1)
=1
=D6
=0
=$B$1
=D6
=A6+1

22

Editarea foilor electronice de calcul

B7
C7
D7
E7

:
:
:
:

=B6+C7+D7
=B6*$B$2/12
=$B$1
=E6+D7

Coninutul celulelor din domeniul A8:E19 se va obine prin copierea (cu


mouse-ul) domeniului A7:E7 (calculele din linia cu numrul 2 din tabel se
repet).
Valorile din interiorul tabelului sunt afiate cu dou zecimale i cu separatorul
punct (Decimal places, Use 1000 separator).

Bazele informaticii

23

Calcule financiare. Tabele de decizie

Unitatea de nvare Nr. 3 i 4


Calcule financiare. Tabele de decizie
Cuprins
Obiectivele Unitii de nvare Nr. 3 i 4
3.1. Despre funcii financiare
3.1.1. Funcia FV
3.1.2. Funcia PV
3.1.3. Funcia NPER
3.1.4. Funcia PMT
3.1.5. Funcia IPMT
3.2. Tabele de decizie
3.3. Rezumat
Lucrare de verificare Unitate de nvare Nr. 3 i 4

Bazele informaticii

Pagina
25
25
26
26
27
27
28
28
30
31

24

Calcule financiare. Tabele de decizie

Despre funcii financiare


Funciile financiare efectueaz calcule obinuite pentru afaceri, ca de pild
determinarea plii pentru un mprumut, valoarea viitoare sau valoarea net
actualizat a unei investiii i valorile obligaiunilor sau cupoanelor.
Argumentele comune pentru funciile financiare includ:

Valoarea viitoare (Fv) valoarea investiiei sau mprumutului


dup ce s-au efectuat toate plile.
Numrul de perioade (Nper) numrul total de pli sau perioade
ale unei investiii.
Plat (Pmt) suma pltit periodic pentru o investiie sau
mprumut.
Valoarea actualizat (Pv) valoarea unei investiii sau a unui
mprumut la nceputul perioadei de investiie. De exemplu, valoarea
actualizat a unui mprumut este capitalul de baz care este
mprumutat.
Rata (Rate) rata dobnzii sau rata de actualizare pentru un
mprumut sau o investiie.
Tip (Type) intervalul la care sunt efectuate plile n timpul
perioadei de plat, ca de pild la nceputul unei luni sau la sfritul
acesteia.

Unele funcii financiare se folosesc pentru anuiti. O anuitate const


dintr-o serie de pli constante efectuate pe o perioad continu (de
exemplu,

un

mprumut

pentru

un

autoturism

sau un

mprumut

ipotecar).

n funciile de anuiti, sumele pltite, cum ar fi depozitele pentru


economii, sunt reprezentate de numere negative; sumele primite, cum ar fi
un cec de dividente, sunt reprezentate prin numere pozitive.

Bazele informaticii

25

Calcule financiare. Tabele de decizie

Se recomand consecven n legtur cu unitile utilizate pentru


specificarea argumentelor Rate i Nper (de exemplu, pentru pli lunare la un
mprumut pe un numr de ani, rata dobnzii va fi mprit ntotdeauna cu 12,
iar Nper va fi nmulit cu 12 i cu numrul de ani).

Funcia FV
Funcia FV ntoarce valoarea viitoare
a unei investiii bazate pe pli
periodice i constante i o rat a
dobnzii constant.

Rate - rata dobnzii pe o perioad;


Nper - numrul total de perioade de plat dintr-o anuitate;
Pmt - plata efectuat periodic, neschimbat pe durata anuitii (n mod
tipic, argumentul Pmt conine capital i dobnd, dar nu i alte taxe i
datorii);
Pv - valoarea actualizat, sau suma global pe care o serie de pli
viitoare o reprezint n momentul actual (dac argumentul Pv este omis,
se consider zero);
Type - este 0 sau 1 i indic momentul cnd sunt datorate plile (dac
Type este omis, se consider 0).
argumentele Pv i Type sunt opionale.
Funcia PV

PV ntoarce valoarea actualizat a


unei investiii. Valoarea actualizat
este suma total pe care o reprezint
n prezent o serie de pli viitoare.
De exemplu, pentru mprumut, suma
mprumutat
este
valoarea
actualizat pentru creditor.

Rate - rata dobnzii pe perioad;


Nper - numrul total de perioade de plat dintr-o anuitate;
Pmt - plata efectuat periodic, neschimbat pentru toat durata anuitii
(n mod tipic, argumentul Pmt include capital de baz i dobnd, dar nu

Bazele informaticii

26

Calcule financiare. Tabele de decizie

i alte onorarii sau taxe);


Fv - este valoarea viitoare, sau balana n numerar la care se ajunge
dup efectuarea ultimei pli (dac Fv este omis, se presupune a fi 0 valoarea viitoare a unui mprumut, de exemplu, este 0);
Type - este 0 sau 1 i indic momentul cnd sunt datorate plile.
argumentele Pv i Type sunt opionale.
Funcia NPER

Funcia NPER furnizeaz numrul de


perioade pentru o investiie bazat pe
pli periodice constante i o rat
constant a dobnzii.

Rate - rata dobnzii pe o perioad;


Pmt - plata fcut n fiecare perioad, neschimbat pe parcursul anuitii
(tipic, Pmt conine capital i investiii, dar nu i alte onorarii sau taxe);
Pv - valoarea actualizat, sau valoarea global pe care ar reprezenta-o n
acest moment o serie de pli viitoare;
Fv - este valoarea viitoare, sau o balan n numerar, obinut dup
efectuarea ultimei pli (dac Fv este omis, se presupune a fi egal cu 0
- valoarea viitoare a unui mprumut, de exemplu, este 0).
argumentele Fv i Type sunt opionale.
Funcia PMT

PMT calculeaz plata pentru un


mprumut bazat pe pli constante i
o rat constant a dobnzii.

Rate - rata dobnzii pentru mprumut;


Nper - numrul total de pli pentru mprumut;
Pv - valoarea actualizat, sau suma total pe care valoreaz n prezent o
serie de pli viitoare, denumit i capital de baz;
Fv - valoarea viitoare, sau balana n numerar la care se ajunge dup

Bazele informaticii

27

Calcule financiare. Tabele de decizie

efectuarea ultimei pli (dac Fv este omis, se presupune a fi zero, ceea


ce nseamn c valoarea viitoare a mprumutului este zero;
Type - este 0 sau 1 i indic momentul cnd sunt datorate plile.
argumentele Fv i Type sunt opionale.
Funcia IPMT

IPMT ntoarce plata dobnzii pentru o


perioad dat, pentru o investiie
bazat pe pli periodice constante i
o rat constant a dobnzii.

Rate - rata dobnzii pentru mprumut;


Per - perioada pentru care se calculeaz dobnda cuprins n intervalul
[1, Nper];
Nper - numrul total de perioade de plat dintr-o anuitate;
Pv - valoarea actualizat, sau valoarea global pe care ar reprezenta-o n
acest moment o serie de pli viitoare;
Fv - valoarea viitoare, sau balana n numerar obinut dup efectuarea
ultimei pli (dac Fv este omis, se presupune a fi egal cu 0 - valoarea
viitoare a unui mprumut, de exemplu, este 0);
argumentul Fv este opional.

n casetele de introducere a argumentelor funciilor nu este permis


folosirea separatorului punct sau a simbolului monetar (de exemplu, nu
se poate introduce 1.000, 1.000 lei sau 1000 lei, corect este: 1000).

Tabele de decizie

Un tabel de decizie este o zon de celule care arat modul n care


modificrile anumitor valori referite n formule afecteaz rezultatele formulelor.
Tabelele de decizie ofer facilitatea de a calcula variante multiple ale unei
operaii i un mod de a vizualiza i compara rezultatele (prognozarea valorilor cu
ajutorul analizei: ce se ntmpl dac - What If) - tab-ul Data, seciunea Data
Tools, butonul What-if Analysis, opiunea Data Table :
Bazele informaticii

28

Calcule financiare. Tabele de decizie

Aceste tabele de date se construiesc pe baza unei


formule avnd ca date de intrare una sau dou valori
numite celule de intrare.

Tabelele de decizie cu dou variabile (doi factori de influen)


preiau date dispuse pe linii i coloane, le trec prin formula de calcul i le afieaz
tabelar. Logica constituirii lor const n definirea unei relaii de calcul care se
scrie o singur dat dar se aplic de mai multe ori. Pentru afiarea rezultatelor
se selecteaz domeniul corespunztor al intrrilor i al rezultatelor (inclusiv
formula) dup care se completeaz casetele Row input cell i Column
input cell cu adresele celulelor de intrare pentru linii i coloane.
Exemplu____________________________________________________________________________________

Se consider relaia : a+2*b (variabilele sunt a i b).


n celula aflat n colul stnga
sus al tabelului de lucru se
definete relaia de calcul, pe date
din afara tabelului (care pot fi
chiar fictive), n dreapta i sub
aceasta se scriu datele pentru
care se vor face calculele:

Se selecteaz tabelul (inclusiv formula) i se stabilesc celule de intrare:

Bazele informaticii

29

Calcule financiare. Tabele de decizie

n interiorul tabelului se obin valorile calculate conform formulei

{Table(D1;C1)}:

____________________________________________________________________________________Exemplu

Tabelele de decizie cu o variabil (un singur factor de influen)


reprezint un caz particular al celor prezentate anterior.

Funciile de calcul financiar FV, PV, NPER, PMT, IPMT.


Tabele de decizie.

Bazele informaticii

30

Calcule financiare. Tabele de decizie

1. Exerciii
a. O persoan fizic depune 500 lei, ntr-un cont de economii, cu o dobnd
anual de 11% i i planific s mai depun cte 50 lei timp de 2 ani. Ci
bani va avea n cont la sfritul celor 24 luni (atenie, argumentul Type este
1)?
Rspuns: 1970,08 lei

b. Ca urmare a depunerii cu o dobnd anual de 15% a unei sume, o


banc returneaz lunar 400 de lei timp de ase ani. Care este valoarea
acestei sume?

Rspuns: -18.917 lei

c. Dup cte luni se va atinge un sold propus de 3 mii lei pentru depuneri
lunare de 150 lei i la o rat a dobnzii anuale de 14% ?
Rspuns: 22,907 23 luni

d. Ct trebuie s economisii lunar ca, dup 10 ani, contul n banc s fie de


1.500 lei la o dobnd lunar de 1% ?
Rspuns: -6,52 lei

e. Care este dobnda datorat dup al doilea an pentru un mprumut de


1.000 de lei, pe trei ani, la o dobnd anual de 12% ?
Rspuns: -84,438 lei

2. Returnarea unui mprumut bancar se poate realiza n pli constante (care


se determin cu funcia PMT) sau n pli variabile (valoarea
mprumutului/numrul de perioade + dobnda calculat prin IPMT). Suma
plilor constante este egal cu suma plilor variabile. S se verifice
aceast situaie pentru un mprumut de 4.000 lei returnabil n 4 luni, cu o
dobnd lunar de 2%.

Bazele informaticii

31

Calcule financiare. Tabele de decizie

Dobnda (calculat cu IPMT) scade argumentul Per ia valorile 1, 2, 3, 4.


Plile constante se calculeaz cu funcia PMT.

3. Pentru un mprumut de 32.500 de lei, se ramburseaz lunar anumite sume.


tiind c valoarea la zi a ratei dobnzii anuale este de 10% i c valoarea
maxim estimat a acesteia pentru urmtorii ani este 17% s se calculeze:
a) Plile lunare pentru diverse valori ale ratei dobnzii n situaia n care
plile pot fi ealonate pe un numr de 6, 7 sau 8 ani:

Se va construi un tabel de decizie cu dou variabile. Celula de intrare

pentru coloan este D5 iar pentru linie este D4. Formula de calcul va conine
funcia PMT - PMT(D5/12;D4*12;D3).

b) Plile lunare, mpreuna cu dobnzile aferente, pentru valori ale ratei


dobnzii mai mari de 10%:

Bazele informaticii

32

Calcule financiare. Tabele de decizie

Ca

form de calcul se poate utiliza un tabel de decizie cu o singur

variabil. Celula de intrare (pe coloan) este D5. Pentru coloana de pli se va
utiliza funcia PMT - PMT(D5/12;D4*12;D3), iar pentru dobnzi IPMT IPMT(D5/12;D4*12;D4*12;D3).

Bazele informaticii

33

Tabele de date. Grafice

Unitatea de nvare Nr. 5 i 6


Tabele de date. Grafice
Cuprins
Obiectivele Unitii de nvare Nr. 5 i 6
5.1. Tabele de date
5.1.1. tergere (Delete) i inserare (Insert)
5.1.2. Sortare i filtrare (Sort & Filter)
5.2. Grafice (diagrame)
5.3. Rezumat
Lucrare de verificare Unitate de nvare Nr. 5 i 6

Bazele informaticii

Pagina
35
35
36
38
42
44
45

34

Tabele de date. Grafice

Tabele de date
Tabelele de date reprezint un grup de date organizate tabelar, pe linii
(Rows) i pe coloane (Columns), astfel nct, principalele elemente care
definesc un tabel de date sunt:

nregistrrile (articole, records), entitatea de lucru a


tabelului de date.

Cmpurile

(fields), informaiile distincte din cadrul unei

nregistrri.

Linia

de

antet

(header

row) care permite identificarea

informaiilor cuprinse n nregistrri.


O zon dintr-un Sheet poate fi definit ca
tabel de date, devenind astfel o entitate de sine
stttoare, utiliznd tab-ul Home, seciunea Styles:

Prin acionarea butonului Format as Table se alege stilul


sub care va fi afiat tabelul (dintre stilurile predefinte). El va
primi un nume (Table1, Table2, ) vizibil n tab-ul Design,
Properties :

Denumirile din cap de tabel prin care sunt precizate cmpurile tabelului
de date trebuie s fie difereniate n mod corespunztor. Dac un titlu de
coloan trebuie scris pe mai multe rnduri se poate folosi combinaia de
taste Alt+Enter . Prin clic dreapta pe zona selecionat (Format cells,

Bazele informaticii

35

Tabele de date. Grafice

Alignment) se pot face precizri legate de afiarea textului cum ar fi:


alinierea

textului

pe

orizontal

sau

pe

vertical

(Horizontal,

Vertical),
scrierea multirnd (Wrap text),
adaptarea dimensiunii textului la dimensiunea celulei (Shrink to
fit),
contopirea mai multor celule (Merge cells),
orientarea direcional a textului (Orientation).

datele de pe coloan trebuie s fie de acelai tip;


liniile (coloanele) nu trebuie s fie goale sau ntrerupte;
datele de tip text nu trebuie s nceap cu spaiu (se pot crea probleme
la cutarea sau sortarea n list).

Exemplu____________________________________________________________________________________
Un tabel este definit ca tabel de date (a se observa apariia butoanelor
sgei, lng denumirile din capul de tabel, utilizate pentru prelucrarea
coninutului tabelului):

____________________________________________________________________________________Exemplu

tergere (Delete) i inserare (Insert)


Actualizarea unui tabel de date se poate face la nivel de celul, se pot
introduce (Insert) linii/coloane noi sau se pot elimina cele existente
(Delete).
Inserarea de noi linii i coloane depinde de poziia cursorului n tabel i
este edificat, de obicei, prin clic dreapta, cu mouse-ul, i alegerea opiunii
Insert:

Bazele informaticii

36

Tabele de date. Grafice

Exemplu____________________________________________________________________________________

Inserarea unei linii (Table Rows Above):

Inserarea unei coloane (Table Columns to the Left):

____________________________________________________________________________________Exemplu

tergerile de linii i coloane se realizeaz, de asemenea, prin clic dreapta


cu mouse-ul i alegerea opiunii Delete :

Exemplu____________________________________________________________________________________

tergerea unei linii (Table Rows) linia a doua din tabelul anterior:

Bazele informaticii

37

Tabele de date. Grafice

tergerea unei coloane (Table Columns) coloana a doua:

___________________________________________________________________________________Exemplu

Sortare i filtrare (Sort & Filter)

De cele mai multe ori datele trebuie prelucrate ntr-o ordine diferit de
cea n care au fost introduse n tabelul de date. Procedeul de ordonare a
tabelelor de date (selecie pe vertical), dup diferite criterii, este realizat pe
nivele (Levels). Ordonarea poate fi ascendent sau descendent.
Nu ntotdeauna trebuie prelucrate toate datele din tabel. Acest lucru
implic filtrri (selecia pe orizontal), care reprezint posibilitatea de a
introduce n prelucrare doar datele care ndeplinesc o anumit condiie.
Filtrarea se poate realiza pe o valoarea anumit cuprins n unul din cmpurile
bazei de date i poate fi personalizat prin criterii de filtrare particularizat
(Custom), care permite precizarea condiiilor logice: Is Greater Than (mai
mare dect), Equals (egal cu), Does Not Equal (diferit de), Begins
With (ncepe cu), etc.

Pentru efectuarea sortrilor i a filtrrilor este


utilizat butonul Sort & Filter (tab-ul Home, seciunea
Editing):

n funcie de tipul datelor de pe coloane este afiat un meniu vertical ce


permite lansarea operaiilor de sortare sau filtrare:

Bazele informaticii

38

Tabele de date. Grafice

Selectarea opiunii Filter determin afiarea/ascunderea butoanelor sgei


asociate

denumirilor

de

cmpuri,

deci,

utilizarea

sau

neutilizarea

acestora.
Acionarea butoanelor sgei determin apariia, funcie de tipul datelor
din cmpul activ textual sau numeric, unui meniu vertical, din care pot fi
selectate mai multe opiuni:

Prin procedeul de sortare se poate stabili ordinea n care liniile din tabel
intr n prelucrare.
Exemplu___________________________________________________________________________________

Sortare dup cmpul Media (n ordine descresctoare) - Sort Largest


to Smallest (se acioneaz butonul sgeat asociat cmpului):

Bazele informaticii

39

Tabele de date. Grafice

Sortare n ordine alfabetic - Sort A to Z (se acioneaz butonul


sgeat asociat cmpului Student):

____________________________________________________________________________________Exemplu
Dac se impune necesitatea ordonrii unui tabel de date dup mai multe
criterii sortare pe nivele, se alege opiunea Custom Sort din meniul vertical
aprut la acionarea butonului Sort & Filter (tab-ul Home, Editing). n fereastra
Sort se pot aduga nivele - Add Level sau se pot elimina - Delete Level.
Exemplu____________________________________________________________________________________
Pentru sortarea tabelului utilizat n exemplificrile anteriore, pe anul de
studii (primul Level) i n ordinea descresctoare a mediilor (al doilea
Level) fereastra Sort are urmtorul coninut:

iar tabelul de date va fi afiat astfel:

___________________________________________________________________________________Exemplu

Bazele informaticii

40

Tabele de date. Grafice

Prin procedeul de filtrare, prelucrarea unui tabel este limitat doar la


numite nregistrri. Pentru stabilirea unor criterii de filtrare se acioneaz
butoanele sub form de sgei din antetul tabelului i, funcie de tipul de date
de pe coloane - Text Filters, Number Filters, acestea se aleg din meniurile
contextuale:

Opiunea Custom Filter permite stabilirea intervalului de valori pe care


se va realiza prelucrarea tabelului.

Exemplu____________________________________________________________________________________
Pentru o filtrare particularizat pe valori ale mediilor strict mai mari ca 9
i mai mici sau egale cu 10, fereastra Custom AutoFilter va avea
urmtorul coninut:

Bazele informaticii

41

Tabele de date. Grafice

astfel nct tabelul va fi afiat astfel:

___________________________________________________________________________________Exemplu

Pentru invalidarea unor criterii de filtrare deja stabilite,

se alege, din

meniul contextual aferent, opiunea Select All. Astfel tabelul de date are
disponibile, spre prelucrare, toate nregistrrile.

Grafice (diagrame)

Datele din tabele devin mai convingtoare atunci cnd sunt prezentate
sub form de histograme, diagrame circulare, grafice liniare, etc. Mediile de
realizare a foilor de calcul electronic conin faciliti de redare grafic a
tabelelor.
Construirea unui grafic, pornind de la un tabel dat, presupune
urmtoarele etape :
1) Alegerea tipului de grafic:
a) linii (line)
b) bare (bar)
c) stiv de bare (stacked bar)
d) diagrame circulare (pie)
2) Alegerea zonelor din tabel n care se gsesc seriile de date care se
doresc a fi reprezentate i seria de date care va constituii axa
orizontal a graficului (de regul date temporale - ani, zile, etc).
3) Alegerea datelor ce vor fi marcate pe axa vertical (de regul cantiti,
preuri, etc).
4) Alegerea titlurilor axelor i a titlului graficului.
5) Stabilirea legendelor i a altor detalii care contribuie la claritate
reprezentrii grafice.

Bazele informaticii

42

Tabele de date. Grafice

6) Alegerea datelor care vor fi marcate cu valori n clar n interiorul


graficului.

pentru a putea stabili corelaii ntre diverse serii de date se


recomand reprezentare simultan pe acelai grafic a uneia sau a
mai multor serii de date, dar nu a mai mult de ase;
marcarea axelor, scrierea titlurilor i folosirea legendelor;
folosirea, dac este necesar identificarea unor valori pe grafic,
liniilor paralele verticale care prelungesc gradaiile verticale;
marcarea valorilor reprezentative pe grafic;
Crearea unui grafic n Excel ncepe cu specificarea datelor (seriilor) ce
vor fi reprezentate i presupune selectarea blocurilor de date numerice din
foaia electronic de calcul. Liniile din cadrul unui bloc selectat constituie, de
obicei, seriile.

Etapele realizrii unui grafic :

1) Se selecteaz seriile;
2) Se fixeaz colul stnga-sus al zonei unde va fi afiat graficul;
3) Se selecteaz tab-ul Insert;

Bazele informaticii

43

Tabele de date. Grafice

4) Din seciunea Charts (tipuri de diagram) se alege tipul de grafic.


Componentele unui grafic sunt constituite din obiecte i pot fi modificate
prin instrumente de tip Chart (titlul graficului, denumirea axelor, etichetarea
datelor, legende). nsui grafic este un obiect care, atunci cnd este selectat,
determina apariia tab-ului Design. Pentru a modifica un obiect din cadrul
graficului se utilizeaz mouse-ul.

Crearea i prelucrarea tabelelor de date.


Grafice.

Bazele informaticii

44

Tabele de date. Grafice

1. n vederea centralizrii i prelucrrii datelor privind comerul mondial pe


anul 2006 au fost nregistrate valorile privind exporturile, importurile
(milioane de dolari) i populaia (milioane de locuitori):

S se constituie tabelul de date corespunztor i s se afieze


urmtoarele liste:
a) lista rilor n ordine alfabetic;
b) lista exporturilor i a importurilor n ordine descendent;
c) topul rilor cu cele mai mari deficite comerciale;

se ataeaz o nou coloan pe care se calculeaz exportul importul,

pentru o sortare ascendent:

Bazele informaticii

45

Tabele de date. Grafice

d) topul rilor cu cel mai mare export pe cap de locuitor;

se ataeaz o nou coloan pe care se calculeaz exportul/populaie,

pentru o sortare descendent

e) lista rilor pentru care exporturile sunt cuprinse ntre 100 i 300 miliarde
de dolari.

2. S se fac reprezentrile grafice corespunztoare punctelor 1b, 1c, 1d


folosind diferite tipuri de diagrame .

pentru 1b

Bazele informaticii

46

Macrocomenzi

Unitatea de nvare Nr. 7


Macrocomenzi
Cuprins
Obiectivele Unitii de nvare Nr. 7
7.1. nregistrarea unei macrocomenzi VBA
7.2. Rezumat
Lucrare de verificare Unitate de nvare Nr. 7

Bazele informaticii

Pagina
48
48
55
55

47

Macrocomenzi

Limbajul Visual Basic for Applications (VBA), integrat n editoarele din


familia Microsoft Office (Word, Excel, PowerPoint, Acces, Outlook), constituie
un mediu de programare puternic, asemntor celui din Visual Studio (Visual
Basic, C++, Java, etc.). Acest limbaj de programare poate fi utilizat pentru:
nregistrarea aciunilor utilizatorului (de exemplu: introducerea i
formatarea unui text, rularea unor comenzi de meniu, lansarea opiunilor
din casetele de dialog etc.) prin transpunerea lor n secvene de
instruciuni Basic, care definesc un script numit macrocomand;
gestionarea coninutului documentului Office, cu care VBA-ul poate
comunica;
dezvoltarea unor programare independente de coninutul documentului
Office (este necesar deschiderea, cel puin formal, unei aplicaii Word,
Excel, etc.).
O macrocomand (apelat printr-o comand de meniu, apsarea unei
taste sau a unui buton dintr-o bar de instrumente) reprezint o list de
instruciuni - instruciuni de macrocomand (macro statements). Unele
instruciuni execut operaii specifice macrocomenzii, ns cele mai multe
corespund aciunilor nregistrate ale utilizatorului. Este, astfel, posibil
automatizarea activitilor de rutin sau repetitive i derularea
lor, prin
lansarea macrocomenzilor.
Mediul de programare abordat este Visual Basic for Applications inclus n
Microsoft Office 2007 dar, informaiile sunt, n general, valabile i pentru suita
Office 2003. Acesta conine un instrument complet de dezvoltare VBA, numit

Visual Basic Editor.

nregistrarea unei macrocomenzi VBA

Cea mai simpl metod de creare a unei macrocomenzi


este utilizarea resursei Macro Recorder. Prin aceast metod,
operaiunile dorite a fi automatizate sunt nregistrate pas cu
pas (editare text, comenzi de meniu, casete de dialog ).
Bazele informaticii

48

Macrocomenzi

Macro Recorder-ul transform


corespunztoare (module VBA).

toate

operaiile

instruciuni

Basic

n Word, Excel sau PowerPoint (celelalte programe din pachetul Office nu


posed funcii de nregistrare ale macrocomenzilor) nregistrarea unei
macrocomenzi ncepe prin stabilirea unui nume pentru macrocomand (cum ar
fi Macro1), dar acest nume se poate schimba cu orice alt nume, n caseta de
text Macro name:
numele nu pot avea mai mult de 255 de caractere, dar este
recomandat specificarea unor nume scurte, uor accesibile;
primul caracter trebuie s fie o liter sau o liniu de subliniere (_);
n nume nu sunt permise spaiile sau punctele.
Exemple____________________________________________________________________________________
n Word, macrocomanda poate fi
asociat cu un buton (Button) de pe o
bar de instrumente, sau, cu o
combinaie de taste (Keyboard) Alt+,
Ctrl+. Ea se poate stoca (Store macro
in) n orice ablon deschis (devine astfel
disponibil pentru orice document care
folosete ablonul) sau n orice document
deschis (va putea fi utilizat doar n
documentul respectiv). Caseta de text
Description
conine,
opional,
descrierea macrocomenzii.
n Excel, macrocomanda va fi
plasat n registrul de lucru curent, ntr-un
registru de lucru nou sau n registrul
Personal
Macro
Workbook
(macrocomenzile vor fi disponibile n toate
registrele de lucru).

____________________________________________________________________________________Exemple

Bazele informaticii

49

Macrocomenzi

Deoarece modulul de nregistrare a macrocomenzilor memoreaz toate


aciunile

utilizatorului,

este

indicat

neefectuarea

unor

comenzi

neeseniale pe parcursul nregistrrii. Intrarea n starea Recording


este marcat n bara de stare a programului Office. Acest buton va fi
acionat n momentul terminrii nregistrrii:

n PowerPoint, macrocomanda se poate memora n orice prezentare

deschis. Ea va fi creat utiliznd editorul VBA.

Exemplu (Word) ____________________________________________________________________

Adugarea unui buton de rulare a unei macrocomenzi, n Quick Access


Toolbar:

QuickAccessToolbar

se deschide n editare un document;


se iniiaz nregistrarea unei macrocomenzi,
;
se stabilete numele macrocomenzii (aici Antet) care va fi asociat unui
buton (Assign macro to, Button);
n fereastra Word Option, Customize,
,
;
noul buton va apare n lista Quick Access:

Bazele informaticii

50

Macrocomenzi

.
se acioneaz butonul
din fereastra Modify Button se selecteaz un
):
simbol (de exemplu

n Quick Access Toolbar va apare noul buton:

se introduce, n fereastra documentului un text (pentru dat i or, se


selecteaz din tab-ul Insert,

):

Universitatea"Ovidius"Constana
FacultateadetiineEconomice

Data:11februarie2007Ora:11:24

se ncheie nregistrarea apsnd butonul

, din bara de stare;

macrocomanda, fiind asociat documentului, poate fi utilizat oricnd prin


acionarea butonului

(a se remarca actualizarea datei i a orei):

Universitatea"Ovidius"Constana
FacultateadetiineEconomice

Data:13februarie2007Ora:17:16

vizualizarea coninutului macrocomenzii


VBA:

Bazele informaticii

, Edit n Editorul

51

Macrocomenzi

n corpul macroinstruciunii apar instruciuni ale limbajului de programare


Visual Basic n care sunt transformate aciunile utilizatorului. Acest instruciuni
au mai mult sau mai puin semnificaie, mai ales pentru un programator
nceptor. Deocamdat, important este faptul de a tii c ele pot fi modificate.
___________________________________________________________________________________Exemplu

O macrocomand obinuit are urmtoarele elemente:


Cuvntul cheie Sub (prescurtare de la subrutin) - acest cuvnt
cheie marcheaz nceputul unei macrocomenzi.
Numele macrocomenzii - dup cuvntul cheie Sub este plasat
numele unei macrocomenzi urmat de paranteze.
Comentariile - rnduri care ncep cu un apostrof ('). Comentariile
nu sunt prelucrate atunci cnd macrocomanda este rulat.
Instruciunile macrocomenzii - corpul principal al macrocomenzii
(liniile dintre cuvintele cheie Sub i End Sub).

Bazele informaticii

52

Macrocomenzi

Dac, n bara de mesaje (Message Bar), este notificat faptul c


executarea

macrocomenzilor

nu

este

permis,

din

motive

de

securitate,utilizatorul poate lua decizia adecvat acionnd butonul


:

Rularea unei macrocomenzi se poate realiza i prin shortcut-ul

Alt+F8.

Exemplu (Excel) ___________________________________________________________________


se deschide n editare un document;
se poziioneaz cursorul (de exemplu n celula B2);
se iniiaz nregistrarea unei macrocomenzi,
;
se stabilete numele macrocomenzii (aici Data) care va fi asociat cu
combinaia de taste Ctrl +d ;
n celula curent se introduce funcia TODAY():

se salveaz foaia electronic de calcul: Save as type, Excel MacroEnabled Workbook ;


se deschide documentul Excel, dndu-se permisiunea de executare a
, Enable this content ;
macrocomenzilor:
Bazele informaticii

53

Macrocomenzi

se poate introduce data curent, n orice celul (de exemplu n D4)


utiliznd shortcut-ul Ctrl +d :

vizualizarea coninutului macrocomenzii


VBA:

, Edit n Editorul

la executarea macrocomenzii se poate constata c, este introdus data


curent, dar cursorul se va deplasa, mereu, n celula B3 (pentru c, la
nregistrarea macrocomenzii, dup introducerea funciei de dat
calendaristic a fost apsat tasta Enter). Dac, n editorul VBA, se
terge instruciunea Range(B3).Select, activarea celulei B3 va fi

anulat.
____________________________________________________________________________________Exemplu

Macrocomenzile sunt asociate documentelor Office. Ele pot fi salvate

mpreun cu aceste documente: din lista Save as type, se selecteaz tipul


de fiier ce conine meniunea Macro-Enabled.

Bazele informaticii

54

Macrocomenzi

O macrocomand reprezint o list de instruciuni scrise n limbajul de


programare Basic, varianta VBA.

VBA este un mediu de programare puternic, asemntor celui din Visual


Studio (Visual Basic, C++, Java, etc.)

Instruciunile unei macrocomenzi pot fi editate - se pot modifica, terge


instruciunile Basic existente, se pot aduga altele noi.

Macrocomenzile pot fi rulate de cte ori este nevoie.


Din motive de securitate, la lansarea aplicaiilor

Office, se notific
existena macrocomenzilor, executarea lor nefiind permis n mod implicit.

S se nregistreze i s se ruleze macrocomenzile din exemplele marcate


cu simbolul

Bazele informaticii

55

Editorul VBA

Unitatea de nvare Nr. 8


Editorul VBA
Cuprins
Obiectivele Unitii de nvare Nr. 8
8.1. Lansarea editorului VBA
8.2. Mediul de editare VBA
8.3. Module VBA
8.3.1. Identificarea modulelor
8.3.2. Rularea modulelor
8.3.3. Save i Open pentru aplicaiile Office i modulele asociate
8.3.4. Sistemul de asisten la scrierea codului
8.3.5. Proceduri
8.3.5.1. Proceduri Sub
8.3.5.2. Proceduri Function
Formulare
VBA
8.4.
8.4.1. Crearea unui formular
8.4.2. Rularea unui formular
8.4.3. Controale OLE
8.5. Documente Office active
8.5.1. Controale ActiveX
8.5.2. Proceduri eveniment
8.6. Rezumat
Lucrare de verificare Unitate de nvare Nr. 8

Bazele informaticii

Pagina
57
57
57
59
59
59
60
60
61
61
63
64
65
66
66
68
69
70
72
73

56

Editorul VBA

Programele din suita Office au asociate un editor VBA numit VBE care
faciliteaz scrierea i editarea unor secvene program n limbajul Visual Basic
(n cercurile programatorilor profesioniti, Visual Basic Editor este numit mediu
integrat de dezvoltare sau IDE). VBE transpune aciunile utilizatorului n
instruciuni Basic sub forma macrocomenzilor, prin procedeul de nregistrare.
Se pot edita ns i macrocomenzi proprii, fie pornind de la zero, fie utiliznd ca
punct de plecare o macrocomand nregistrat.

Lansarea editorului VBA


Activarea editorului VBE poate fi realizat n mai multe moduri:
prin vizualizarea unei macrocomenzi nregistrate;
prin shortcut-ul Alt+F11 (de fapt, acest shortcut este un comutator
care face trecerea ntre Visual Basic Editor i aplicaia de baz).
acionarea butonului
(Visual Basic) din tab-ul Developer. Acest tab
nu este vizualizat implicit, dar poate fi activat:
clic pe butonul Microsoft Office
Options ,
Popular,

Mediul de editare VBA


Editorul de programe Basic ofer instrumente de lucru, cum ar fi:
Bara de meniuri, MenuBar, conine o serie de meniuri, fiecare dintre
acestea coninnd comenzi. De exemplu, se poate selecta comanda Run
Sub/UserForm din meniul Run. Multe dintre comenzile meniurilor au aanumitele taste rapide (hotkeys) care se pot folosi pentru a selecta
Bazele informaticii

57

Editorul VBA

comanda direct din tastatur (F5 n cazul de fa) fr deschiderea


meniului.
MenuBar
ToolBar

Fereastra
Project

Fereastra
decod
Fereastra
Properties

Bara de instrumente, Toolbar, furnizeaz acces la multe dintre


comenzile cele mai des utilizate n limbajul Visual Basic. Multe dintre
butoanele din bara de instrumente sunt doar modaliti rapide de
selectare a unei comenzi din meniuri. De exemplu, butonul
(Save)
salveaz documentul din proiectul curent, avnd aceeai pictogram i
acelai efect ca i selectarea comenzii din meniul File.
Fereastra Project ofer o trecere n revist a obiectelor din proiectul
curent. De exemplu, un modul sau un formular utilizator (UserForm) va fi
unul dintre aceste obiecte. De fapt, n unele proiecte pot exista mai
multe obiecte. Executnd un clic pe semnele plus(+) i minus(-) de lng
dosarele din fereastra Project, se pot afia mai multe sau mai puine detalii.
Fereastra Properties afieaz proprietile obiectului care este curent
selectat. Proprietile sunt atribute ale unui obiect. De exemplu, modulul
are o proprietate numit (Name) pentru identificarea acestuia.
Fereastra de cod. Chiar dac limbajul Visual Basic permite construirea
Bazele informaticii

58

Editorul VBA

unei pri din proiect, prin procedeul Recording, este necesar i


scrierea codului surs al programului. Programele conin linii de comenzi
care se introduc n fereastra de cod.

Module VBA
n Visual Basic Editor, macrocomenzile sunt grupate n aa numitele
module (esena limbajului VBA). Modulele sunt seciuni care grupeaz
instruciuni Basic. Dac documentul Office are asociat o macrocomand,
instruciunile care o compun sunt afiate n fereastra de cod. Pentru editarea
propriilor module este necesar inserarea acestora (prin meniu, Insert,
sau utiliznd butonul

din Toolbar).

Identificarea modulelor
Atunci cnd se introduce un modul nou ntr-un proiect, VBA i atribuie un
nume generic, cum ar fi Module1, Module2, . Practic este necesar utilizarea
unor nume sugestive pentru ca, prin acestea, modulele s poat fi difereniate.
Pentru a schimba numele unui modul:
Se selecteaz modulul n fereastra Project Explorer.
n fereastra Properties, proprietatea (Name), se tasteaz numele
modulului. Numele utilizat ncepe cu o liter, nu conine spaii sau semne
de punctuaie (liniuele de subliniere sunt acceptate) i nu are mai mult
de 31 de caractere.
Rularea modulelor
Modulele includ o secven de instruciuni Basic care trebuie s fie corecte
din punct de vedere sintactic. Detectarea erorilor se poate efectua prin
compilare (Debug, Compile Project).
n aplicaiile Office exist mai multe metode de rulare a modulelor, ns
cel mai des utilizate sunt urmtoarele dou:
n cadrul editorului, se acioneaz, de obicei, butonul
ToolBar. Aceeai comanda se poate lansa i prin meniu:

din
,

.
n aplicaia Office, caseta Macros evideniaz modulul care poate fi
executat prin clic pe butonul Run. Caseta Macros este vizualizat:
prin tab-ul View, Macros ,
cu Shortcut-ul Alt+F8 (cel mai frecvent).

Bazele informaticii

59

Editorul VBA

pentru aplicaiile Office i modulele asociate

Modulele create ntr-un document Office pot fi stocate n dou moduri:


mpreun cu documentul. n acest caz este necesar ca, la salvare, s
se fac precizarea tipului de fiier: Macro-Enabled (Save As type).
Pentru un astfel de fiier, atunci cnd se deschide, n Message Bar va
apare mesajul:

Se poate permite executarea macrocomenzilor n fereastra Security


Alert Macro (clic pe butonul Options) :
Separat, ca fiiere cu extensia .bas (fiiere Basic). Pe aceast cale se
export/import modulul ca fiier .bas, de fapt un fiier text care
cuprinde codul VBA. Exportare/importarea unui modul este realizat
prin meniul editorului (File, Export File Ctrl+E / File, Import File
Ctrl+M).
Sistemul de asisten la scrierea codului
VBA ofer sugestii i alternative n timpul tastrii codului, prin instrumentul

IntelliSense, dup ce s-a introdus un cuvnt-cheie care este recunoscut ca

avnd parametri. Editorul de program afieaz lista valorilor posibile pentru


respectivii parametrii. Parametri semnific proprietile unui control (care n cod se
separ de numele controlului prin punct), argumentele unei proceduri sau funcii,
tipurile de dat etc. Aceast facilitate se numete Auto Members.
Poziionarea n listele respective se face mai uor prin tastarea primelor
litere ale cuvntului dorit (Int" pentru Integer). Scrierea efectiv a cuvntului
dorit are loc prin apsarea tastei Enter, tasta virgul" dac se scriu elementele
unei liste.

La tastarea liniilor de cod, VBA execut mai multe operaii:


Formateaz culoarea fiecrui cuvnt din linie. n mod prestabilit,
cuvintele cheie din VBA sunt afiate cu albastru, comentariile cu verde,

Bazele informaticii

60

Editorul VBA

erorile cu rou, iar celelalte texte cu negru.


Adaug linii i cuvinte noi, specifice limbajului. De exemplu, dac se
introduce cuvntul cheie Sub urmat de numele procedurii, VBA
adaug automat o pereche de paranteze rotunde dup nume i
introduce o linie End Sub pentru a marca sfritul procedurii.
Cuvintele cheie sunt schimbate n formatul potrivit (dac se tasteaz end
sub, VBA transform expresia n End Sub la apsarea tastei Enter.
Verific erorile de sintax, adic erorile care apar atunci cnd un cuvnt
este ortografiat greit, o funcie este introdus incorect, etc. VBA
semnaleaz o eroare de sintax, fie afind o caset de dialog, fie
neafind cuvntul, n formatul i culoarea corespunztoare.
Exemplu____________________________________________________________________________________
ntr-un modul se tasteaz

sub Salut,

Se apas tasta Enter,


Se apas tasta Tab,
Se introduce textul msgbox(Bun

venit in VBA!),

Modulul va fi afiat astfel:

____________________________________________________________________________________Exemplu

n exemplificrile urmtoare, pentru afiarea unor casete de mesaj,


se va utiliza funcia MsgBox.
Proceduri
Un modul este compus din una sau mai multe uniti de baz numite
proceduri. Exist dou tipuri de proceduri:
proceduri Sub (subrutine)
proceduri Function (funcii)
Pentru lucrul cu procedurile trebuie avut n vedere, n primul rnd,
definirea grupului de instruciuni care vor constitui corpul procedurii i, n al
doilea rnd apelul lor (de cte ori este nevoie).
Proceduri

Sub

O procedur Sub reprezint un grup de instruciuni care primete, de la


programul apelant un ir de parametri, realizeaz anumite prelucrri, dup
care d controlul programului apelant.

Bazele informaticii

61

Editorul VBA

Definiia sintactic este (Exit Sub este opional i reprezint punctul


de ieire din procedur, dac lipsete procedura se termin la End
Sub):

Sub NumeProcedur (argument1, argument2, )


<instruciuni VBA>
[Exit Sub]
<instruciuni VBA>

End Sub
Apelul procedurii (cuvntul Call poate s nu apar):
[Call] NumeProcedur (parametru1, parametru2, )
Argumentele de apel - 0, 1 sau mai multe - sunt n coresponden
biunivoc cu parametrii de transmis. Aceast coresponden este
determinat de ordinea i tipul argumentelor aflate n list.

Exemple______________________________________________________________________________

Procedura apelant este ex1(), iar cea apelat este ex2() nu au


argumente:

Procedura apelant este ex1(), iar cea apelat este ex2() are 2
argumente:

____________________________________________________________________________________Exemple

Bazele informaticii

62

Editorul VBA

Proceduri

Function

O funcie definit de utilizator reprezint un grup de instruciuni care


primete un set de parametrii (argumentele funciei) de la programul apelant i
i returneaz acestuia valoarea. Numele unei funcii poate intra n componena
expresiilor de calcul ca operand.
Definiia sintactic este:

Function NumeFuncie (argument1, argument2, ) [As <tip>]


<instruciuni VBA>
[Exit Function]
<instruciuni VBA>

End Function
Apelul funciei se realizeaz prin
parametrilor, pus ntre paranteze.

numele

funciei

urmat de lista

ntre lista parametrilor de apel i lista argumentelor funciei trebuie


s existe o

coresponden

biunivoc, determinat de ordinea

argumentelor n list.

Exit Function este opional i reprezint punctul de ieire din


procedur - dac lipsete procedura se termin la End Function.

Argumentul

As,

opional,

impune

tipul

valorii

returnate

la

terminarea funciei.

Exemple______________________________________________________________________________
Din procedura Sub ex1() este apelat procedura Function ex2() funcie
fr nici un argument:

Bazele informaticii

63

Editorul VBA

O funcie ValoareTva, pentru calculul valorii TVA, poate fi definit ntr-un modul:

____________________________________________________________________________________Exemple

Tratarea mai pe larg a acestor seciuni de program va fi fcut n


capitolul Module VBA.

Formulare VBA
Cu ajutorul formularelor (se poate utiliza i termenul form) se
definete interfaa grafic, asemntoare cu cea editat n mediile de
programare Visual Studio, astfel c practica n VBA poate fi considerat
introductiv ctre acestea.
n formular se pot introduce controale OLE (numite i controale
ActiveX), situate n caseta cu instrumente ToolBox, care permit interaciunea
cu utilizatorul. Un control are atribute (proprieti) ajustabile i sesizeaz
evenimente (este viu). Controalelor li se asociaz secvene de cod, sub forma
unor proceduri, numite proceduri eveniment.

Bazele informaticii

64

Editorul VBA

Design

Project

Properties

Formular

Toolbox

Casetacu
instrumente

Crearea unui dialog utilizator (termenul utilizator este adugat pentru


diferenierea de dialogurile ncorporate mediului) necesit parcurgerea mai
multor etape:
crearea unui formular (UserForm), care constituie suportul pe care
sunt adugate controalele;
plasarea controalelor pe formular;
stabilirea proprietilor pentru controale;
scrierea procedurilor asociate controalelor, de rspuns la evenimentele
declanate prin acionarea lor.
Crearea unui formular
n Visual Basic Editor crearea unui formular (prin meniu, Insert,
sau utiliznd butonul
proiectare (design mode).

Bazele informaticii

din Toolbar) se realizeaz n modul de

65

Editorul VBA

Rularea unui formular


n modul de execuie (run mode) controalele rspund evenimentelor.
Pentru rularea unui formular se acioneaz, de obicei, butonul
din ToolBar
(aceeai comanda se poate lansa i prin meniu: Run, Run Sub/UseForm). Se
pot rula doar proiectele corecte sintactic (verificare prin compilare: Debug,
Compile Project).

Controale OLE
Fereastra UserForm include obiectul care are UserForm1 n bara de titlu. Pe
formular se pot introduce, din Toolbox, controalele care definesc interfaa cu
utilizatorul, cum ar fi:

Buton

Etichet

Caset de text

Buton radio (opiune)

Caset cu list

List derulant

Caset de imagine

Numele proiectului apare n fereastra Project


Explorer, iar
proprietile controalelor (dar i ale formularului) sunt afiate n fereastra
Properties. Aceste proprieti pot fi stabilite manual (din fereastra
Properties) sau prin instruciuni program.
Pentru a aduga un control n formular se execut clic pe pictograma
corespunztoare din Toolbox i se traseaz n fereastra formularului (o linie
punctat gri i punctele de dimensionare nconjoar controlul). Mrimea
controlului se poate stabili utiliznd punctele de dimensionare. Cnd se
plaseaz indicatorul mouse-ului deasupra unui punct de dimensionare, acesta
i modific nfiarea pentru a indica direciile n care se poate trage acesta,
innd apsat butonul stng al mouse-ului. Pentru a muta controlul, se plaseaz
indicatorul mouse-ului deasupra sa, cursorul acestuia transformndu-se ntr-o
pictogram cu patru sgei. Butonul mouse-ului se ine apsat i se deplaseaz
cursorul.
Bazele informaticii

66

Editorul VBA

Se pot redimensiona majoritatea controalelor, trgnd de punctele lor


de dimensionare. De asemenea se poate realiza deplasarea lor.

Exemplu_____________________________________________________________________________
Adugarea unui buton n formular:
se execut clic pe controlul CommandButton i se traseaz n
fereastra formularului;
Textul nscris n antetul formularului (UserForm1) se poate modifica
stabilind, de exemplu, proprietatea Caption la valoarea Fereastra
mea;
Pentru buton, proprietile Caption i Name se modific la
valoarea Start:

Atunci cnd se execut dublu clic pe control, limbajul VBA afieaz


fereastra de cod n care sunt incluse i liniile de cod implicite
(procedur). Procedura Private Sub Start_Click() se va
executa ori de cte ori utilizatorul, n faza de execuie, acioneaz
butonul (procedura este un eveniment pe care Windows l transmite
programului spre a fi administrat). Programatorul poate aduga
propriul lui cod surs. De exemplu instruciunea MsgBox (Bun
venit in VBA) spune limbajului VBA s afieze o caset de
mesaj:
Sub Start_Click()
MsgBox (Bun venit in VBA)
End Sub
La rularea programului (
) va apare caseta de mesaj coninnd
textul Bun venit in VBA:

Bazele informaticii

67

Editorul VBA

___________________________________________________________________________________Exemplu

Tratarea mai pe larg a controalelor care definesc interfaa grafic cu

utilizatorul va fi fcut n capitolul Formulare VBA.

Documente Office active


Controalele ActiveX (n cazul formularelor mai sunt denumite i controale
OLE, pentru a face diferenierea) pot fi plasate i direct n documentele
aplicaiilor: documente Word, foi de calcul Excel, diapozitive PowerPoint.
n Word controalele se introduc pe stratul de text i sunt selectate din
grupul Controls, tab-ul Developer:

Aceste controale au atribute cu proprieti ajustabile, recunosc


evenimente. Prin scrierea procedurilor eveniment, interfaa cu utilizatorul poate
fi personalizat i definit corespunztor. Pot fi adugate controale unui
document n acelai mod n care controalele se adaug unui formular. Astfel,
unui document i se pot incorpora casete de text, liste, butoane radio, pentru a-l
transforma ntr-un formular activ (online). Dei modul de operare al
controalelor ActiveX este foarte asemntor cu cel al controalelor OLE, exist
unele deosebiri:
Bazele informaticii

68

Editorul VBA

Adugarea controalelor se realizeaz cu ajutorul cutiei de unelte


ActiveX Controls (i nu Toolbox ca n VBE).
Editarea lor este permis n modul Design mode iar activarea lor n
Run Mode. Bascularea ntre cele dou moduri este realizat n Word
din tab-ul
(dar i n Excel) prin acionarea butonului
Developer. n PowerPoint se trece n Slide Show pentru a se ajunge
n Run Mode i se revine ntr-un context de editare pentru Design
Mode.
Proprietile controalelor se stabilesc dup ce se acioneaz
butonul
.

Evenimentele dintr-un document Office i dintr-un formular fiind uneori


diferite i tratrile acestora sunt diferite. Pentru editarea i utilizarea
documentelor Word active se impune respectarea urmtoarelor reguli:
Controalele ActiveX se pot aduga stratului (layer-ului) de text.
Controlul este inserat ca un caracter, respectndu-se atributele
liniei i paragrafului.
Controalele nu pot fi aduse prin drag&drop, cu mouse-ul, n
document. La click pe un control, acesta este inserat n punctul de
inserie pe text.
n Design Mode, controalele ActiveX sunt disponibile pentru editare.
n Run Mode controalele reacioneaz la evenimente.
Controale ActiveX

Controlul CommandButton este tipic pentru startul evenimentelor. Codul


program de executat este plasat n procedura eveniment Click. Textul afiat
pe buton este coninut n proprietatea Caption, iar numele lui n proprietatea
(Name). Mediul de proiectare VBA atribuie nume butoanelor
(CommandButton1, CommandButton2, ) dar este indicat ca utilizatorul
s foloseasc denumiri semnificative.

Controlul Label este utilizat pentru afiarea unor texte care nu pot fi editate
de utilizator. Este util pentru descrierea altor obiecte din formular cum ar fi
TextBox.

Bazele informaticii

69

Editorul VBA

Acest control este unul dintre cele mai folosite n programarea interfeelor
grafice datorit avantajelor pe care le ofer la introducerea datelor i la
manipularea lor. Definete un cmp de editare n care utilizatorul poate
introduce un text (proprietatea Text). Aspectul textului afiat este determinat
de proprietile Font i ForeColor. La fel ca i la alte controale, proprietile
pot fi modificate prin cod program, n timpul rulrii aplicaiei. O caset de text
poate fi folosit n modul activ (utilizatorul are acces la coninutul su) sau n
modul inactiv (utilizatorul poate doar s vizualizeze coninutul, textul fiind
protejat n cazul n care se ncearc modificarea sa).

Este controlul care se folosete atunci cnd trebuie selectat doar o singur
opiune din mai multe posibile.

Proceduri eveniment

Procedurile eveniment sunt secvene de instruciuni asociate diferitelor


controale la activarea/dezactivarea acestora. Afiarea ferestrei de cod este
realizat prin executarea unui dublu clic pe controlul pentru care se dorete
scrierea instruciunilor program. Numele procedurii (Click - pentru
CommandButton sau OptionButton, Change pentru TextBox) este
legat de numele controlului prin simbolul _ (underline) :
Private Sub control_procedura()
End Sub
n instruciunile Basic, referirea la proprietatea unui control se face prin
construcia control.proprietate numele proprietii este legat de numele
controlului printr-un punct.

La testarea secvenelor de cod se produc, deseori, erori


de sintax sau de natur logic, mai ales de ctre
nceptori. Pentru a le rezolva este necesar un Reset
(din meniul Run al VBA-ului):

Bazele informaticii

70

Editorul VBA

Exemplu (Word) ___________________________________________________________________

n Design mode se introduc, n document, dou TextBox-uri:


_______________________________________________________________

Preul:

TVA:

_______________________________________________________________
Se stabilesc proprietile:

Proprietatea

Enabled

True

pentru

TVA

anihileaz

scrierile

accidentale n aceast caset de text, destinat afirii rezultatului unui


calcul.

Se editeaz procedura eveniment:


Private Sub Pret_Change()
TVA = Pret * 0.19
End Sub
Mai

complet, se poate testa dac preul este ntr-adevr o valoare

numeric (funcia IsNumeric i instruciunea If vor fi tratate ulterior):

Private Sub Pret_Change()


If IsNumeric(Pret.Text) Then
TVA = Pret * 0.19
End If
End Sub

n limbajele de programare se folosete punct zecimal n loc de virgul

zecimal, vezi : 0.19

n Run Mode se pot iniia calcule:

Bazele informaticii

71

Editorul VBA

______________________________________________________________
Preul:

142,50

TVA:

27.075

______________________________________________________________

! preul apare cu virgul zecimal datorit setrilor de sistem:


Regional and Language Options: Romanian
____________________________________________________________________________________Exemplu

VBA

se poate lansa dintr-o aplicaie Office, cel mai adesea utiliznd


shortcut-ul Alt+F11.

Dup

lansarea mediului de programare VBA se pot edita module i


formulare noi sau se pot edita cele existente (stocate mpreun cu
documentele Office sau exportate ca fiiere cu extensia .bas).

Fereastra

Project Explorer arat modulele, formularele i documentele


Office din proiect. Un proiect are cel puin un modul sau un formular.

Pentru

a crea o aplicaie VBA e necesar scrierea codului surs al


programului i apoi compilarea programului (Debug, Compile Project)
pentru eliminarea eventualelor erori de sintax.

Instruciunile programului se introduc n fereastra de cod VBA.


Fereastra Properties afieaz atributele unui obiect din proiect.
Controalele se folosesc pentru a realiza interfaa grafic cu utilizatorul.
Se poate construi o interfa cu utilizatorul plasnd controale pe un
formular sau pe stratul de text al Word-ului.

Se pot redimensiona controalele (i formularul) trgnd de punctele de

dimensionare ale controalelor, care apar atunci cnd este selectat


controlul.

O modalitate de afiare a ferestrei de cod este executarea unui dublu clic


pe controlul pentru care se dorete scrierea codului de program.

Atunci cnd utilizatorul apas pe un buton dintr-un formular sau dintr-un


Bazele informaticii

72

Editorul VBA

document, VBA genereaz un eveniment Click. Codul de program care se


adaug la procedura de eveniment Click a butonului determin ce anume
face butonul.

Dac utilizatorul introduce date ntr-o caset de text evenimentul Change


ofer posibilitatea prelurii acestor date n programul Basic.

S se editeze i s se ruleze secvenele de instruciuni Basic din


exemplele marcate cu simbolul

Bazele informaticii

73

Secvene de cod VBA

Unitatea de nvare Nr. 9


Secvene de cod VBA
Cuprins
Obiectivele Unitii de nvare Nr. 9
9.1. Cuvintele
9.2. Comentariile
9.3. Tipuri de date
9.4. Expresiile
9.4.1. Operanzi
9.4.2. Operatori
9.4.3. Ordinea de evaluare a expresiilor
9.5. Constante i variabile
9.5.1. Constante
9.5.2. Variabile
9.6. Instruciunea de atribuire
9.7. Liste (arrays) de variabile
9.7.1. Liste dinamice
Lucrare de verificare Unitate de nvare Nr. 9

Bazele informaticii

Pagina
75
75
76
76
79
79
79
80
81
81
82
83
84
85
86

74

Secvene de cod VBA

O aplicaie VBA include unul sau mai multe formulare i module.


Secvenele de cod (program surs), asociate acestora, sunt constituite din linii
de program editat n limbajul de programare Visual Basic. n principiu o linie de
program, format din mai multe cuvinte care pot fi scrise cu majuscule i/sau
cu minuscule, are dou pri: o instruciune i unul sau mai multe argumente.
Editorul de program coloreaz cuvintele pentru a facilita detectarea lor.
Sunt cteva culori implicite: verde pentru comentarii, albastru pentru cuvintelecheie, negru pentru elementele definite de utilizator (variabile i constante) etc.
Cuvintele
Prin reunirea caracterelor alfabetice, numerice, precum i a unor
caractere speciale se formeaz cuvintele. Acestea se pot grupa n 2 categorii:

cuvinte rezervate (cheie);


cuvinte utilizator.

Cuvintele rezervate (cheie) aparin limbajului i au o semnificaie


predefinit, motiv pentru care pot fi folosite numai n modul n care sunt
specificate n formatele generale (de exemplu: For, Next, Do, Loop, etc).
Cuvintele utilizator sunt create de programator att pentru a defini datele
ce se prelucreaz, programele, fiierele, procedurile, ct i pentru a nscrie
comentarii n programe (de exemplu: cantitate, PU, Valoare, etc).

O linie poate ocupa i dou rnduri, reunite prin spaiu i linie de


subliniere ( _) la sfritul primului rnd.
O linie de program poate conine mai multe instruciuni separate
prin : (dou puncte), lucru nerecomandabil datorit dificultilor
de citire a programului.
Nu este permis tierea cuvintelor !

Bazele informaticii

75

Secvene de cod VBA

Exemple____________________________________________________________________________________
Instruciune scris pe dou rnduri:

Valoare = pret * _
cantitate
Instruciuni scrise pe acelai rnd:

Valoare = 2 : cantitate = 50
____________________________________________________________________________________Exemple

Comentariile
Un comentariu constituie o linie de cod care nu se execut, avnd n cuprins
explicaii asupra altor poriuni de cod (care, de regul, urmeaz). n acest fel, la o
parcurgere ulterioar a codului, va fi facilitat nelegerea acestuia. Comentariile
incluse de programatori la scrierea unei aplicaii ajut foarte mult la modificarea
sau ntreinerea acesteia.
Un comentariu este deci un mesaj inclus ntr-o secven de program cu
diferite scopuri, precum:

identificarea programului;
descrierea obiectivului general al programului;
descrierea scopului fiecrei proceduri n parte;
explicarea secvenelor sau a calculelor mai complexe.

n Basic exist dou variante:


Utilizarea instruciunii

REM: desemneaz un comentariu care se ntinde

pe ntreg rndul;

Utilizarea unui apostrof (') la nceputul comentariului: n acest caz se

pot scrie comentarii i dup o instruciune, pe acelai rnd.

Liniile de comentarii nu sunt executate i nu sunt vizibile n momentul


execuiei aplicaiei - Basic ignor la execuie liniile care ncep cu REM sau
apostrof.

Bazele informaticii

76

Secvene de cod VBA

Exemplu____________________________________________________________________________________
REM Programator: Parvulescu Andrei
REM Program de calcul al salariilor
'...
REM Aici sunt alte instructiuni
'...
Sub Calc_Impozit(Salariu As Single)
'Procedura de calcul a impozitului
Dim Impozit As Single 'variabila pentru memorarea
'impozitului
'Se utilizeaza 2 variabile:
'una pentru suma fixa si una pentru procent.
Dim SumaFixa, Procent As Single
'calculul impozitului
Impozit = SumaFixa + Salariu * Procent / 100
End Sub
____________________________________________________________________________________Exemplu

Tipuri de date
Exist 3 mari categorii de date: numerice, ir de caractere (string) i
speciale. ncadrarea unei date ntr-o anume categorie este absolut necesar
pentru a putea efectua calcule sau alte prelucrri. Un ir de caractere este o
secven de zero sau mai multe caractere care sunt tratate ca o entitate. Visual
Basic lucreaz cu iruri de caractere de lungime fix sau variabil. Tipul de dat
considerat implicit este Variant, care indic o dat de tip nespecificat. La
preluarea acestei date ntr-o secven de cod este necesar conversia ei n tipul
corespunztor prelucrrii ce urmeaz.
Tipul

Descriere

Lungime

Interval de valori

(byte)

Boolean

Date de tipul logic

Byte
Integer
Long

Bazele informaticii

Numere ntregi

True sau False

0 255

-32.768 32.767

-2.147.483.648 2.147.483.647

77

Secvene de cod VBA

Currency

Format monetar

-922.337.203.685.477,5808
922.337.203.685.477,5807

Single

Double

4
Numere zecimale
n virgul flotant
(pentru aplicaii
tiinifice)

-3.4028235E+38
-1.401298E-45

-1,797.693.134.86232E308
-4,940.656.458.41247E-324 i
4,940.656.458.41247E-324
1,797.693.134.86232E308

Date

Date calendaristice
i de timp

String

ir de caractere

Object

Obiecte (cum ar fi
controale i
formulare)

Variant

Date de orice tip,


utilizat atunci cnd
tipul acestora este
incert

1 ian. 100 31dec. 9999

Pentru scrierea valorilor numerice sunt folosite, uneori, literele E sau D.


E" provine de la exponent" iar D" de la exponent dubl precizie". Prin
exponent se nelege o putere a lui 10 cu care se nmulete o alt valoare.
Literele E i e (sau D i d) sunt utilizate ntr-o notaie special, denumit
tiinific. Notaia tiinific este o reprezentare prescurtat, utilizat pentru
numere foarte mari sau foarte mici. Se consider c aceast notaie este mai
inteligibil dect repetarea unui numr mare de zerouri. Convertirea la valoarea
real se poate face oricnd, astfel:
calculeaz 10 la puterea dat de numrul care urmeaz dup D sau E;
valoarea obinut se nmulete cu numrul care-l precede pe D sau E.
Exemplu____________________________________________________________________________________
o
o

87,972E+6 nseamn 87,972 * 106 adic 87.972.000.000


____________________________________________________________________________________Exemplu
Bazele informaticii

78

Secvene de cod VBA

Expresiile (de calcul)


Relaiile de calcul se transpun n expresii formate din:
Operanzi care pot fi:
Constantele.
Variabilele.
Funciile (Basic sau utilizator).
Operatori.

Operatorii leag operanzi de acelai tip. Operatorii folosii n programele


Basic sunt urmtorii :

Operatorii aritmetici - leag operanzi numerici.


Operator
+

adunare

scdere

nmulire

mprire

ctul unei mpriri cu rest

Mod
^

Descriere

modulo (restul mpririi)


ridicare la putere

Operatorii relaionali - produc rezultate de tip boolean.


Operator

Descriere

<

strict mai mic

>

strict mai mare

egalitate

<> sau ><

diferit

<= sau =<

mai mic sau egal

>= sau =>

mai mare sau egal

Operatorii logici - leag expresii logice.

Bazele informaticii

79

Secvene de cod VBA

Operator

Descriere

NOT

Rezultatul este adevrat dac operandul este


fals i invers (Not X).

(nu)
AND

Rezultatul este adevrat cnd cei doi operanzi


sunt adevrai (X And Y).

(i)
OR

Rezultatul este adevrat dac unul din operanzi


este adevrat (X OR Y)

(sau)
XOR
(sau exclusiv)

Rezultatul este adevrat dac unul din operanzi


este adevrat. Dac ambii operanzi sunt, sau
adevrai, sau fali, rezultatul este fals.

Operatorul de concatenare a irurilor: &

Ordinea de evaluare a expresiilor


Dac o relaie sau o expresie cuprinde simultan operatori aritmetici,
relaionali i logici ordinea de evaluare este :
Operator

Prioritate

Operatorii aritmetici sau &

0 (maxim)

Operatorii relaionali

Operatorii logici

Pentru expresiile aritmetice:


Operator
Operatorul unar (semn +, -)

Bazele informaticii

Prioritate
0

Ridicarea la putere

nmulirea i mprirea

Adunarea i scderea

80

Secvene de cod VBA

Parantezele pot modifica ordinea de efectuare a operaiilor.


Exemplu____________________________________________________________________________________
(3 + 2) * (4 + 1)

25

102 / 4

25.5

102 \ 4

25

102 Mod 4

____________________________________________________________________________________Exemplu

Constante i variabile
Ca toate limbajele de programare, Basic permite utilizarea memoriei
calculatorului pentru stocarea datelor utilizate de programele ce se execut.
Coninutul acestor zone de stocare este asociat unor identificatori, cuvinte
crora li se asociaz o valoare definit prin unul din tipurile de date menionate.

Identificatorii de variabile pot conine litere, cifre i caracterul de


subliniere (underscore), nu pot s nceap cu cifre, nu pot conine spaii
ori alte caractere speciale.

Este interzis folosirea unor nume care sunt cuvinte cheie n Basic (de
exemplu, nu se poate defini o variabil numit Sub, dar se poate
utiliza identificatorul Sub16)
Constante
O constant este un identificator a crui valoare asociat nu se modific
pe parcursul unui program. Constantele se pot declara (explicit) cu instruciunea:

Const <NumeConstant> As <tip>] = <expresie>

Bazele informaticii

81

Secvene de cod VBA

Exemplu____________________________________________________________________________________
Const PI As Double = 3.1416, Raza As Integer = 25
Const LungimeCerc = 2 * PI * Raza
___________________________________________________________________________________Exemplu

Constantele de tip String se scriu ntre ghilimele.

Exemplu____________________________________________________________________________________
"Parvulescu Andrei"

"Constanta"
"204712"
"Str Trifoiului nr 5"
"#%$"
"" 'este irul nul pentru c intre ghilimele
'nu este specificat nici un caracter
____________________________________________________________________________________Exemplu

Constantele de tip Date se scriu ntre 2 caractere # (diez). Data i

ora se pot scrie n funcie de setrile definite n calculator.


Exemplu____________________________________________________________________________________
#1/17/2007#
#1:12:00 PM#
#1/17/2007 1:12:00 PM#
____________________________________________________________________________________Exemplu
Variabile
Numai o parte a datelor dintr-o aplicaie sunt constante. O variabil este un
identificator al unei poriuni din memoria calculatorului, a crui coninut poate fi
schimbat prin program. Fiecare variabil este de un anumit tip care impune
lungimea zonei de memorie ocupat de aceasta.
Pentru declararea explicit a variabilelor se utilizeaz instruciunea Dim.
Aceasta este plasat la nceputul programului, indicnd c, undeva pe parcurs, vor fi
necesare variabilele declarate. Formatul instruciunii de declarare este:
Bazele informaticii

82

Secvene de cod VBA

Dim <NumeVariabil> As <tip>

Instruciunea Dim se poate plasa oriunde ntr-o procedur, dar se

recomand scrierea sa la nceputul acesteia. Nu se pot defini dou


variabile cu acelai nume n aceeai procedur.
Exemplu____________________________________________________________________________________
Dim Raza As Single, LungimeCerc As Single
Dim Contor As Integer
____________________________________________________________________________________Exemplu

Instruciunea de atribuire
Prin instruciunea de atribuire, unei variabile i se asociaz valori.
Formatul ei este:
<NumeVariabil> = <expresie>
<expresie> poate fi o constant, o expresie matematic sau o alt
variabil.

Exemplu____________________________________________________________________________________
Dim Pretul As Single, Valoarea As Single
Dim Cantitatea As Integer
'...
Pretul = 34.3
Cantitatea = 10
Valoarea = Pretul * Cantitatea
_____________________________________________________________________________________Exemplu
Bazele informaticii

83

Secvene de cod VBA

Declaraiile constantelor i a variabilelor pot fi explicite sau implicite,

iar Basic suport ambele tipuri de declaraii. Declararea implicit are loc

o dat cu prima instruciune de atribuire, VBA atribuind automat tipul


cel mai adecvat.
Exemplu____________________________________________________________________________________
'prin instruciunea de atribuire:
Raza = 25 'raza este considerat de tip Integer
PI = 3.14 'PI este considerat de tip Single
LungimeCerc = 2 * PI * Raza 'LungimeCerc va fi de tip Single
'dar prin instruciunea de atribuire:
Raza = 25& 'raza este considerat de tip Long
_____________________________________________________________________________________Exemplu

Liste (arrays) de variabile


Termenul englezesc array are n terminologia romneasc doi
corespondeni: list sau vector, pentru tablourile cu o singur dimensiune,
matrice pentru tablourile cu 2 dimensiuni. Termenul tablou, care corespunde
direct celui array, este mai utilizat cnd sunt definite mai multe dimensiuni.

list reunete mai multe variabile care au acelai nume, fiind

identificate n cadrul listei printr-un indice. Limita minim implicit a

indicelui este zero !

Exemplu____________________________________________________________________________________
'...
'...

Dim Salariu(25) As Single


'salariul a 25 persoane
Dim Masiv3D(5, 6, 7) As Integer 'Tablou cu 3 dimensiuni
Salariu(0) = 1546.23 'Salariul primei persoane
Salariu(1) = 1265.7 'Salariul celei de a doua persoane

'...
Masiv3D(2, 5, 6) = 11
_____________________________________________________________________________________Exemplu

Bazele informaticii

84

Secvene de cod VBA

Liste dinamice
Prin instruciunea Dim se declar o list cu numr finit de elemente. Exist
instruciunea ReDim care permite crearea de liste dinamice. ReDim urmeaz unei
instruciuni Dim la care nu se precizeaz nici o limit. Nu se poate utiliza ReDim
pentru a redimensiona o list care s-a declarat deja cu un numr finit de elemente.
ReDim poate include i clauza Preserve pentru a se conserva vechile valori ale
listei.
Exemplu____________________________________________________________________________________
Dim Salariu() As Single
'...
'...
'...

'...

'list dinamic

ReDim Salariu(25)
Salariu(0) = 1546.23
Salariu(9) = 1366.7
ReDim Salariu(30)

'se adaug elemente suplimentatre


'dar ATENIE!
'se pierd valorile
'Salariu(0) i Salariu(9)

ReDim Preserve Salariu(30) 'cu clauza Preserve


'nu se pierd valori

_____________________________________________________________________________________Exemplu

Bazele informaticii

85

Secvene de cod VBA

1. S se editeze o secven de instruciuni pentru afiarea urmtoarelor valori:


nume (student), prenume, vrsta, anul (de studii), tax (pltitor de tax),
utiliznd tipurile de date adecvate.

(Word)

_______________________________________________________________
Date personale

Andrei Vrsta 21 Taxa True

_______________________________________________________________
Controale
CommandButton

TextBox

Proprieti
(Name):
Datele
Caption: Datepersonale
(Name):
Personale

Procedura eveniment (Click):


Private Sub Datele_Click()
nume = "Andrei"
varsta = 21
taxa = True
Personale = nume & " Vrsta " & varsta
End Sub

& " Taxa " & taxa

2. S se scrie o secven de program n care s se declare o list de salarii (ale


unor salariai), pentru care se va calcula un salariu mediu:

(Word)

_______________________________________________________________
Salariul mediu

1541.4

_______________________________________________________________

Bazele informaticii

86

Secvene de cod VBA

Controale
CommandButton

TextBox

Proprieti
(Name):
Salarii
Caption: Salariulmediu
(Name):
Media

Procedura eveniment (Click):


Private Sub Salarii_Click()
Dim Sal(25) As Single
Sal(0) = 1543.1
Sal(1) = 1447.76
Sal(2) = 1633.34
Media = (Sal(0) + Sal(1) + Sal(2)) / 3
End Sub

3. Pentru calculul valorii de viitor a unei investiii (MyFv) se utilizeaz formula:

MyFV Pmt *

(1 Rate) Nper 1
Rate

Unde:
Pmt reprezint plile,
Rate este rata dobnzii,
Nper numrul de perioade.
S se scrie un program pentru calculul depunerilor bneti cu dobnd.

(Word)
_______________________________________________________________
Sold

2327,59698849949

_______________________________________________________________
Controale
CommandButton

TextBox

Bazele informaticii

Proprieti
(Name):
Sold
Caption: Sold
(Name):
Valoare

87

Secvene de cod VBA

Procedura eveniment (Click):


Private Sub
Plata =
Dobanda
Numar =
Valoare
End Sub

Bazele informaticii

Sold_Click()
100
'Suma depus lunar
= 0.06 'Dobnda este de 6%
15
'Se fac 15 depuneri
= Plata * ((1 + Dobanda) ^ Numar - 1) / Dobanda

88

Funcii VBA predefinite

Unitatea de nvare Nr. 10


Funcii VBA predefinite
Cuprins
Obiectivele Unitii de nvare Nr. 10
10.1. Funcia Format
10.2. Funcii matematice
10.3. Funcii financiare
10.4. Funcii pe iruri de caractere
10.5. Funcii pentru dat calendaristic i timp
10.6. Funcii pentru conversii
10.7. Funcii pentru testarea tipului de date
Lucrare de verificare Unitate de nvare Nr. 10

Bazele informaticii

Pagina
90
90
91
91
93
93
94
94
95

89

Funcii VBA predefinite

Basic ofer utilizatorului mai multe funcii pentru a realiza diferite


operaiuni pentru care, altfel, ar trebui scrise secvene de cod. Funciile pot
apare ca operanzi n relaiile de calcul i pot avea 0, 1 sau mai multe
argumente (constante sau expresii de calcul) iar cu ajutorul lor se execut
calcule sau prelucrri i se furnizeaz un rezultat.
Funcia Format

Se utilizeaz, n special, pentru a specifica modul de afiare a numerelor:


Format ( <expresie>, <strFormat>)
<expresie>
poate fi o variabil, o constant sau o expresie format din acestea.
<strFormat> este una dintre valorile predefinite prezentate n tabelul
urmtor sau formatul de afiare definit de utilizator sub forma unui ir de
caractere. Fiecare caracter # indic o cifr, iar 0 precizeaz dac apar n
completare zerouri, la nceput sau la sfrit.
<strFormat>

Exemple

Format(8.6,"#.#")
8,6
Format(8.6,"#.00")
8,60
Formatareavalorilornumerice
Format(8.76,"#.00")
8,76
Format(8.76,"#.0")
8,8
Format(0.1,"Percent")
10,00%
Formatprocentual
Format(0.1,"#%")
10%
Separareagrupurilorde3cifre
Format(10000,"###,###lei")
10.000lei
Formatmonetar
Format(10,"Currency")
10,00lei
Afiarecudouzecimale
Format(10.236,"Fixed")
10,24
Formattiinific
Format(1233.07,"Scientific")
1,23E+03
True/Yes,False/Nodac<expresie>este#0 Format(0,"True/False")
False
sau0
Format(12.1,"Yes/No")
Yes
Format("SALUT","<")
salut
Formatareastringurilor
Format("salut",">"
SALUT
Format(Date,"LongDate")
27martie2007
Formatareadatelor
Format(Date,"dddd,mmmdyyyy")
Mari,mar272007
calendaristice
DateesteofuncieVBAcarefurnizeazdatacurent

Bazele informaticii

90

Funcii VBA predefinite

Funcii matematice
Funciile matematice i trigonometrice au ca argumente i ca rezultate
valori numerice.
Funcia
Int

Descriere
Numrulntregmaimicsauegal

Fix

Parteantreag

Abs
Sgn

Valoareaabsolut
Semnuluneiexpresii

Rnd

Exp
Log
Sqr
Atn
Sin
Cos
Tan

Exemple
Int(8.4)
Int(8.4)
Fix(8.4)
Fix(8.4)
Abs(7.2)
Sgn(2/3)

9
8
8
8
7,2
1

Numerealeatoaresubunitare

Int((100*Rnd)+1)
numerentre1i100

83?

elaputereax
Logaritmulnatural(bazae)
nbaza10:log(x)/log(10)
Radicalindice2
Arctangent
Sinus
Cosinus
Tangent

e=Exp(1)
Log(e)
Log(1000)/Log(10)
Sqr(9)
Pi=4*Atn(1)
Sin(Pi/2)
Cos(Pi)
Tan(Pi/4)

2,7182
1
3
3
3,1415
1
1
1

Funcii financiare
Funciile financiare efectueaz calcule obinuite pentru afaceri, ca de
exemplu determinarea plii pentru un mprumut, valoarea viitoare sau
valoarea net actualizat a unei investiii i valorile obligaiunilor sau
cupoanelor.
Argumentele comune pentru funciile financiare includ:
Valoarea viitoare (fv) valoarea investiiei sau mprumutului dup ce
s-au efectuat toate plile.
Numrul de perioade (nper) numrul total de pli sau perioade ale
unei investiii.
Valoarea actualizat (pv) valoarea unei investiii sau a unui
mprumut la nceputul perioadei de investiie. De exemplu, valoarea
actualizat a unui mprumut este capitalul de baz care este
mprumutat.
Rata (rate) rata dobnzii sau rata de actualizare pentru un
mprumut sau o investiie.
Tip (type) intervalul la care sunt efectuate plile n timpul perioadei
de plat, ca de exemplu la nceputul unei luni sau la sfritul acesteia (
0 sau 1, implicit 0).
Bazele informaticii

91

Funcii VBA predefinite

Unele funcii financiare se folosesc pentru anuiti. O anuitate

const dintr-o serie de pli constante efectuate pe o perioad continu


(de exemplu un mprumut pentru un autoturism, sau un mprumut
ipotecar).
n funciile de anuiti, sumele pltite, cum ar fi depozitele pentru
economii, sunt reprezentate de numere negative; sumele primite, cum ar
fi un cec de dividente, sunt reprezentate prin numere pozitive.
Se recomand consecven n legtur cu unitile utilizate pentru
specificarea argumentelor rate i nper (de exemplu, pentru pli lunare la
un mprumut pe un numr de ani, rata dobnzii va fi mprit
ntotdeauna cu 12, iar nper va fi nmulit cu 12 i cu numrul de ani).
Cele mai importante funcii financiare sunt incluse n tabelul urmtor:
Funcia
FV(rate,nper,pmt,pv,type)

Descriere
Calculeazvaloareaviitoareauneiinvestiiibazate
pepliperiodiceiconstanteioratadobnzii
constant.
PV(rate,nper,pmt,fv,type)
ntoarcevaloareaactualizatauneiinvestiii.
Valoareaactualizatestesumatotalpecareo
reprezintnprezentoseriedepliviitoare.De
exemplu,pentrumprumut,sumamprumutat
estevaloareaactualizatpentrucreditor.
NPer(rate,pmt,pv,fv,type)
Furnizeaznumruldeperioadepentruoinvestiie
bazatpepliperiodiceconstanteiorat
constantadobnzii.
Pmt(rate,nper,pv,fv,type)
Calculeazplatapentruunmprumutbazatpepli
constanteioratconstantadobnzii.
Ipmt(rate,per,nper,pv,fv,type)
Determinplatadobnziipeoperioaddat,
pentruoinvestiiebazatpepliperiodice
constanteioratconstantadobnzii.
Argumentelemarcateboldsuntobligatorii,celelaltesuntopionale.

Bazele informaticii

92

Funcii VBA predefinite

Funcii pe iruri de caractere


Aceste funcii realizeaz prelucrri simbolice asupra unor iruri de
caractere.
Funcia
Asc
Len
Ucase
Lcase
LTrim
RTrim
Trim
Mid
Space
Replace
Left
Right

Descriere
Codulunuicaracter
Numruldecaracteredinir
Literemari
Literemici
Eliminaspaiiledinstnga
Eliminaspaiiledindreapta
Eliminaspaiiledelacapete
Extrageunsubir
Genereazspaii
nlocuieteunircualtir
Extrageunsubirstnga
Extrageunsubirdreapta

Exemple
Asc("B")
Len("VisualBasic")
UCase("abc")
LCase("ABC")
LTrim("def")
RTrim("def")
Trim("def")
Mid("abcdef",3,2)
"a"+Space(5)+"b"
Replace("As","s","ce")
Left("abcef",3)
Right("abcef",3)

66
12
"ABC"
"abc"
"def"
"def"
"def"
"cd"
"ab"
"Ace"
"abc"
"cef"

Funcii pentru dat calendaristic i timp


Aceste funcii sunt utilizate frecvent n aplicaii: de la afiarea datei i/sau
orei curente, la transformarea din ani n zile sau din ore n minute.
Funcia
Descriere
Exemple
Now
Datasioracurent
Now
17.03.200717:01:08
Date
Datacurent
Date
17.03.2007
Time
Oracurent
Time
17:01:08
Day
Ziua
Day(Date)
17
Month
Luna
Month(Date)
3
Year
Anul
Year(Date)
2007
DateSerial
Dataspecificat
DateSerial(2007,2,17)
17.02.2007
TimeSerial
Oraspecificat
TimeSerial(18,5,27)
18:05:27
***
DateAdd
Adunlaodat
x=DateAdd("d",10,Date)
04.07.2007
***
DateDiff
Diferenadintredate
DateDiff("d",Date,x)
10
DatePart***
Unintervaldetimp
DatePart("m",Date)
3
***
Primulargumentreprezintintervaluldetimp(dziua,mluna,qtrimestrul,yziuadinan,w
ziuadinsptmn,wwsptmna,yyyyanul)

Bazele informaticii

93

Funcii VBA predefinite

Funcii pentru conversii

Se utilizeaz pentru a converti argumentul ntr-o dat de tipul specificat de


funcia utilizat.
Funcia
Exemple
Chr
Chr(65)
"A"
Str
Str(14.34)
"14.34"
Val
Val("1615198Constanta")
1615198
CBool
CBool(4>5)
False
CByte
CByte(12*13)
156
CInt
CInt(1725.61700)
26
CSng
CSng(17/18)
0,9444444
CDbl
CDbl(1/2.0E+99)
5E100
CDate
CDate(#3/17/2007#)
17.03.2007

Funcii pentru testarea tipului de date


Funciile pentru testarea tipului de date sunt denumite i funcii pentru
inspectarea datelor, stabilind dac o expresie, sau o variabil, este sau nu este
de un anume tip.
Funcia
IsDate
IsNumeric
VarType

Bazele informaticii

Descriere
Argumentulesteo
expresie
Argumentulesteo
variabil
0Empty
1Null
2Integer
3Long
4Single
5Double
6Currency
7Date
8String

Exemple
IsDate(#3/17/2007#)
IsNumeric(12.3)

True
True

VarType("Basic")

94

Funcii VBA predefinite

1. S se calculeze valoarea funciei f(x) pentru diferite valori ale argumentului


x0 :

f ( x) x 2 x 1 e x

(Word)
_______________________________________________________________
x= 7

Valoarea lui f: 1104.18299286373

_______________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
(Name):
Enabled:

x
f
False

Procedura eveniment (Change):


Private Sub x_Change()
If IsNumeric(x.Text) And Val(x.Text)>=0 Then
E = Exp(1)
f = Sqr(x ^ 2 + x + 1) + E ^ x
End If
End Sub

2. Scriei o secven program prin care s determinai a cta zi de natere


srbtorii astzi.

(Word)
_______________________________________________________________
Data naterii =

3/20/1990

Au trecut:

7214 zile

_______________________________________________________________

Bazele informaticii

95

Funcii VBA predefinite

Controale
TextBox
TextBox

Proprieti
(Name):
DataNasterii
(Name):
Zile
Enabled : False

Procedura eveniment (Change):


Private Sub DataNasterii_Change()
If IsDate(DataNasterii) Then
Zile = DateDiff("d", DataNasterii, Date)
End If
End Sub

3. S se editeze o interfa grafic pentru efectuarea unor calcule financiare (funciile de


calcul FV, PV, Nper, Pmt).

(Word)

_______________________________________________________________

10

13
-100
FV

PV

Valoarea calculat:

NPer

1.367,03 lei

Pmt

_______________________________________________________________
Controale
TextBox
TextBox
TextBox
TextBox

OptionButton
OptionButton
OptionButton
OptionButton

Proprieti
(Name):
(Name):
(Name):
(Name):
Enabled :
Caption :
Caption :
Caption :
Caption :

v1
v2
v3
fc
False
FV
PV
NPer
Pmt

Procedurile eveniment (Click):


Private Sub OptionButton1_Click()
' Definirea formatului monetar.
Fmt = "###,##0.00 lei"
functia = FV(v1 / 100 / 12, v2, v3)
Bazele informaticii

96

Funcii VBA predefinite

fc = Format(functia, Fmt)
End Sub
Private Sub OptionButton2_Click()
' Definirea formatului monetar.
Fmt = "###,##0.00 lei"
functia = PV(v1 / 100 / 12, v2 * 12, v3)
fc = Format(functia, Fmt)
End Sub
Private Sub OptionButton3_Click()
' Definirea formatului.
Fmt = "###,##0 luni"
functia = NPer(v1 / 100 / 12, v2, v3)
fc = Format(functia, Fmt)
End Sub
Private Sub OptionButton4_Click()
' Definirea formatului monetar.
Fmt = "###,##0.00 lei"
functia = Pmt(v1 / 100 / 12, v2 * 12, v3)
fc = Format(functia, Fmt)
End Sub
Verificare:

FV

Pentru 13 depuneri lunare, a 100 uniti lei, cu dobnd anual

10%, valoarea soldului atins:

PV Valoarea depunerii bancare pentru returnarea lunar a 150 lei


(dobnda anual 9,5%, 12 ani):

Bazele informaticii

97

Funcii VBA predefinite

NPer Numrul de luni necesare atingerii unui sold de 2000 lei (depunere
lunar 100, dobnda anual 9,5%):

Pmt Pentru un mprumut bancar de 13000 uniti bancare, pe 12 ani,


dobnda anual 9,5%, plile lunare sunt:

4. Returnarea unui mprumut bancar se poate realiza n pli constante (care


se determin cu funcia Pmt) sau n pli variabile (valoarea mprumutului/
numrul de perioade + dobnda calculat prin Ipmt). Suma plilor

constante este egal cu suma plilor variabile. S se verifice aceast


situaie pentru un mprumut de 4000 lei returnabil n 4 luni cu o dobnd
lunar de 2%.

(Word)
_______________________________________________________________
-4201.9800427406

-4201.9800427406

Verificare

_______________________________________________________________

Bazele informaticii

98

Funcii VBA predefinite

Controale
TextBox
TextBox
CommandButton

Proprieti
(Name):
(Name):
(Name):
Caption :

PlataCt
PlataVar
Verificare
Verificare

Procedura eveniment (Click):


Private Sub Verificare_Click()
'dobanzile pe cele 4 luni
Ipmt1 = IPmt(2 / 100, 1, 4, 4000)
Ipmt2 = IPmt(2 / 100, 2, 4, 4000)
Ipmt3 = IPmt(2 / 100, 3, 4, 4000)
Ipmt4 = IPmt(2 / 100, 4, 4, 4000)
'Suma platilor constante
PlataCt = 4 * Pmt(2 / 100, 4, 4000)
'Suma platilor variabile
PlataVar = (-4000 + Ipmt1 + Ipmt2 + Ipmt3 + Ipmt4)
End Sub

Bazele informaticii

99

Structuri de control VBA

Unitatea de nvare Nr. 11


Structuri de control VBA
Cuprins
Obiectivele Unitii de nvare Nr. 11
11.1. Structurile de control
11.1.1. Instruciunea de selecie simpl
11.1.2. Instruciunea de selecie multipl
11.1.3. Structurile repetitive
11.1.3.1. Ciclul Do While (cu test iniial)
11.1.3.2. Ciclul Do Until (cu test iniial)
11.1.3.3. Ciclurile Do While i Do Until cu test final
11.1.3.4. Ciclul For Next, cu numr finit de pai
Lucrare de verificare Unitate de nvare Nr. 11

Pagina
101
102
102
103
107
107
108
110
110
111

Bazele informaticii

100

Structuri de control VBA

Procesul de rezolvare a problemelor cu ajutorul calculatorului const n


dou activiti: dezvoltarea algoritmului i reprezentarea acestuia ca program.
Procesul de elaborare al algoritmului reprezint etapa cea mai important,
obligatorie i de cele mai multe ori cea mai dificil. Descoperirea algoritmului
nseamn gsirea unei metode de rezolvare a problemei, claritatea i calitatea
acestuia impunnd fiabilitatea i calitatea programului. n contextul dezvoltrii
programelor, etapele de rezolvare ale problemelor corespund cu cele definite de
matematicianul G. Polya, n 1945:
nelegerea problemei este etapa cea mai important i const n:
definirea datelor de intrare (tip, proprieti, domeniul valorilor),
definirea rezultatelor (ieirile),
stabilirea relaiilor dintre date i rezultate.
Conceperea modului de rezolvare a problemei i descrierea acestuia
printr-un algoritm.
Reprezentarea algoritmului ca program.
Evaluarea programului din punct de vedere al corectitudinii i ca
potenial instrument pentru rezolvarea altor probleme.
n practica reprezentrii algoritmilor se utilizeaz diverse forme cum ar fi
schemele logice, limbajul algoritmic (pseudocod), limbajele de programare,
ns, indiferent de modul de descriere al acestora, se stabilete o mulime bine
definit de blocuri elementare la care se au n vedere dou elemente: sintaxa i
semantica (sintaxa se refer la reprezentarea simbolic a acestora, n timp ce
semantica la semnificaia lor).
Ansamblul de instruciuni ale limbajului de programare, alese pentru
reprezentarea algoritmilor, trebuie s fie adaptat la specificul de calcul
electronic. De obicei aceste instruciuni sunt definite la un nivel mai nalt dect
cel oferit de limbajul n cod main, astfel nct abordarea construciei i
analizei algoritmilor se face prin prisma unor concepte moderne, cum ar fi
principiile programrii structurate.
Programarea structurat (introdus n 1972 de E.W. Dijkstra,
fundamentarea matematic fiind fcut de Bhm i Jacopini ntr-un articol
publicat n 1966) este o metod de codificare a algoritmilor de calcul, prin
definirea unui set de instruciuni grupate n trei structuri fundamentale:
secvena, selecia i ciclul.
Bazele informaticii

101

Structuri de control VBA

Secvena,tradusninstruciunisimple(instruciuneadeatribuire,instruciuneade
apelsubprogram,instruciunideintrare/ieire,subprograme).
Instruciune 1

Instruciune 2

Instruciune n

Selecia,(structuraalternativ)IfThenEndIf.

Instruciune 1

True

Condiie

False

Instruciune 2

Ciclul(iteraia)cutestiniialsaucutestfinal(attatimpct,pncnd)Do
While,DoUntil.
Instruciuni

Condiie

Condiie

Instruciuni

Structurile de control
Structurile selective
Instruciunea de selecie simpl

If <condiie> Then
<instruciuni 1>
[Else
<instruciuni 2>]

End If
Instruciunea de selecie simpl condiioneaz execuia unor seturi de
instruciuni prin evaluarea expresiei logice reprezentat n <condiie>. Dac

Bazele informaticii

102

Structuri de control VBA

expresia logic <condiie> este True se va executa grupul <instruciuni 1>.


n cazul valorii False a condiiei apar dou cazuri:
dac exist clauza Else se va executa grupul <instruciuni 2>.
n absena clauzei Else nu se execut nici o instruciune, comanda
terminndu-se imediat.

Exemplu (Word) ____________________________________________________________________

Un an este bisect dac este divizibil cu 4 i (And) nu este divizibil cu 100


sau (Or) este divizibil cu 400.
_______________________________________________________________
Anul: 1900

Anul nu este bisect

_______________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
An
(Name):
R
Enabled:
False
Urmtoareasecvenverificdacunanestebisectsaunu:
Private Sub An_Change()
If IsNumeric(An) Then
If An Mod 4 = 0 And An Mod 100 <> 0 Or An Mod 400 = 0 Then
R = "Anul este bisect"
Else
R = "Anul nu este bisect"
End If
End If
End Sub

____________________________________________________________________________________Exemplu

Instruciunea de selecie multipl


Pentru a codifica mai multe alternative, este posibil nlnuirea mai multor
instruciuni If, dar cu ct numrul acestora este mai mare, cu att urmrirea lor
devine mai dificil. Alternativ pentru astfel de situaii este instruciunea Select
Case.

Bazele informaticii

103

Structuri de control VBA

Select Case <expresie>


Case <list de valori 1> | Is <condiie 1>
<instruciuni 1>

Case < list de valori 2>| Is <condiie 2>


<instruciuni 2>

Case < list de valori n>| Is <condiie


n><instruciuni n>

[Case Else
<instruciuni>]

End Select

Selecie dup list de valori. n funcie de valoarea efectiv a expresiei,


care poate fi numeric sau caractere, se va executa un singur bloc de
instruciuni. Dac expresia are o valoare ce nu se regsete ntre
valorile prevzute, se va executa - dac s-a specificat - blocul de
instruciuni de dup Case Else (altfel, nu se execut nimic). n lista de
valori, elementele listei sunt separate prin virgul. Se poate folosi i
clauza To (pentru precizarea unui interval de valori).
Exemplu 1 (Word) _________________________________________________________________________
___________________________________________________________
Selecie: 3

Culoare:

Nuanta de verde

_______________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
(Name):
Enabled:

Selectie
Cul
False

Procedura eveniment:

Private Sub Selectie_Change()


Select Case selectie
Case 1
Culoare = "Rosu"
Case 2, 3, 4
Culoare = "Nuanta de verde"
Case 5
Culoare = "Albastru"
Bazele informaticii

104

Structuri de control VBA

Case 6 To 9
Culoare = "Nuanta de gri"
Case Else
Culoare = "Nici o Culoare"
End Select
Cul = Culoare
End Sub
____________________________________________________________________________________Exemplu
Exemplu 2 (Word)________________________________________________________________________
Notnd cu a, b, c trei valori pozitive s se stabileasc dac segmentele de

dreapt corespunztoare acestora pot constituii un triunghi - trei segmente de


dreapt pot forma un triunghi dac fiecare este strict mai mic ca suma
celorlalte dou.
_______________________________________________________________

1
3
c=
b=
Nu formeaza un triunghi
rspuns:

a= 2

_______________________________________________________________
Controale
TextBox
TextBox
TextBox
TextBox

Proprieti
(Name):
(Name):
(Name):
(Name):
Enabled:

S1
S2
S3
Raspuns
False

Procedurile eveniment:

Private Sub S1_Change()


a = Val(S1)
b = Val(S2)
c = Val(S3)
If a < b + c And b < a + c And c < a + b Then
Select Case True
Case a = b And b = c
Raspuns = "Echilateral"
Case a = b Or a = c Or b = c
Raspuns = "Isoscel"
Case Else

Bazele informaticii

105

Structuri de control VBA

Raspuns = "Oarecare"
End Select
Else
Raspuns = "Nu formeaza un triunghi"
End If
End Sub
Private Sub S2_Change()
S1_Change
End Sub
Private Sub S3_Change()
S1_Change
End Sub
____________________________________________________________________________________Exemplu

Selecie dup condiie. Pentru a extinde posibilitile de utilizare a


structurii alternative, se folosete un format care permite compararea
expresiei cu o valoare, folosind alt operator dect cel de egalitate
(clauza Is).

Exemplu (Word) ____________________________________________________________________

Pentru citirea a dou note de la tastatur i afiarea unor calificative se poate


utiliza urmtoarea interfa:

_______________________________________________________________
Nota1:

Nota2:

Media:

8.5

Foarte bine
Calificativ:

_______________________________________________________________
Controale
TextBox
TextBox
TextBox

TextBox

Bazele informaticii

Proprieti
(Name):
(Name):
(Name):
Enabled:
(Name):
Enabled:

Nota1
Nota2
Media
False
Calificativ
False

106

Structuri de control VBA

Procedurile eveniment:

Private Sub Nota1_Change()


n1 = Val(Nota1)
n2 = Val(Nota2)
Media = (n1 + n2) / 2
Select Case Val(Media)
Case Is < 5
Calificativ = "Nesatisfacator"
Case Is <= 7
Calificativ = "Slab"
Case Is <= 8
Calificativ = "Bine"
Case Is < 10
Calificativ = "Foarte bine"
Case 10
Calificativ = "Felicitari"
Case Else
Calificativ = "Eroare"
End Select
End Sub
Private Sub Nota2_Change()
Nota1_Change
End Sub
____________________________________________________________________________________Exemplu
Structurile repetitive
Ciclul Do While cu test iniial (execut ct timp)

Do While <condiie>
<instruciuni>
[Exit Do]
<instruciuni>

Loop
ntr-un ciclu Do While grupul de instruciuni care constituie corpul ciclului
este executat att timp ct este ndeplinit condiia. Clauza Exit Do impune
abandonarea execuiei instruciunii (salt dup Loop). Ciclul se poate executa de
zero, unu sau mai multe ori.

Bazele informaticii

107

Structuri de control VBA

Ciclul Do Until cu test iniial (execut pn cnd)

Do Until <condiie>
<instruciuni>
[Exit Do]
<instruciuni>

Loop
ntr-un ciclu Do Until grupul de instruciuni care constituie corpul
ciclului este executat pna cnd este ndeplinit condiia. Clauza Exit Do
impune abandonarea execuiei instruciunii (salt dup Loop). Ciclul se poate
executa de zero, unu sau mai multe ori.
Exemplu 1 (Word) ______________________________________________________________________
Pentru scrierea unui numr natural zecimal n baza de numeraie 2, se
poate folosi metoda mpririlor succesive la 2, pn la obinerea primului ct
egal cu zero. Exemplu:

6:2=3:2=1:2=0
6
2
0 _
0
1
1
Rezult c 6(10)= 110(2)

__________________________________________________________
Numr n baza 10:

23

Numr n baza 2:

10111

_____________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
(Name):
Enabled:

B10
B2
False

Procedura eveniment:

Private Sub B10_Change()


Dim NumarZecimal As Integer
Dim SirulResturilor(30) As Integer
Dim NumarBinar As String
NumarBinar = ""

Bazele informaticii

108

Structuri de control VBA

NumarZecimal = B10
ctul = NumarZecimal
indice = 0
Do While ctul > 0
SirulResturilor(indice) = ctul Mod 2
ctul = ctul \ 2
indice = indice + 1
Loop
Do Until indice = 0
indice = indice - 1
NumarBinar = NumarBinar & SirulResturilor(indice)
Loop
B2 =NumarBinar
End Sub
indice reprezint poziia n irul resturilor (rezultate prin mpriri
succesive la 2);
SirulResturilor conine valorile cifrelor binare (dar n ordine
invers) i este o variabil de tip Array completat in ciclul Do

While;

NumarBinar este irul caracterelor binare, compus n ciclul Do

Until.

____________________________________________________________________________________Exemplu

Exemplu 2 (Word) ________________________________________________________________

S se calculeze, folosind ciclurile cu test iniial, suma numerelor naturale pare,


strict mai mici dect un numr natural n dat.
_______________________________________________________________
Numrul natural:

6
Suma:

_______________________________________________________________
Controale
TextBox
TextBox

Bazele informaticii

Proprieti
(Name):
(Name):
Enabled:

Numar
Sum
False

109

Structuri de control VBA

Procedura eveniment (n dou variante):

Private Sub Numar_Change()


'nr trebuie sa fie pozitiv
nr = Val(Numar)
If nr > 0 Then
s = 0: i = 0
Do While i < nr
s = s + i
i = i + 2
Loop
Sum = s
End If
End Sub

Private Sub Numar_Change()


'nr trebuie sa fie pozitiv
nr = Val(Numar)
If nr > 0 Then
s = 0: i = 0
Do Until i >= nr
s = s + i
i = i + 2
Loop
Sum = s
End If
End Sub

______________________________________________________________________________Exemplu
Ciclurile Do While i Do Until cu test final
Exist variante ale instruciunilor Do While i Do Until care permit
execuia condiionat a secvenei de instruciuni, cel puin o dat:

Do
<instruciuni>
[Exit Do]
[<instruciuni>]

Loop While | Until <condiie>


Ciclul For Next, cu numr finit de pai

For <valoare> = <valoare 1> To <valoare 2> [Step <valoare 3>]


<instruciuni>
[Exit For]
<instruciuni>
Next [<valoare>]

n ciclul For Next grupul de instruciuni, constituind corpul acestuia,


se execut dup valorile variabilei contor <valoare>, ntr-un interval specificat
prin <valoare 1> i <valoare 2>. Variabila contor se incrementeaz implicit cu
1, dac nu este precizat pasul (Step) sau cu valoarea <valoare 3> dac apare

Bazele informaticii

110

Structuri de control VBA

clauza Step. Variabila contor primete o valoare iniial (<valoare 1>). Dup
fiecare ciclu, contorul este incrementat i comparat cu valoarea final (<valoare
2>). Dac nu s-a ajuns la valoarea final, execuia ciclului de instruciuni se reia,
n caz contrar trecndu-se la linia de dup Next. Exit For are acelai rol ca
Exit Do de la comenzile Do Loop.

Exemplu (Word) _____________________________________________________________________


______________________________________________________________
Suma primelor

100

numere naturale este:

5050

______________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
(Name):
Enabled:

n
Suma
False

Procedura eveniment:

Private Sub n_Change()


Suma = 0
For i = 1 To n
suma = suma + i
Next
End Sub
____________________________________________________________________________________Exemplu

S se editeze i s se ruleze secvenele de instruciuni Basic din


exemplele marcate cu simbolul

Bazele informaticii

111

Module VBA

Unitatea de nvare Nr. 12


Module VBA
Cuprins
Obiectivele Unitii de nvare Nr. 12
12.1. Variabile locale (private)
12.2. Variabile publice (globale)
12.3. Variabile private
12.4. Transmiterea argumentelor prin valoare i prin referin
12.5. Funcii recursive
Lucrare de verificare Unitate de nvare Nr. 12

Pagina
113
113
113
114
117
118
119

Bazele informaticii

112

Module VBA

Programarea modular este un procedeu prin care mai multe instruciuni


sunt grupate n proceduri (Sub i Function) destinate realizrii n mod
repetat a unor aciuni. Acestea pot fi definite n cadrul limbajului (proceduri
standard) sau de ctre programator (proceduri utilizator). Programarea
structurat combinat cu programarea modular contribuie la creterea
eficienei i productivitii n proiectarea de aplicaii. Procedurile de dimensiuni
mici, scrise pentru realizarea diverselor sarcini, n locul programelor vaste,
monolitice, concretizeaz programarea structurat. Prin divizarea aplicaiei n
mai multe proceduri se reduce efortul, o dat cu numrul de erori n scrierea
programelor. De asemenea, este simplificat ntreinerea aplicaiei.
n general, programatorii prefer s pun procedurile de utilitate
general n module. Se includ aici procedurile necesare n mai multe aplicaii.
(Module), din linia
Pentru a aduga un modul extern se acioneaz butonul
de butoane standard (prin meniu Insert, Module). Noul modul apare n
structura proiectului iar n fereastra de cod se poate scrie codul necesar.
Din punct de vedere al referirii variabilelor de lucru, din diferite zone ale
programului, se deosebesc dou tipuri de variabile:

Variabile locale accesibile doar n procedura n care au fost definite.


Ele sunt declarate prin Dim, Redim sau Static. Variabilele declarate
cu Static i pstreaz valorile pe tot timpul execuiei programului,
spre deosebire de cele declarate prin Dim sau Redim care sunt
terse din memorie la terminarea procedurii.
Sub test()
Static Dobanda As Single
Dobanda = 3 / 100
'...
End Sub
Variabile publice (globale) accesibile din orice procedur prin
declaraia Public.
'...
Public rataDobanzii As Single
'...

Bazele informaticii

113

Module VBA

Variabile private limitate la un modul sau procedur prin


declaraia Private.
'...
Private rataDobanzii As Single
'...

Variabilele publice i locale sunt declarate la nceput de modul.

Orice program poate conine unul sau mai multe proceduri.

Singura deosebire dintre procedurile Sub i Function este c cele


de tip Function returneaz o valoare care se atribuie unei variabile
iar celelalte nu.

Din orice procedur pot fi apelate alte proceduri (apeluri n cascad).

Orice procedur apelat este cutat mai nti n cadrul seciunii


curente, apoi n modulele externe.

Execuia unei proceduri depinde de parametrii externi transmii


acestuia i se va opri la sfrit (End Sub, End Function) sau la
ntlnirea instruciunii de ieire din procedur (Exit Sub, Exit

Function).

Dup executarea unei proceduri se revine n programul apelant.

O procedur poate avea atributele Private sau Public.

Exemple____________________________________________________________________________________
()
O procedur ValoareTva, pentru calculul valorii TVA (Tva este variabil cu
atribut Public), poate fi definit ntr-un modul extern:

Apelul procedurii i transmiterea parametrului:

Bazele informaticii

114

Module VBA

()
Se editeaz o procedur, inclus ntr-un modul, pentru ordonarea unui ir
de numere prin metoda interschimbrii.
Explicarea metodei interschimbrii:

Se consider un ir de numere a1, a2, a3 an-1, an.


Se compar, pe rnd cte dou elemente ale irului. Dac valorile lor
corespund criteriului de ordonare (cresctor sau descresctor) atunci ele
rmn pe aceeai poziie, dac nu, se interschimb:
a1 a2 a3 an-1 an
Comparrile se reiau pn cnd nu mai e necesar nici o interschimbare.

Sub Ordonare(n As Integer, a() As Single)


Dim aux As Single
Do While Not gata
gata = True
For i = 0 To n - 2
If a(i) > a(i + 1) Then
aux = a(i)
a(i) = a(i + 1)
a(i + 1) = aux
gata = False
End If
Next
Loop
End Sub
Pentru definirea elementelor irului, apelul procedurii de ordonare a
elementelor lui i afiarea irului ordonat, se poate utiliza urmtoarea
secven:
Sub test()
Const n As Integer = 4
Dim a(n) As Single
a(0) = 89.5
a(1) = -7.23
a(2) = 2.5
a(3) = 6
'

Bazele informaticii

115

Module VBA

Call Ordonare(n, a) 'Apelul procedurii


'
For i = 0 To n - 1
SirOrdonat = SirOrdonat & a(i) & "
Next
MsgBox(SirOrdonat)
End Sub

"

()
O funcie ValoareTva, pentru calculul valorii TVA, poate fi definit ntr-un
modul extern:
Function ValoareTva(val As Single) As Single
ValoareTva = val * 0.19
End Function
Apelul funciei i transmiterea parametrului Valoare se poate realiza n
acelai modul sau dintr-un modul extern:
Sub test()
Dim Valoare As Single
Valoare = 12.75
'
v = ValoareTva(Valoare) 'apelul functiei
MsgBox("Valoarea Tva:" & v)
End Sub

()
Pentru calculul sumei 1+1/2+ +1/n se definete urmtoarea funcie:
Function Suma(n As Integer)
Dim s As Single
s = 0
For i = 1 To n
s = s + 1 / i
Next
Suma = s
End Function

Bazele informaticii

116

Module VBA

Apelul funciei i transmiterea parametrului n:


Sub test()
Dim n As Integer
n = 7
'
v = Suma(n) 'apelul functiei
'
MsgBox(n & " elemente: " & v)
End Sub
__________________________________________________________________________________Exemple
Transmiterea argumentelor prin valoare i prin referin
Exist dou variante de transmitere a argumentelor, stabilindu-se astfel
dac procedura, care le primete, le poate modifica i transmite napoi:
Dac se transmit prin valoare (cuvnt cheie ByVal care de obicei se
omite) - modalitatea implicit, procedura apelat poate modifica
valorile, dar aceste modificri nu se vor transmite procedurii apelante.
Transmiterea prin valoare protejeaz variabilele transmise, valorile lor
neputnd fi modificate n procedura apelant (procedura apelat
primete copii ale variabilelor din procedura apelant). Se recomand
transmiterea datelor prin valoare, atunci cnd modificarea lor nu e
necesar sau e riscant.
Dac se transmit prin referin (cuvnt cheie ByRef), procedura
apelat poate modifica valorile variabilelor transmise, modificri care
sunt apoi transmise procedurii apelante. Transmiterea prin referin
(sau adres) permite procedurii s actualizeze variabilele, modificrile
fiind percepute de variabile i n procedura apelant. Dup ce acesta
redobndete controlul, variabilele transmise i modificate vor rmne
cu noile valori.
Exemplu____________________________________________________________________________________
Procedura Sub ValoareTva, pentru calculul valorii Tva, transmiterea
parametrilor prin referin:
Sub ValoareTva(ByRef valoare, ByRef Tva)
Tva = Valoare * 0.19
End Sub

Bazele informaticii

117

Module VBA

Apelul procedurii i transmiterea parametrilor Valoare i Tva:


Sub Test()
Dim Valoare As Single, Tva As Single
Valoare = 1300.60
'
Call ValoareTva(Valoare, Tva) 'apelul procedurii Sub
'
MsgBox("Valoarea Tva:" & Tva)
End Sub
____________________________________________________________________________________Exemplu
Funcii recursive
O funcie este recursiv dac se apeleaz pe ea nsi.
Exemplu____________________________________________________________________________________
Pentru calculul funciei factorial, fact, este definit urmtoarea secven
de instruciuni:
Function fact(n As Integer) As Integer
If n = 0 Then
fact = 1
Else
fact = n * fact(n - 1)
End If
End Function
Apelul funciei i transmiterea parametrului n:
Sub Test()
Dim n As Integer, f As Integer
n = 5
'
f = fact(n) 'apelul functiei
'
MsgBox(n & " factorial este: " & f)
End Sub

____________________________________________________________________________________Exemplu

Bazele informaticii

118

Module VBA

1. Editai propria funcie de calcul a depunerilor cu dobnd cu relaia:

MyFV Pmt *
Unde:

(1 Rate) Nper 1
Rate

Pmt reprezint plile,


Rate este rata dobnzii,
Nper numrul de perioade.
Comparai rezultatul aplicrii ei cu valorile obinute prin funcia Basic FV.
_______________________________________________________________

Rata dobnzii: 0,1

Numrul de perioade: 2
210

Plata: 100

Calcul

-210

_______________________________________________________________
Controale
TextBox
TextBox
TextBox
TextBox
TextBox
CommandButton

Proprieti
(Name):
(Name):
(Name):
(Name):
(Name):
(Name):
Caption :

Rate
Nper
Pmt
F1
F2
Calcul
Calcul

Bazele informaticii

119

Module VBA

Procedurile:

Function MyFV(Rate, Nper, Pmt) As Double


MyFV = Pmt * ((1 + Rate) ^ Nper - 1) / Rate
End Function

Private Sub Calcul_Click()


F1 = MyFV(Rate, NPer, Pmt)
F2 = FV(Rate, NPer, Pmt)
End Sub

2. S se calculeze combinrile de n luate cte k ( Cn ) utiliznd relaia de


recuren:

Cnk Cnk1 Cnk11 , cazuri particulare : Cn0 Cnn 1 i Cn1 n


_______________________________________________________________
Combinri de:

luate cte:

10

Calculeaz

_______________________________________________________________
Controale
TextBox
TextBox
TextBox
CommandButton

Proprieti
(Name):
(Name):
(Name):
(Name):
Caption :

v1
v2
Combinari
Calculeaza
Calculeaz

Procedurile:

Function comb(n, k) As Integer


If k = 0 Or n = k Then
Comb = 1
Exit Function
End If
If k = 1 Then
Comb = n
Exit Function
End If
comb = comb(n - 1, k) + comb(n - 1, k - 1)
End Function

Bazele informaticii

120

Module VBA

Private Sub Calculeaza_Click()


n = val(v1)
k = val(v2)
Combinari = comb(n, k)
End Sub

3. S se calculeze al n-lea termen al irului Fibonacci definind o funcie


recursiv. Relaia de calcul este:
1, n 0

Fib ( n ) 1, n 1

Fib ( n 1) Fib ( n 2), n 1

_______________________________________________________________
al

-lea termen este

_______________________________________________________________
Controale
TextBox
TextBox

Proprieti
(Name):
(Name):

Numa
Pozitia

Procedurile:

Function Fib(n) As Integer


If n = 0 Or n = 1 Then
Fib = 1
Else
Fib = Fib(n - 1) + Fib(n - 2)
End If
End Function
Private Sub Numar_Change()
n = val(Numar)
Pozitia = Fib(n)
End Sub
4. S se calculeze cel mai mare divizor comun a dou numere, conform
relaiei recursive a lui Euclid:

x, dac y 0
cmmdc( x, y )
cmmdc( y, x mod y ) dac y 0
Bazele informaticii

121

Module VBA

unde mod este operatorul modulo.


_______________________________________________________________
Cel mai mare divizor comun pentru: 9

18

este

_______________________________________________________________
Controale
TextBox
TextBox
TextBox

Proprieti
(Name):
(Name):
(Name):

a
b
rezultat

Procedurile:

Function cmmdc(x, y) As Integer


If y = 0 Then
cmmdc = x
Else
cmmdc = cmmdc(y, x Mod y)
End If
End Function
Private Sub a_Change()
x = val(a)
y = val(b)
rezultat = cmmdc(x, y)
End Sub
Private Sub b_Change()
a_Change
End Sub

Bazele informaticii

122

Formulare VBA

Unitatea de nvare Nr. 13 i 14


Formulare VBA
Cuprins
Obiectivele Unitii de nvare Nr. 13 i 14
13.1. Formulare (form-uri)
13.2. Proprieti i proceduri eveniment
13.3. Proprietatea Caption
13.4. Proprietatea StartUpPosition
13.5. Proprietatea Height i Width
13.6. Proprietile ForeColor i BackColor
13.7. Utilizarea controalelor
13.7.1.
CommandButton
13.7.2.
Label
13.7.3.
TextBox
13.7.4.
CheckBox
13.7.5.
Frame
13.7.6.
OptionButton
13.7.7.
ListBox
13.7.8.
ComboBox
13.7.9.
Image
13.7.10.
SpinButton
13.8. Modificarea proprietilor din cod
Lucrare de verificare Unitate de nvare Nr. 13 i 14

Pagina
122
124
125
126
128
128
129
130
131
131
134
137
139
140
142
145
148
149
150
155

Bazele informaticii

123

Formulare VBA

n mediul Windows, o aplicaie ofer o multitudine de alternative grupate


n ferestre de dialog dintre cele mai diferite. Activitile i ordinea n care se
desfoar ele sunt stabilite de utilizator - programul se afl ntr-o stare de
ateptare, iar utilizatorul poate alege una din opiunile oferite. Programul
trebuie conceput astfel nct s rspund la toate aciunile utilizatorului. Orice
aciune - apsarea unei taste, clic cu mouse-ul i micarea lui, etc. - reprezint
un eveniment. Aplicaiile care ruleaz sub sistemul de operare Windows sunt
dirijate de evenimente iar rezolvarea sarcinilor de execuie ale acestora impune
conceptul de programarea dirijat de evenimente.
Interfaa cu utilizatorul, a unui program,
permite utilizatorului s
interacioneze cu programul i conine orice control (cum ar fi butoane, casete
de text) pe care utilizatorul l manipuleaz pentru a furniza comenzi sau
informaii programului.

Formulare (form-uri)
Limbajul Basic faciliteaz crearea interfeelor cu utilizatorul
intermediul unui set de controale, din caseta cu instrumente (Toolbox).

prin

Un proiect VBA grupeaz unul sau mai multe formulare i module. n


formulare (UserForm) se poziioneaz controale OLE (obiecte de interfa) care
permit introducerea sau extragerea datelor utilizatorului n mod interactiv.
Controalelor din formular le sunt asociate proprieti i metode (proceduri
eveniment). Procedurile eveniment sunt secvene de instruciuni care pot fi
modificate, ca de altfel i proprietile controalelor incluse n formular.
Modificrile efectuate se reflect n aspectul formularului i n comportamentul
acestuia n diferite situaii..
n varianta Visual Basic i a produselor similare, proiectul (programul)
este un ansamblu de proceduri eveniment, cele mai multe avnd dimensiuni
reduse i fiecare tratnd un eveniment individual. O astfel de procedur este
ataat unui control i se execut numai cnd controlul respectiv intercepteaz
evenimentul pentru care a fost scris. Altfel spus, un program va rspunde
unui eveniment care se produce la execuie numai dac a fost scris o
procedur pentru evenimentul respectiv; n caz contrar, evenimentul va fi
ignorat. Fiecare control al unui formular (ca i formularul nsui) suport mai
Bazele informaticii

124

Formulare VBA

multe evenimente. De exemplu, un buton poate rspunde la evenimentul clic


dac pentru acest eveniment este scris o procedur. Atunci cnd aplicaia se
va lansa n execuie, iar utilizatorul va efectua clic pe buton (se produce n
acest fel evenimentul), va fi lansat automat n derulare procedura definit.
Proprieti i proceduri eveniment
Un formular poate conine mai multe controale, el nsui fiind considerat
un control. Fereastra Properties permite alegerea controlului i a proprietii a
crei valoare se schimb, ca de exemplu:
Proprietatea Caption este destinat stabilirii unui titlu (denumire) pentru
formular sau control.
Proprietatea (Name) permite atribuirea unor nume controalelor. VBA
stabilete valori implicite proprietii (Name) cum ar fi:
UserForm1, UserForm2
pentru formulare (prin convenie,
numele formularelor utilizator vor fi prefixate de cuvntul frm, de
exemplu: frmPrincipal, frmCalcul);
Label1, Label2 pentru etichete (prefix convenional: lbl);
CommandButton1, CommandButton2 pentru butoane (prefix: btn);
TextBox1, TextBox2 pentru casete de text (prefix: txt).
Aceste nume ale controalelor pot fi folosite aa cum au fost definite de
VBA ns utilizatorul are posibilitatea stabilirii unor denumiri proprii.
Proprietile formularului sunt afiate, alfabetic (Alphabetic) sau pe
categorii (tab-ul Categorized):
Aparen (Appearence) : culorile utilizate, efectele vizuale de umplere
etc.
Comportare (Behaviour) : modul de continuare a aciunilor la prsirea
ultimului control de pe formular (Cycle) sau accesul utilizatorului la
obiect (Enabled).
Font (Font) : fontul implicit (poate fi modificat pentru fiecare control n
parte).
Diverse (Misc) : numele formei, imaginea mouse-ului etc.
Imagine (Picture) : imagini utilizate.
Poziie (Position) : poziie i dimensiuni.
Procedurile eveniment sunt secvene de instruciuni asociate diferitelor
controale la activarea/dezactivarea acestora. Afiarea ferestrei de cod este
realizat prin executarea unui dublu clic pe controlul pentru care se dorete
scrierea instruciunilor program. Numele procedurii (Click - pentru
CommandButton sau OptionButton, Change pentru TextBox) este
legat de numele controlului prin simbolul _ (underline) :
Bazele informaticii

125

Formulare VBA

Private Sub control_procedura()


End Sub
n instruciunile Basic, referirea la proprietatea unui control se face prin
construcia control.proprietate numele proprietii este legat de numele
controlului printr-un punct. Dac sunt create mai multe formulare referirea la
un control din cadrul unui formular se realizeaz printr-o construcie
asemntoare, adic formular.control.proprietate. Exist construcii speciale,
mai scurte, cum ar fi Me - care indic formularul curent.
Exemplu____________________________________________________________________________________
'
Me.Caption = "Actualizare"
'modific proprietatea Caption (titlu) a formularului
'
UserForm2.Label1.Caption = "Numele persoanei"
'modific proprietatea Caption a obiectului Label1
'
Me.Hide
'execut metoda Hide (ascundere)ataat formularului
____________________________________________________________________________________Exemplu
Proprietatea Caption
n general, proprietatea Caption a unui control stabilete textul pe care
respectivul control l afieaz. Proprietatea Caption a unui formular definete
titlul form-ului.
Dac nu este afiat fereastra de controale (Toolbox), avnd formularul
deschis n mediul de proiectare, din meniul View (afiare) se selecteaz
din linia de butoane standard.
opiunea Toolbox sau se apas butonul
Pentru introducerea unui control n formular (de exemplu un buton) se
utilizeaz mouse-ul (tragerea controlului n formular sau clic pe control i apoi
clic pe formular).
Dac nu este afiat fereastra de proprieti a unui formular, din meniul
View (afiare) se selecteaz opiunea Properties Window (fereastra de
dintre butoanele standard. Pentru un formular care
proprieti) sau butonul
conine controale sau componente, se poate folosi i lista derulant din

Bazele informaticii

126

Formulare VBA

fereastra Properties pentru a selecta obiecte din formular. Unui control selectat
i se pot configura proprietile.
Pentru a configura proprietatea Caption, a unui formular, n fereastra
de proprieti:

Se selecteaz acesta din lista (derulant) a obiectelor, inclus n


fereastra Properties.
Din lista de proprieti se alege proprietatea Caption.
Se introduce textul nou pentru proprietatea Caption (de exemplu,
Form-ul meu).

Pentru a configura proprietatea Caption din cod:

Se deschide editorul de cod (dublu-clic pe butonul Command


Button1).

Se folosete cuvntul cheie Me pentru a referi formularul n interiorul


procedurii de tratare a unui eveniment Click pe un buton:
Private Sub CommandButton1_Click()
Me.Caption = "O noua denumire"
End Sub

Se ruleaz proiectul i, prin clic pe buton, titlul formularului se schimb


la noua valoare.

Bazele informaticii

127

Formulare VBA

Proprietatea StartUpPosition
Proprietatea StartUpPosition determin poziia unui formular atunci
cnd este executat prima oar. De obicei, atunci cnd un formular ruleaz,
utilizatorul l poate muta.
Pentru a amplasa un formular n
ecranului folosind fereastra de proprieti:

mijlocul

Avnd formularul
deschis, n fereastra
Properties
se
selecteaz
opiunea
StartUpPosition.
n coloana din dreapta, se selecteaz 2CenterScreen.
Se ruleaz proiectul. Fereastra bazat pe form
va aprea n centrul ecranului.

Proprietile Height i Width


Prin aceste proprieti se fixeaz nlimea i limea (n pixeli) a ferestrei
formularului (unitatea de msur standard pentru monitoarele de calculator).
Se poate configura dimensiunea formularului n trei moduri:

Trgnd cu mouse-ul de latura de jos i/sau din dreapta a


formularului, n mediul de proiectare, pn ce formularul atinge
dimensiunile dorite. Schimbrile fcute n acest fel sunt reflectate, n
fereastra Properties, de Width (lime) i Height (nlime).

Setnd n fereastra de proprieti dimensiunile Width i Height.

Configurnd n cod valorile pentru Width i Height.

Bazele informaticii

128

Formulare VBA

Pentru a schimba dimensiunile unui formular din cod:

Se deschide editorul de cod (dublu-clic pe butonul Command


Button1).

Se folosete cuvntul cheie Me pentru a referi formularul n interiorul


procedurii de tratare a unui eveniment Click pe un buton:
Private Sub CommandButton1_Click()
Me.Width = 500
Me.Height = 300
End Sub

Se ruleaz proiectul i, prin clic pe buton, dimensiunile formularului se


schimb la noile valori.
Proprietile ForeColor i BackColor

Proprietatea ForeColor stabilete culoarea elementelor grafice i, mai


important, a textului. Proprietatea BackColor stabilete culoarea de fundal.
Ele se configureaz n acelai mod.
Atunci cnd se configureaz proprietile ForeColor i BackColor ale
unui formular, se configureaz, de asemenea, i valorile implicite ale acestora
pentru orice control aezat n interiorul formularului (n afara cazului n care se
configureaz culorile individual pentru un control, acesta va folosi valorile oferite
de form).
Pentru a configura proprietatea ForeColor
folosind fereastra de proprieti:
Se deschide un formular n mediul de
proiectare.
n
fereastra
Properties
se
alege

ForeColor.

n coloana din dreapta, clic pe sgeata n


jos.
Din tabul Palette se alege culoarea, n mod
vizual.

Bazele informaticii

129

Formulare VBA

Utilizarea controalelor
Includerea controalelor n cadrul unui formular se realizeaz prin
introducerea (drag&drop) unor obiecte (CommandButton, Label, TextBox,
etc.) n acest formular. Pentru aceasta, se acioneaz butonul corespunztor
din Toolbox i se stabilete poriunea dreptunghiular (zona) din formular unde
va fi afiat controlul. Practic, controlul va fi desenat (se poziioneaz cursorul
mouse-ului n colul stnga-sus al zonei de afiare, se ine apsat butonul stng
i se trage cursorul spre colul dreapta-jos). O dat plasat pe formular,
proprietile (starea) unui control pot fi vizualizate i modificate n fereastra
Properties", iar comportamentul su poate fi modelat prin scrierea procedurilor
eveniment. Toate controalele sunt obiecte i, ca urmare, rspund la evenimentele
declanate de entitile exterioare (utilizator, alte controale) prin intermediul
procedurilor eveniment.

Multe proprieti enumerate anterior pentru formulare se pot aplica

nu numai acestora ci i controalelor din formular.


Cele mai importante controale:

Buton

Etichet

Caset de text

Caset de validare
Cadru de grupare

Buton radio (opiune)

Caset cu list

List derulant

Caset de imagine

Generator de valori

Bazele informaticii

130

Formulare VBA

Controlul CommandButton este tipic pentru startul evenimentelor, pentru


cutarea i nchiderea formularelor, etc. Codul program de executat este plasat
pe buton este coninut n proprietatea
n metoda Click. Textul afiat
Caption, iar numele lui n proprietatea (Name). Mediul de proiectare VBA
atribuie nume butoanelor (CommandButton1, CommandButton2, ) dar este
indicat ca utilizatorul s foloseasc denumiri semnificative. Prin convenie
aceste denumiri ar putea fi prefixate prin literele btn (btnCalculeaza,
btnStart, ).

Controlul Label este utilizat pentru afiarea unor texte care nu pot fi
editate de utilizator. Este util pentru descrierea altor controale din formular
cum ar fi TextBox, ListBox, etc.
Proprietile cele mai importante ale controlului Label:
Proprietate

Name
Nume VBA: Label1, Label2, Convenie prefix: lbl.

AutoSize
Proprietate de tip boolean care definete modalitatea de dimensionare a etichetei
(automat - True, manual - False). Implicit este False (dimensiune fix). Dac se
fixeaz la valoarea True nlimea etichetei se autoregleaz n funcie de textul
introdus.

BackColor
Culoarea de fundal a textului de pe etichet. Sunt disponibile 2 palete de culori:
Palette i System.

BorderStyle
Stilul marginii (cadrului) etichetei: FmBackStyleOpaque, FmBackStyleTranparent.

Caption
Este proprietatea cea mai des utilizat i se refer la coninutul efectiv al

Bazele informaticii

131

Formulare VBA

etichetei. Poate fi stabilit att la proiectare, ct i n momentul execuiei.

ControlTipText
Afieaz un indicator textual, atunci cnd se plaseaz cursorul mouse-ului n zona
etichetei.

Font
Fontul (stilul caracterelor) cu care este afiat textul de pe etichet. Este o
proprietate care fixeaz atribute pentru tip, mrime, stil de afiare.

ForeColor
Culoarea cu care este scris textul n cadrul etichetei. Are aceeai plaj de valori
ca i BackColor.

Heigth
nlimea etichetei, n pixeli.

Picture
Imaginea care apare pe fundalul etichetei. Aceast proprietate reprezint de
fapt o referin ctre un fiier de tip imagine (bmp, jpg, gif, ico, etc).

PicturePosition
Alinierea imaginii n cadrul etichetei.

TextAlign
Modalitatea de aliniere a textului n cadrul suprafeei etichetei. Valori:
FmTextAlignLeft, FmTextAlignCenter, FmTextAlignRight. Implicit alinierea
textului este la stnga.

Visible
Permite ascunderea etichetei sau (re)afiarea ei pe ecran, n funcie de valorile
care i sunt atribuite: False, True.

Width
Limea etichetei, n pixeli.

Bazele informaticii

132

Formulare VBA

Exemplu____________________________________________________________________________________
Pe un formular se introduce o etichet cu
numele lblPoza, proprietatea Visible
avnd valoarea False. O imagine de fundal
este fixat prin proprietatea Picture:

n procedura eveniment a butonului se scriu urmtoarele linii de cod


care au rolul de a modifica titlul formularului (UserForm1), a etichetei i
a butonului (btnVizualizeaza):
Private Sub btnVizualizeaza_Click()
Me.Caption = "Poza mea"
lblPoza.Visible = True
btnVizualizeaza.Caption = "O feti!"
End Sub
Rezultat al apsrii butonului, la rularea
formularului:

____________________________________________________________________________________Exemplu

Bazele informaticii

133

Formulare VBA

Acest control este unul dintre cele mai folosite n programarea interfeelor
grafice datorit avantajelor pe care le ofer la introducerea datelor i la
manipularea lor. Definete un cmp de editare n care utilizatorul poate
introduce un text. Controlul TextBox afieaz mai multe linii atunci cnd
proprietatea Multiline este setat pe True. Aspectul textului afiat este
determinat de proprietile Font i ForeColor. La fel ca i la alte controale,
proprietile pot fi modificate prin cod program, n timpul rulrii aplicaiei.
Caseta de text este foarte flexibil n VBA, permind introducerea datelor
pe una sau mai multe linii de text, folosirea barelor de derulare (Scrollbars),
etc. De asemenea, o caset de text poate fi folosit n modul activ (utilizatorul
are acces la coninutul su) sau n modul inactiv (utilizatorul poate doar s
vizualizeze coninutul, textul fiind protejat n cazul n care se ncearc
modificarea sa).
Principalele proprieti, ale unei casete de text, sunt rezumate n tabelul
urmtor:
Proprietate

Name
Nume VBA: TextBox1, TextBox2, Convenie prefix: txt.

BackColor
Culoarea de fundal a casetei de text. n momentul proiectrii (la plasarea
casetei pe formular) se pot alege valori din 2 categorii: Palette, System,
fiecare cu propria sa palet de culori.

BorderStyle
Tipul marginii casetei de text. Sunt disponibile 2 variante:

0-FmBackStyleTransparent;
1-FmBackStyleOpaque.
Enabled
Proprietate de tip boolean care permite utilizatorului s modifice coninutul
casetei (True - implicit) sau protejeaz textul mpotriva modificrilor (False).

Bazele informaticii

134

Formulare VBA

ForeColor
Culoarea textului care este afiat n interiorul casetei. Maniera de selectare
este asemntoare cu cea asociat proprietii BackColor.

MaxLength
Numrul maxim de caractere care pot fi introduse n caseta de text. Poate fi
modificat la o valoare de tip Integer pozitiv.

MousePointer
Stabilete felul cursorului mouse-ului atunci cnd acesta se afl pe caseta de text.
Valorile pot fi alese dintr-o list: AppStarting, Arrow, Cross, Ibeam, NoDrop,
SizeAll

Multiline
Precizeaz dac textul din caset poate fi plasat pe mai multe rnduri. Este o
proprietate de tip boolean (implict False).

PasswordChar
Definete care este caracterul (de exemplu *) ce se va afia n mod repetat,
astfel nct textul din interior s nu poat fi descifrat. Util pentru proceduri
de introducere a parolelor sau a cuvintelor-cheie.

ScrollBars
Stilul barelor de derulare aferente casetei:

None (nu este prezent nici o bar de derulare);


Horizontal (bar de derulare orizontal, sub caseta de text);
Vertical (bar de derulare vertical, n dreapta casetei de text);
Both (bare de derulare vertical i orizontal). n cazul n care se
alege aceast variant, se recomand testarea ei n acelai timp cu
proprietatea Multiline.

TextAlign
Alinierea textului introdus n caseta de text. Alinierea poate fi :Left (implicit),
Right, Center.

Bazele informaticii

135

Formulare VBA

Exemplu____________________________________________________________________________________
Se editeaz un formular care s permit urmtoarele operaiuni:
introducerea numelui (mrcii) unui autoturism;
introducerea preului autoturismului, n Euro;
cursul, la zi, a monedei europene;
n funcie de cursul monedei Euro se calculeaz preul
autoturismului n lei;
confirmarea stocului existent;
confirmarea includerii de taxe;
opiunea de culoare;
afiarea informaiile despre autoturism: marca, preul n lei,
culoare, dac se afl n stoc, dac preul are taxele incluse.
Pentru informaiile introduse de la tastatur, textbox-urilor li se atribuie
nume semnificative (txtMarca,
txtPretEuro, txtCursEuro).
Butonul de comand (btnInfo) determin afiarea - n eticheta lblInfo
- informaiilor necesare. Proprietatea Font a acestor controale poate fi
modificat pentru o afiare mai vizibil (de exemplu Bold):
txtMarca

txtCursEuro

txtPretEuro

btnInfo

lblInfo

Procedura de preluare a informaiilor i de afiare a rezultatelor


prelucrrii lor (asociat butonului Info) conine urmtoarele instruciuni:
Private Sub btnInfo_Click()
If IsNumeric(txtPretEuro.Text) And _
IsNumeric(txtCursEuro.Text) Then
PretEuro = Val(txtPretEuro.Text)
CursEuro = Val(txtCursEuro.Text)
PretLei = PretEuro * CursEuro * 1.19
lblInfo.Caption = "Autoturismul " & txtMarca.Text _
& vbCrLf & "Are pretul " & PretLei & _
Bazele informaticii

136

Formulare VBA

"lei (cu TVA)"


'Observaie: vbCrLf -> pentru rnd nou

Else
MsgBox("Eroare! Valoare numeric!")
End If
End Sub

____________________________________________________________________________________Exemplu

Proprietatea Text a casetelor de text returneaz ntotdeauna o

valoare de tip String, iar n cazul n care sunt introduse valori


numerice, se impune realizarea unei conversii la tipul de date al variabilei
care preia valoarea respectiv. Cu funcia IsNumeric, de tip boolean, se
poate testa dac argumentul este numeric (rezultat True pentru
argument numeric).

Controlul CheckBox creeaz posibilitatea de se specifica anumii


parametri prin intermediul unor casete de validare. Realizarea practic se face
prin efectuarea unui clic cu mouse-ul (bifare debifare).
Principalele proprieti:
Proprietate

Name
Nume VBA: CheckBox1, CheckBox2, Convenie prefix: chk.
Alignment
Specific locul de plasare a cadrului de bifare n cadrul controlului. Aceast
proprietate poate lua valorile Left i Right. Right este implicit.

Enabled
Este proprietate de tip boolean care stabilete dac checkbox-ul este sau nu
activ.

Font
Stilul fontului cu care este scris textul nsoitor.

ForeColor
Culoarea cu care este scris textul nsoitor.

Caption
Bazele informaticii

137

Formulare VBA

Proprietate ce determin textul nsoitor (explicativ) al casetei de validare.

Value
Proprietate important cu urmtoarele valori:
True, dac este bifat caseta;
False, dac este debifat caseta (implicit).

Visibile
Dac este True (implicit), caseta de validare este vizibil pe formular. n caz
contrar, este invizibil.
Exemplu____________________________________________________________________________________
Pe formularul anterior se introduc dou CheckBox-uri (chkStoc,
chkTaxe). n procedura eveniment btnInfo_Click se adaug
urmtoarele instruciuni:
If chkStoc.Value Then
Stoc = "Se afla in stoc"
Else
Stoc = "Nu se afla in stoc"
End If
If chkTaxe.Value Then
Taxe = "Toate taxele incluse!"
Else
Taxe = "Nu include taxe"
End If
lblInfo.Caption = "Autoturismul " & txtMarca.Text & vbCrLf & _
"Are pretul " & PretLei & " lei (cu TVA)" & _
vbCrLf & Stoc & vbCrLf & Taxe
Un rezultat al execuiei formularului ar putea arta astfel:

checkBox bifat

Rezultatul prelucrrii

_____________________________________________________________________________Exemplu
Bazele informaticii

138

Formulare VBA

Rolul controlului de tip Frame este de a grupa dou sau mai multe
controale (de regul, CheckBox sau OptionButton) astfel nct s formeze un
set de elemente ntre care se stabilete o relaie. De exemplu n cazul controlului
CheckBox, utilizatorul poate bifa un control indiferent de starea celorlalte.
Exist ns situaii n care este de dorit ca starea unei opiuni s elimine n
mod automat celelalte opiuni i astfel se ajunge la utilizarea butoanelor de
opiune structurate ntr-un grup.

Principalele proprieti ale unui Frame sunt:


Proprietate

Name
Nume VBA: Frame1, Frame2, Convenie prefix: frm.

Caption
Textul care apare n antetul grupului.

Enabled
Dac este True, elementele din grup vor putea fi accesate. Dac este False,
elementele din grup nu pot fi manipulate de utilizator.

Font
Tipul fontului cu care este scris titlul grupului.

Visible
Dac este True, grupul este vizibil pe formular; n caz contrar, grupul este
invizibil.

Bazele informaticii

139

Formulare VBA

Este controlul care se folosete atunci cnd trebuie selectat doar o


singur opiune din mai multe posibile. De regul, aceste butoane sunt
comasate ntr-un cadru de grupare, asigurndu-se, n acest fel, selectarea doar
a unei singure opiuni.
Proprietile cele mai importante ale unui control de tip buton radio sunt:
Proprietate

Name
Nume VBA: OptionButton1, OptionButton2, Convenie prefix: rbn.
Alignment
Locul de plasare a cadrului de bifare n cadrul controlului. Aceast proprietate
poate lua valorile Left i Right. Right este implicit.

Caption
irul de caractere care nsoete butonul radio.

TextAlign
Modalitatea de aliniere a textului n cadrul controlului. Poate lua valorile Left,
Center, Right. Implicit: Left.

Value
Este proprietatea cea mai folosit, indicnd dac butonul este selectat - True
sau nu False (implicit).

Visible
Proprietate de tip boolean care stabilete dac butonul radio este sau nu vizibil
pentru utilizator.
Exemplu____________________________________________________________________________________
Se plaseaz pe formular controlul de tip Frame, cu proprietatea Name,
frmCuloare. Se aduc, n interiorul acestui control, din cutia cu instrumente, trei butoane radio: rbnAlb, rbnGri, rbnRosu (pentru
selectarea unei culori). Controlul Frame are rolul de container pentru
butoanele radio iar deplasarea lui determin i deplasarea elementelor pe
care le conine.

Bazele informaticii

140

Formulare VBA

Codul care completeaz versiunea anterioar a formularului este


urmtorul:
Private Sub btnInfo_Click()
If rbnAlb.Value Then
Culoare = "Alb"
End If
If rbnGRi.Value Then
Culoare = "Gri"
End If
If rbnRosu.Value Then
Culoare = "Gri"
End If
'.
'.
'.
lblInfo.Caption ="Autoturismul " & txtMarca.Text & vbCrLf & _
"Are pretul " & PretLei & " lei (cu TVA)" & _
vbCrLf & Stoc & vbCrLf & Taxe & _
vbCrLf & "Culoare: " & Culoare
'Observaie: vbCrLf -> pentru rnd nou
'.
'.
Cnd se lanseaz n execuie formularul, se va putea selecta doar un
singur buton, cel selectat anterior fiind n mod automat debifat (astfel se
poate alege doar o singur variant din mai multe posibile):

Bazele informaticii

141

Formulare VBA

____________________________________________________________________________________Exemplu

Controlul ListBox dintr-un formular afieaz o list de una sau mai


multe elemente. Dac numrul total al elementelor excede numrul celor care
pot fi afiate, un scroll bar este automat adugat la acel control. Prin
proprietatea MultiSelect elementele listei pot fi afiate n coloane multiple
(implicit MultiSelect este fmMultiSelectSingle).
Funcia ListIndex returneaz o valoare ntreag care corespunde primului
element selectat din list. Dac nu este selectat nici un element, valoare lui
ListIndex este -1. Dac este selectat primul element din list, valoarea lui
ListIndex este 0. Funcia ListCount furnizeaz numrul elementelor listei.
n esen, controlul ListBox poate conine mai multe valori care s fie
gestionate pe o suprafa fix de pe formular, accesul la valorile ascunse
realizndu-se prin intermediul barelor de derulare. Funcia Clear permite
tergere elementelor listei (golirea listei).
Proprietile importante ale unei casete cu list sunt enumerate n tabelul
urmtor:
Proprietate

Name
Nume VBA: ListBox1, ListBox2, Convenie prefix: lst.
BorderStyle
Marginea casetei cu list:
None: nu apare nici o bordur;

Bazele informaticii

142

Formulare VBA

Single - bordur.

ColumnWidths
Limea (n numr de puncte) fiecrei coloane n cazul n care lista suport
coloane multiple.

Enabled
Proprietate de tip boolean care, atunci cnd are valoarea True, permite
utilizatorului s selecteze elemente din list. n caz contrar, lista este
vizibil, dar inactiv.

Font
Stilul fontului pentru elementele din cadrul listei.

ColumnCount
Lista este afiat pe un numr de coloane stabilit prin aceast proprietate.

MultiSelect
Poate lua una dintre valorile:
Single: utilizatorul poate selecta doar un singur element din list la
un moment dat (implicit);
Multi: pot fi selectate mai multe valori, prin simpla apsare a
butonului din stnga al mouse-ului;
Extended: pot fi selectate mai multe valori, prin folosirea mouseului i a tastei Ctrl, precum i prin deplasarea mouse-ului n timp
ce butonul din stnga este apsat.

TextAlign
Implicit, elementele unei liste sunt aliniate la stnga. Se pot face i alinieri
la dreapta (de regul pentru elemente de tip numeric) sau la centrul listei.

Visible
Dac este True, lista este vizibil; n caz contrar, ea exist n memorie, dar
nu este vizibil pe ecran.
Exemplu____________________________________________________________________________________
Cea mai utilizat operaiune este cea de adugare a elementelor n list
(aici lstAuto). n momentul proiectrii interfeei, cu ajutorul procedurii
Sub UserForm_Initialize(), se introduc elementele listei (aici, mrci
de
autoturisme).
Utilizndu-se
o
singur
coloan
(lstAuto.ColumnCount = 1) lista (lstAuto.List()) se preia din
tabloul Lista(5).

Bazele informaticii

143

Formulare VBA

Atunci cnd se va lansa formularul n execuie lista conine autoturismele


specificate.

lstAuto

Se pot include, n formular, dou butoane:


btnAdauga
btnSterge

Adugarea unei mrci noi de autoturism:


Private Sub btnAdauga_Click()
'Introducerea unei noi mrci
Marca = InputBox("Se introduce o nou marc:")
LstAuto.AddItem (Marca)
End Sub

Bazele informaticii

144

Formulare VBA

Se adaug marca Renault:

Pentru tergerea unui element, aflat n list, se apeleaz la funcia

RemoveItem:

Private Sub btnSterge_Click()


'Daca lstAuto contine elemente
If lstAuto.ListCount >= 1 Then
'Daca nu s-a selectat nici un element
' se alege ultimul din list
If lstAuto.ListIndex = -1 Then
lstAuto.ListIndex = _
lstAuto.ListCount - 1
End If
lstAuto.RemoveItem(lstAuto.ListIndex)
End If
End Sub
Se terge marca Opel:

____________________________________________________________________________________Exemplu

Caseta cu list derulant permite memorarea unei liste de elemente n


mod asemntor listelor clasice, ns suprafaa ocupat pe formular este
corespunztoare unei singure linii. n momentul seleciei, caseta se deruleaz,
afind elementele disponibile, iar dup selectarea unuia dintre ele se reduce la
forma iniial. Selecia poate fi realizat i prin tastarea primelor caractere care

Bazele informaticii

145

Formulare VBA

identific elementele listei.


Cteva proprieti ale ComboBox-ului:
Proprietate

Name
Nume VBA: ComboBox1, ComboBox2, Convenie prefix: cbo.

DropButtonStyle
Modul de vizualizare a butonului de derulare a listei:
Plain: ;
Arrow (implict): buton de selecie marcat cu sgeat:
Ellipses:

Reduce:

ColumnWidths
Limea fiecrei coloane n cazul n care lista suport coloane multiple.

Enabled
Dac este True, lista este activ; dac este False, caseta este vizibil pe
ecran, dar nu poate fi selectat nici un element.

Font
Stilul caracterelor folosite pentru afiarea elementelor.

ListWidth
Limea, n pixeli, a listei care apare n momentul cnd se apas butonul de
selecie. Valoarea stabilit nu poate fi mai mic dect limea ComboBox-ului.

MaxLength
Numrul maxim de caractere care pot fi introduse de utilizator. Implicit,
aceast proprietate are valoarea zero (pot fi introduse oricte caractere).

TextAlign

Bazele informaticii

146

Formulare VBA

Implicit, elementele unei liste sunt aliniate la stnga. Se pot face i alinieri la
dreapta (de regul pentru elemente de tip numeric) sau la centrul listei.

Text
Stabilete sau returneaz elementul curent care este selectat n caset.

Visible
Dac este True, controlul este vizibil pe formular; n caz contrar, nu este
vizibil pentru utilizator.

Exemplu____________________________________________________________________________________
n exemplul urmtor se utilizeaz dou ComboBox-uri (cboMarca i
cboPret). Cu ajutorul procedurii Sub UserForm_Initialize(), se
introduc elementele listei (la fel ca n exemplul anterior - pentru
ListBox):
cboMarca

cboPret

btnInfo
lblInfo

Pentru afiarea elementelor curente se folosete proprietatea Text, care


returneaz elementul curent selectat. n cazul n care nu este selectat nici
un element din list, valoarea returnat este irul vid (va apare un mesaj
de avertizare). Marca selectat se determin prin simplul apel al
proprietii Text a controlului cboMarca.

Bazele informaticii

147

Formulare VBA

Private Sub btnInfo_Click()


Marca = cboMarca.Text
PretulMaxim = cboPret.Text
If Marca = "" Then
MsgBox("Marca?!")
Else
lblInfo.Caption = "Marca: " & Marca & vbCrLf _
& "Pret maxim: " & PretulMaxim
End If
End Sub
____________________________________________________________________________________Exemplu

Acest control permite afiarea pe suprafaa formularului a unor imagini


preluate din fiiere grafice. Formatele suportate sunt multiple: bmp, gif, jpg, ico
etc. Referitor la aspectul vizual, cele mai importante proprieti sunt urmtoarele:
Proprietate

Name
Nume VBA: Image1, Image2, Convenie prefix: img.

BackStyle
Fundalul casetei:
Opaque (implicit);
Transparent.

BorderStyle

Bazele informaticii

148

Formulare VBA

Stilul marginii casetei:


None: nici o bordur;
Single: bordur (implicit);

Picture
Imaginea care se va afia n caset. n momentul proiectrii, aceast
imagine poate fi preluat prin indicarea fiierului care o conine.

Controlul SpinButton ofer o modalitate de a selecta o valoare


numeric dintr-un anumit interval.
Proprietile definitorii ale generatorului de valori sunt urmtoarele:
Proprietate

Name
Nume VBA: SpinButton1, SpinButton2, Convenie prefix: spb.
Enabled
Proprietate de tip boolean:
True: controlul este disponibil pentru a fi modificat de utilizator;
False: utilizatorul nu poate modifica starea controlului.

SmallChange
Stabilete pasul cu care se modific valoarea curent din generator atunci
cnd utilizatorul acioneaz butoanele de incrementare sau decrementare.
Valoarea incrementului trebuie s fie un numr ntreg mai mare sau egal cu
zero (implicit 1).

Max
Limita superioar a intervalului de valori. Aceast valoare trebuie s fie mai
mare sau egal cu Min.

Min
Limita inferioar a intervalului n care poate naviga utilizatorul.

Orientation
Orientarea butoanelor de incrementare/decrementare:
Auto;
Vertical;
Horizontal

Value

Bazele informaticii

149

Formulare VBA

Reprezint valoarea curent a generatorului.

Visibile
Dac este True, generatorul este vizibil pentru utilizator; dac este False,
este ascuns.

Exemplu______________________________________________________________________________
ntr-un formular se introduc urmtoarele controale:
Controlul spbVarsta (cu proprietile Min = 1, Max = 120);
Eticheta lblInfo.
Incrementarea valorii curente

lblInfo

Decrementarea valorii curente

Proprietatea Value se modific dinamic, n funcie de aciunile


utilizatorului asupra butoanelor de navigare, deci valoarea numeric
poate fi preluat i utilizat:
Private Sub spbVarsta_Change()
lblInfo.Caption = "Vrsta: " & spbVarsta.Value & " ani"
End Sub
___________________________________________________________________________________Exemplu

Modificarea proprietilor din cod


Pentru modificri ale proprietilor unui control este necesar ca valorile
acestora s fie citite i redefinite n timpul execuiei (Run Mode). Pentru fiecare
control se dau valori implicite (default), ele pot fi ns modificate prin aciuni
ale utilizatorului.
Iniializarea dialogului este realizat prin codul cuprins n procedura
eveniment Initialize. Afiarea formularului declaneaz evenimentul
Initialize i astfel au loc i atribuirile de valori specificate.

Bazele informaticii

150

Formulare VBA

Cnd se gestioneaz mai multe formulare se impune, de cele mai multe


ori, activarea altor formulare din formularul curent.

Exemplu______________________________________________________________________________
Avnd formularul UserForm1, deschis, n mediul de proiectare (cu un
buton, CommandButton1 inclus) se adaug un nou formular.

Se deschide editorul de cod (dublu-clic pe butonul Button1). Se aplic


metoda Show pentru activarea celui de al doilea formular:
Private Sub CommandButton1_Click()
Me.Caption = "Eu sunt formularul 1"
UserForm2.Caption = "Eu sunt formularul 2"
UserForm2.Show
End Sub

La rularea aplicaiei rezult:

____________________________________________________________________________________Exemplu
Cnd se impune modificarea mai multor proprieti ale unui control se
utilizeaz, de multe ori, structura:

With <control>
<instruciuni>

End With

Exemplu____________________________________________________________________________________
Se creeaz un formular;
Se introduce, n formular, controlul ListBox cu numele lstCardinale;
Codul urmtor realizeaz iniializarea valorilor din list:

Bazele informaticii

151

Formulare VBA

Private Sub UserForm_Initialize()


With lstCardinale
.AddItem "Nord"
.AddItem "Sud"
.AddItem "Est"
.AddItem "Vest"
.ListIndex = 3
End With
End Sub
Rularea formularului:

____________________________________________________________________________________Exemplu

Este de remarcat c, dei n modelele de obiecte Word, Excel i

PowerPoint coleciile sunt indexate de la 1, n tablourile i coleciile


asociate formularelor se folosete indexarea de la 0. De aici selectarea

ultimei intrri (cu numrul de ordine 4) din list prin instruciunea

ListIndex = 3.
Prin setarea proprietilor unui control i aplicarea metodelor n timpul
execuiei, se pot efectua modificri ntr-un dialog utilizator care se execut,
modificri aprute ca rspuns la aciunile i alegerile utilizatorului. De exemplu,
accesibilitatea unor controale poate fi controlat prin modificarea proprietii
Enabled. Dac proprietatea este setat pe False, atunci utilizatorul nu poate
accesa controlul.

Exemplu _____________________________________________________________________________

Se creeaz un formular coninnd dou butoane radio i o caset de


validare.
Codul urmtor restricioneaz accesul la radio butoane:
Private Sub CheckBox1_Click()
With Me 'Me se refer la formularul curent
If .CheckBox1.Value = True Then
.OptionButton1.Enabled = False
.OptionButton2.Enabled = False
Else

Bazele informaticii

152

Formulare VBA

.OptionButton1.Enabled = True
.OptionButton2.Enabled = True
End If
End With
End Sub
Efectul bifrii/debifrii casetei de validare:

____________________________________________________________________________________Exemplu
Prin intermediul metodei SetFocus se controleaz focalizarea. Un control
care are focusul este cel care rspunde la intrrile din tastatur.

Exemplu______________________________________________________________________________

Pe un formular se introduc dou etichete (Textul 1 i Textul 2) i dou


CheckBox-uri.
Procedurile care trateaz evenimentele Click ale etichetelor impun
focusul:
Private Sub Label1_Click()
CheckBox1.SetFocus
End Sub
Private Sub Label2_Click()
CheckBox2.SetFocus
End Sub
Efectul click-ului pe cele dou etichete:

____________________________________________________________________________________Exemplu
Valorile introdu-se, utiliznd controalele TextBox, sunt de tip String.
Pentru colectarea unor valori numerice este necesar o conversie (de obicei cu
funcia Val). Deoarece conversia string numeric ia n considerarea
caracterele, pn la primul ce nu reprezint informaie numeric, se impune
validarea irului introdus prin funcia IsNumeric.

Bazele informaticii

153

Formulare VBA

Exemplu______________________________________________________________________________
Pe un formular se introduc dou casete de text i un buton
(btnValidare).
Procedura care trateaz evenimentul Click al butonului afieaz un
mesaj de eroare realiznd focusul pe TextBox-ul care a generat eroarea:
Private Sub btnValidare_Click()
If Not IsNumeric(TextBox1.Text) Then
MsgBox ("Eroare 1")
TextBox1.SetFocus
End If
If Not IsNumeric(TextBox2.Text) Then
MsgBox ("Eroare 2")
TextBox2.SetFocus
End If
End Sub
Efect cnd se introduce, de exemplu, o valoare eronat n al doilea
TextBox:

____________________________________________________________________________________Exemplu
La nchiderea unui dialog, toate datele introduse de utilizator se pierd.
Din acest motiv, informaia necesar a fi reutilizat trebuie s fie salvat n
variabile de la nivelul modul, naintea descrcrii formularului. nchiderea
(descrcarea) formularului se realizeaz prin instruciunea Unload.
Exemplu____________________________________________________________________________________
Pe un formular se introduc un TextBox (txtMem) i un buton (btnStop)
iar String-ul introdus n TextBox e necesar a fi salvat:

Bazele informaticii

154

Formulare VBA

Pentru ca, la descrcarea formularului, s fie memorat valoarea


introdus n caseta de text se utilizeaz o variabil de lucru (Nume) de tip
Public:
Public Nume As String
Private Sub btnStop_Click()
Nume = txtMem.Text
Unload Me
End Sub
____________________________________________________________________________________Exemplu

Pentru reutilizarea formularelor proiectate, acestea

se export ca

un fiier .frm care poate fi importat n alte aplicaii:


n VBE, unde s-a proiectat formularul, se selecteaz opiunea din
meniu File, Export File.
Se alege un nume, pentru fiierul formular, i Save. Se obine un
fiier nume.frm.
Reutilizarea formularului necesit deschiderea fiierului stocat:
prin meniu, File, Import File, selectarea numelui formularului i
Open.

1. S se editeze i s se ruleze secvenele de instruciuni Basic din exemplele


marcate cu simbolul

2. S se editeze un formular pentru calcule aritmetice.

Bazele informaticii

155

Formulare VBA

Controale
Control - Name

Tip

Proprietate

Calculator

Formular Caption

txtA

TextBox

Valoare proprietate

Calculator

TextAlign

3 - fmTextAlignRight

ForeColor

Palette, Blue

Font, Size

10

Font,FontStyle Bold
txtB

TextBox

TextAlign

3 - fmTextAlignRight

ForeColor

Palette, Green

Font, Size

10

Font,FontStyle Bold
txtRezultat

TextBox

TextAlign

3 - fmTextAlignRight

Font, Size

10

Font,FontStyle Bold

Bazele informaticii

156

Formulare VBA

btnAdun

Buton

Enabled

False

Caption

ForeColor

Palette, Blue

Font, Size

16

Font,FontStyle Bold
btnScad

Buton

Caption

ForeColor

Palette, Red

Font, Size

16

Font,FontStyle Bold
btnInm

Buton

Caption

ForeColor

Palette, Green

Font, Size

16

Font,FontStyle Bold
btnImp

Buton

Caption

ForeColor

Palette, Purple

Font, Size

16

Font,FontStyle Bold
btnPt

Buton

Caption

ForeColor

Palette, Black

Font, Size

16

Font,FontStyle Bold

Bazele informaticii

157

Formulare VBA

Procedurile eveniment
Private Sub btnAdun_Click()
If IsNumeric(txtA.Text) And IsNumeric(txtB.Text)Then
txtRezultat = Val(txtA) + Val(txtB)
Else
MsgBox ("Eroare! Valoare numeric!")
End If
End Sub
Observaii:
Deoarece valorile introduse n TextBox-urile txtA i txtB sunt de tip
text este necesar funcia de convertire Val
Cu funcia IsNumeric se testeaz dac valoarea introdus este o valoare
numeric

Secvenele de cod sunt la fel, doar


c se schimb operatorii de calcul.

3. S se editeze un formular pentru calcule financiare:

Bazele informaticii

158

Formulare VBA

Controale
Control - Name

Tip

Proprietate

Valoare proprietate

Calcule

Formular

Caption

Calcule financiare

Label1

Etichet

Caption

Rata dobanzii

Label2

Etichet

Caption

Numarul de
perioade

Label3

Etichet

Caption

Valoare

Label4

Etichet

Caption

Rezultat

TextBox

TextAlign

3 fmTextAlignRight

Font, Size

10

Font,FontStyle

Bold

txtD

txtN

TextBox

La fel cu txtD

txtV

TextBox

La fel cu txtD

TextBox

TextAlign

3 fmTextAlignRight

Font, Size

10

Font,FontStyle

Bold

Enabled

False

Caption

Functia

txtRezultat

frmFunctia

Bazele informaticii

Frame

159

Formulare VBA

rbnFV

O
p

rbnPV

i
u
n

rbnPmt

Caption

FV

ForeColor

Palette, Red

Font,FontStyle

Bold

Caption

PV

ForeColor

Palette, Green

Font,FontStyle

Bold

Caption

Pmt

ForeColor

Palette, Blue

Font,FontStyle

Bold

Procedurile eveniment

rbnFV

rbnPV

rbnPmt

Bazele informaticii

Private Sub rbnFv_Click()


If IsNumeric(txtD.Text) And IsNumeric(txtN.Text) _
And IsNumeric(txtV.Text) Then
D = Val(txtD)
N = Val(txtN)
V = Val(txtV)
txtRezultat = FV(D, N, V)
Else
MsgBox ("Eroare! Valoare numeric!")
End If
End Sub
Secvenele de cod sunt la fel ca pentru rbnFV, doar c se
schimb funcia de calcul: FV PV
Secvenele de cod sunt la fel ca pentru rbnFV, doar c se
schimb funcia de calcul: FV Pmt

160

Bibliografie

Bibliografie

EmilCosma

AplicaiiExcel,Project,VisualFoxPro,Ed.EXPONTO,2004

JohnNossiter

UtilizareMicrosoftExcel97, Ed.TEORA,1999

EmilCosma

Office2007 VBA,Excel,Access,Ed.EXPONTO,2008

ClaytonWalnum

VisualBasic.NET,Ed.ALL, 2003

LuminiaFnaru,IoanBrava

VISUALBASIC,Primiipaiiurmtorii,Ed.POLIROM,2001

EmilCosma

VisualBASICVBA2007Studio2005,Ed.MATRIXROM,
2007

PaulMcFedries

VBA,Ghidpentrunceptori,Ed.TEORA,2006

OctavianDospinescu

DezvoltareaaplicaiilornVisualBasic.NET,Ed.POLIROM,
2004

Bazele informaticii

161