Sunteți pe pagina 1din 166

Universitatea OVIDIUS Constanţa

Departamentul ID-IFR
Facultatea de Știinţe Economice
Specializarea Economia Comerţului, Turismului şi Serviciilor
Forma de învăţământ ID
Anul de studiu I
Semestrul 1
Valabil începând cu anul universitar 2009-2010

Caiet de Studiu Individual


pentru
Bazele informaticii

Coordonator disciplină: Prof. univ. Cosma Emil


Cuprins

Bazele informaticii

CUPRINS

Unitate Titlul Pagina


de
învăţare
INTRODUCERE 1

1 O introducere în calculul tabelar 3


Obiectivele Unităţii de învăţare Nr. 1 4
1.1. Programul de calcul tabelar Excel 5
1.2. Editarea documentelor Excel 6
1.3. Funcţii Excel 8
1.4. Rezumat 9
Lucrare de verificare Unitate de învăţare Nr. 1 10

2 Editarea foilor electronice de calcul 11


Obiectivele Unităţii de învăţare Nr. 2 12
2.1. Inserare şi ştergere pentru linii şi coloane 14
2.2. Ajustarea dimensiunilor liniilor şi a coloanelor 15
2.3. Referinţe absolute şi relative de celulă 15
2.4. Copiere, tăiere, alipire de celule 16
2.5. Formatarea conţinutului celulelor 17
2.6. Rezumat 20
Lucrare de verificare Unitate de învăţare Nr. 2 21

3 şi 4 Calcule financiare. Tabele de decizie 24


Obiectivele Unităţii de învăţare Nr. 3 şi 4 25
3.1. Despre funcţii financiare 25
3.1.1. Funcţia FV 26
3.1.2. Funcţia PV 26
3.1.3. Funcţia NPER 27
3.1.4. Funcţia PMT 27
3.1.5. Funcţia IPMT 28
3.2. Tabele de decizie 28
3.3. Rezumat 30
Lucrare de verificare Unitate de învăţare Nr. 3 şi 4 31

Bazele informaticii I
Cuprins

5 şi 6 Tabele de date. Grafice 34


Obiectivele Unităţii de învăţare Nr. 5 şi 6 35
5.1. Tabele de date 35
5.1.1. Ştergere (Delete) şi inserare (Insert) 36
5.1.2. Sortare şi filtrare (Sort & Filter) 38
5.2. Grafice (diagrame) 42
5.3. Rezumat 44
Lucrare de verificare Unitate de învăţare Nr. 5 şi 6 45

7 Macrocomenzi 47
Obiectivele Unităţii de învăţare Nr. 7 48
7.1. Înregistrarea unei macrocomenzi VBA 48
7.2. Rezumat 55
Lucrare de verificare Unitate de învăţare Nr. 7 55

8 Editorul VBA 56
Obiectivele Unităţii de învăţare Nr. 8 57
8.1. Lansarea editorului VBA 57
8.2. Mediul de editare VBA 57
8.3. Module VBA 59
8.3.1. Identificarea modulelor 59
8.3.2. Rularea modulelor 59
8.3.3. Save şi Open pentru aplicaţiile Office şi modulele
asociate 60
8.3.4. Sistemul de asistenţă la scrierea codului 60
8.3.5. Proceduri 61
8.3.5.1. Proceduri Sub 61
8.3.5.2. Proceduri Function 63
8.4. Formulare VBA 64
8.4.1. Crearea unui formular 65
8.4.2. Rularea unui formular 66
8.4.3. Controale OLE 66
8.5. Documente Office active 68
8.5.1. Controale ActiveX 69
8.5.2. Proceduri eveniment 70
8.6. Rezumat 72
Lucrare de verificare Unitate de învăţare Nr. 8 73

9 Secvenţe de cod VBA 74


Obiectivele Unităţii de învăţare Nr. 9 75
9.1. Cuvintele 75
9.2. Comentariile 76
9.3. Tipuri de date 76
9.4. Expresiile 79
9.4.1. Operanzi 79

Bazele informaticii II
Cuprins

9.4.2. Operatori 79
9.4.3. Ordinea de evaluare a expresiilor 80
9.5. Constante şi variabile 81
9.5.1. Constante 81
9.5.2. Variabile 82
9.6. Instrucţiunea de atribuire 83
9.7. Liste (arrays) de variabile 84
9.7.1. Liste dinamice 85
Lucrare de verificare Unitate de învăţare Nr. 9 86

10 Funcţii VBA predefinite 89


Obiectivele Unităţii de învăţare Nr. 10 90
10.1. Funcţia Format 90
10.2. Funcţii matematice 91
10.3. Funcţii financiare 91
10.4. Funcţii pe şiruri de caractere 93
10.5. Funcţii pentru dată calendaristică şi timp 93
10.6. Funcţii pentru conversii 94
10.7. Funcţii pentru testarea tipului de date 94
Lucrare de verificare Unitate de învăţare Nr. 10 95

11 Structuri de control VBA 100


Obiectivele Unităţii de învăţare Nr. 11 101
11.1. Structurile de control 102
11.1.1. Instrucţiunea de selecţie simplă 102
11.1.2. Instrucţiunea de selecţie multiplă 103
11.1.3. Structurile repetitive 107
11.1.3.1. Ciclul Do While (cu test iniţial) 107
11.1.3.2. Ciclul Do Until (cu test iniţial) 108
11.1.3.3. Ciclurile Do While şi Do Until cu test final 110
11.1.3.4. Ciclul For … Next, cu număr finit de paşi 110
11.2. Lucrare de verificare Unitate de învăţare Nr. 11 111

12 Module VBA 112


Obiectivele Unităţii de învăţare Nr. 12 113
12.1. Variabile locale (private) 113
12.2. Variabile publice (globale) 113
12.3. Variabile private 114
12.4. Transmiterea argumentelor prin valoare şi prin referinţă 117
12.5. Funcţii recursive 118
Lucrare de verificare Unitate de învăţare Nr. 12 119

Bazele informaticii III


Cuprins

13 şi 14 Formulare VBA 121


Obiectivele Unităţii de învăţare Nr. 13 şi 14 122
13.1. Formulare (form-uri) 124
13.2. Proprietăţi şi proceduri eveniment 125
13.3. Proprietatea Caption 126
13.4. Proprietatea StartUpPosition 128
13.5. Proprietatea Height şi Width 128
13.6. Proprietăţile ForeColor şi BackColor 129
13.7. Utilizarea controalelor 130
13.7.1. CommandButton 131
13.7.2. Label 131
13.7.3. TextBox 134
13.7.4. CheckBox 137
13.7.5. Frame 139
13.7.6. OptionButton 140
13.7.7. ListBox 142
13.7.8. ComboBox 145
13.7.9. Image 148
13.7.10. SpinButton 149
13.8. Modificarea proprietăţilor din cod 150
Lucrare de verificare Unitate de învăţare Nr. 13 şi 14 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ă atât cursanţilor cu un grad mai mare de familiarizare cu universul
calculatoarelor cât şi cursanţilor începători. Există totuşi anumite cunoştinţe
specifice necesare parcurgerii acestui curs şi anume:
Cunoaşterea modalităţii de organizare şi manipulare a informaţiei în format
electronic (sistem de fişiere, directoare, copierea, mutarea şi
deschiderea fişierelor).
Operaţii de bază utilizând sistemul de operare Microsoft Windows
(pornirea unei sesiuni de lucru, deschiderea unei aplicaţii, comutarea între
mai multe aplicaţii ce rulează simultan, noţiunea de desktop şi noţiunea de
shortcut, închiderea în mod corespunzător a sistemului),
Utilizarea tastaturii PC standard şi a mouse-ului (combinaţii de taste,
utilizarea tastelor speciale, right şi left click pentru mouse)

Manualul de faţă este organizat în două părţi (programare tabelară - Excel


şi programare în limbajul Basic - VBA) cu 14 unităţi de învăţare, fiecare dintre
aceste unităţi conţinând o parte de prezentare a subiectului tratat, o parte de exerciţii
practice şi rezolvările acestora.  

Exerciţiile practice sunt marcate cu simbolul .

Spor la învăţat şi succes!

Bazele informaticii    1 
Introducere

Programele de calcul tabelar („foi electronice de calcul”) se adresează


utilizatorilor neprogramatori ce prelucrează date statistice, financiare, ştiinţifice,
fiind, datorită funcţiilor predefinite puse la dispoziţie, un instrument flexibil şi
uşor de învăţat. Foile electronice de calcul permit cele mai diverse operaţii asupra
informaţiilor de piaţă, preiau datele colectate şi păstrate în fişiere sau date captate
prin intermediul reţelelor de transmisie. Cele mai multe studii de piaţă care se
comercializează la ora actuală în lume, se livrează în fişiere tip foaie electronică
de calcul.
Un program de calculator este o listă de instrucţiuni care spun unui
calculator ce sarcini are de îndeplinit. Calculatorul rulează instrucţiunile până când
ajunge la sfârşitul 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:
bilanţul unui carnet de cecuri, tipărirea unui document, desenarea de imagini.
Programul de calculator (program sursă) poate fi scris în limbaje diferite.
Calculatoarele înţeleg numai limbajul maşină (program obiect) – un şir de biţi.
Limbajele de programare ca BASIC (limbaj procedural simplu, creat în 1964) permit
oamenilor să scrie programe într-un limbaj asemănător limbii engleze. În orice
caz, toate programele pot să fie citite de oameni şi trebuie să fie convertite în
limbaj maşină, pentru a putea fi interpretate de calculator. Adesea, numele
limbajului BASIC este ortografiat cu litere mici (Basic). Cu toate acestea, BASIC
şi-a făcut de fapt debutul ca un acronim, reprezentând prescurtarea de la
Beginner's All-purpose Symbolic Instruction Code (codul de instrucţiuni simbolice
generale pentru începători).

Pentru a uşura lectura, materialul didactic prezentat în continuare include


particularităţi şi elemente convenţionale:
 Simboluri explicative:

Simbol Semnificaţie

 Atenţie

↓ Exemplu_ Exemplu

 Indicaţii, menţiuni


Aplicaţii

 Simboluri pentru descrierea sintaxei instrucţiunilor VBA:


[] elementul este opţional
| variantă
<tip> tip de dată
<valoare> valoarea unei constante, a unei variabile sau a unei expresii
<expresie> expresie oarecare
 
<condiţie> condiţie (expresie logică)

Bazele informaticii    2 
O introducere în calculul tabelar

Unitatea de învăţare Nr. 1


O introducere în calculul tabelar
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 1 4
1.1. Programul de calcul tabelar Excel 5
1.2. Editarea documentelor Excel 6
1.3. Funcţii Excel 8
1.4. Rezumat 9
Lucrare de verificare Unitate de învăţare Nr. 1 10

Bazele informaticii    3 
O introducere în calculul tabelar

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


de calcul" este un produs ce cuprinde facilităţi de lucru cu tabele, baze de date
şi posibilităţi de reprezentare grafică a foilor de calcul. Programele de calcul
tabelar se adresează utilizatorilor neprogramatori ce prelucrează date statistice,
financiare, ştiinţifice, fiind, datorită funcţiilor predefinite puse la dispoziţie, un
instrument flexibil şi uşor de învăţat. De asemenea foile electronice de calcul
permit cele mai diverse operaţii asupra informaţiilor de piaţă, preiau datele
colectate şi păstrate în fişiere sau date captate prin intermediul reţelelor de
transmisie. Cele mai multe studii de piaţă care se comercializează la ora actuală
în lume, se livrează în fişiere tip foaie electronică de calcul.

Foaia electronică de calcul este împărţită în linii şi coloane şi este


prevăzută cu un sistem de coordonate. Coloanele sunt notate cu litere, iar liniile
cu cifre arabe (“tablă de şah”), intersecţiile 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 conţine unul din următoarele trei tipuri de date : un
text, un număr sau o formulă. Ultimul tip este "găselniţa" problemei.
Numerele aflate în celule sunt legate între ele prin formule, astfel încât dacă se
modifică conţinutul unei celule, aceasta va afecta în lanţ multe altele. De
exemplu, dacă celulele B1, B2, B3, B4, B5, conţin cifre, se poate aduna
conţinutul 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 funcţii de calcul, atât


matematice, cât ş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 funcţionalitate î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 informaţiilor.

Bazele informaticii    4 
O introducere în calculul tabelar

Tabelele de date trebuie să fie astfel constituite încât:

să asigure o prezentare compactă a datelor numerice;


să nu fie supraîncărcate cu detalii (deseori două tabele scurte sunt
preferabile unui tabel lung);
să includă un titlu complet şi clar pentru identificarea imediată a
conţinutului lor;
să precizeze, dacă este cazul, unităţile de măsură;
să indice tipul de preţ (curent sau constant);
să prezinte datele sub formă procentuală sau ca indici, atunci când 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 făcut schimbări majore în interfaţa acestuia (de fapt a fost refăcută complet):

Meniurile şi barele de instrumente tradiţionale au fost înlocuite de tab-uri


(Home, Insert, Page Layout, Formulas…), care includ butoane (Picture, Clip Art,
Shapes, SmartArt…) grupate pe secţiuni (Tables, Illustrations, Charts…). În cazul
în care spaţiul de lucru nu este suficient de întins pentru a lucra eficient pe el,
minimizarea tab-urilor se realizează efectuând dublu clic pe ele (la fel pentru
readucerea lor înapoi). Funcţiile extinse asociate secţiunilor sau butoanelor pot fi
vizualizate prin clic, cu mouse-ul, pe săgeata din dreapta acestora. Funcţiile
disponibile pot fi afişate şi prin comenzi rapide, de exemplu Ctrl+Shift+F, în
cazul fonturilor.

Comenzile asociate opţiunii File, dintr-un meniu clasic, Butonul Office 


se obţin prin acţionarea butonului Office. A fost dezvoltat un
nou format pentru salvarea fişierelor (*xlsx în loc de
*xls) existând compatibilitate cu vechile formate (Save
As, Excel 97-2003 Workbook). A devenit disponibilă şi
exportarea fişierelor direct în formatul PDF (Save As, Adobe
PDF).

Bazele informaticii    5 
O introducere în calculul tabelar

În dreapta butonului Office se situează bara


de instrumente Quick Acces, personalizabilă. Se pot
adăuga, pe lângă butoanele Save, Undo şi Redo, o
serie de alte funcţii precum Sort Ascending, Sort
Descending, Quick Print, Print Preview... prin
intermediul săgeţii din dreapta acesteia.

Definirea conţinutului unei foi electronice de calcul se face cu ajutorul


tastelor ordinare (litere, cifre, caractere speciale) sau prin combinaţii de taste,
în pagina logică. Pagina logică este încadrată în pagina fizică (coala de hârtie,
de obicei de format A4) prin margini (dreapta/stânga, sus/jos). La lansarea
Excel-ului cursorul se află în poziţia Home (celula A1).

Editarea documentelor Excel


Documentele Excel (Book1, Book2, … sau numele fişierelor sub care au
fost salvate foile electronice de calcul) cuprind pagini (Sheet1, Sheet2, ...).

Unitatea de lucru, pe foaia electronică de calcul, fiind celula, acţiunile de


editare se desfăşoară la nivel de celulă şi sunt vizualizate în linia de editare.
Conţinutul curent al celulei poate fi validat dacă se acţionează tasta Enter sau
dacă se iniţiază deplasarea cursorului într-o altă celulă.

Adresa celulei active Linia de editare

Poziţia Home 

Editarea celulelor are ca scop introducerea celor trei tipuri de informaţie:


text, numere, formule.

Introducerea textului presupune tastarea oricărui şir de caractere.


Alinierea textului se face la stânga celulei. Este posibil ca lungimea textului
introdus într-o celulă să depăşească capacitatea celulei, în acest caz textul
aflat în exces fiind afişat peste celulele următoare dacă acestea nu sunt vide

Bazele informaticii    6 
O introducere în calculul tabelar

(în caz contrar se afişează conţinutul 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 număr trebuie să fie tratat ca text,
este necesar ca mai întâi să fie tastat un apostrof (exemplu: '20765).
Introducerea formulelor trebuie să înceapă prin tastarea semnului
=(egal). Expresiile de calcul pot să conţină: operatori, constante,
identificatori de celule, nume de funcţii pentru calcul şi sunt alcătuite
conform regulilor algebrice.
 Constantele conţin valori sub formă de numere întregi (ex: 1, -23),
numere reale în format fix (ex: 22,31, -12,234), numere reale în
format exponenţial (ex: 12,76E3) sau date procentuale (ex: 125%).
 Identificatorii de celule permit referirea acestora (ex: A1, D10,
A1:E8).
 Funcţiile de calcul pot fi :
- financiare
- statistice
- matematice şi trigonometrice
- logice
Operatorii, împreună cu ordinea lor de evaluare sunt descrişi în
următoarea tabelă :

Operator Nivel
^ (exponenţial) 1
+ (pozitiv), - (negativ) 2
* (înmulţire), / (împărţire) 3
+ (adunare), - (scădere) 4
= (egal), <> (diferit) 5

< (strict mai mic)

> (strict mai mare)

<= (mai mic sau egal cu)

Tastele utilizate cel mai frecvent pentru deplasarea cursorului sunt:

Tasta Mişcarea cursorului


 sau  cu o celulă, la stânga sau la dreapta
 sau  cu o linie, mai sus sau mai jos
Home pe prima celulă din linie

Bazele informaticii    7 
O introducere în calculul tabelar

PgUp la începutul ferestrei precedente


PgDn la începutul ferestrei următoare
Ctrl+Home în colţul din stânga sus al foii de calcul
Ctrl+End în colţul din dreapta jos al foii de calcul
Ctrl+G sau F5 la celula specificată

Funcţii Excel
Funcţiile 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 afişate cele mai recent utilizate funcţii (Most Recently Used)
dar se pot selecta şi funcţii din categoria dorită (All, Financial, Date & Time …)

↓ Exemplu____________________________________________________________________________________

Caseta de introducere a argumentelor funcţiei IF (dacă):

___________________________________________________________________________________Exemplu ↑

Bazele informaticii    8 
O introducere în calculul tabelar


 Comenzile mediului de editare Excel.
 Conceptul de “foaie electronică de calcul”.
 Editarea textului.
 Editarea informaţiei numerice.
 Editarea formulelor de calcul.
 Introducerea funcţiilor.
 Definirea domeniilor de celule.

1. Lansaţi programul de calcul tabelar Excel.


2. Consultaţi conţinutul tab-urilor.
3. Familiarizaţi-vă cu folosirea Help-ului (tasta F1 sau butonul din colţul
dreapta sus al ecranului).
4. Să se editeze următorul document, să se salveze şi să se previzualizeze:

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


=AVERAGE(A4:F4)

Bazele informaticii    9 
O introducere în calculul tabelar

5. Să se editeze următoarea foaie electronică de calcul a rădăcinilor ecuaţiei de


gradul 2, pentru diferite valori ale coeficienţilor a, b, c.


 În celula E3, pentru calculul valorii delta, se va înscrie formula:
=B4^2-4*B3*B5 (b2 - 4·a·c)

 În celulele E4, E5 pentru determinarea rădăcinilor x1, x2 se vor înscrie


formulele de calcul, conţinând funcţiile IF (“dacă”) şi SQRT (radical). Funcţia
IF aparţine categoriei de funcţii Logical (sau All).

=IF(E3>=0;(-B4+SQRT(E3))/(2*B3);F2)
=IF(E3>=0;(-B4-SQRT(E3))/(2*B3);F2)

având semnificaţia: “dacă delta ≥ 0 atunci afişează rezultatul real, în caz


contrar afişează mesaj de rezultat complex”

Bazele informaticii    10 


Editarea foilor electronice de calcul

Unitatea de învăţare Nr. 2


Editarea foilor electronice de calcul
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 2 12
2.1. Inserare şi ştergere pentru linii şi coloane 14
2.2. Ajustarea dimensiunilor liniilor şi a coloanelor 15
2.3. Referinţe absolute şi relative de celulă 15
2.4. Copiere, tăiere, alipire de celule 16
2.5. Formatarea conţinutului celulelor 17
2.6. Rezumat 20
Lucrare de verificare Unitate de învăţare Nr. 2 21
 

Bazele informaticii    11 


Editarea foilor electronice de calcul

Editarea conţinutului unei celule selectate, se poate realiza prin


apăsarea tastei F2 sau prin poziţionare directă, cu ajutorul mouse-ului, în
linia de editare numită şi formula bar, folosind următoarele taste:

Tasta Acţiune
 sau  salt cu un caracter, la stânga sau la dreapta
Home salt la începutul liniei de editare
End salt la sfârşitul liniei de editare
Backspace şterge caracterul din stânga cursorului
Delete şterge caracterul de pe poziţia cursorului
Shift +  sau  selecţie unul sau mai multe caractere

Conţinutul curent al celulei poate fi validat dacă se acţionează tasta


Enter sau dacă se iniţiază deplasarea cursorului într-o altă celulă. Deoarece
acţionarea tastei Enter determină trecerea cursorului cu o celula mai jos,
pentru a introduce mai multe rânduri în aceeaşi celulă este utilizată
combinaţia de taste Alt+Enter . Tasta ESC are rolul, ca şi în alte medii de
editare, de anulare a operaţiei curente.

Punerea în evidenţă (highlighting) a unui bloc (domeniu) de celule se


face în vederea executării de către Excel a unei acţiuni ulterioare asupra
acestuia (copiere, ştergere, construirea graficelor, etc). Selecţia unui bloc se
realizează folosind tastele săgeţi sau cu ajutorul mouse-ului. Un bloc de celule
poate fi alcătuit dintr-o singură celulă, dintr-o linie de celule, dintr-o coloană de
celule sau oricare altă porţiune 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ă utilizând


butonul din tab-ul Home, secţiunea Alignment
(Merge/Unmerge):

↓ Exemplu____________________________________________________________________________________

       
       
____________________________________________________________________________________Exemplu ↑

Principalul scop al editării foilor electronice fiind acela al efectuării unor


calcule, trebuie respectate regulile sintactice de scriere a relaţiilor de calcul.
În foarte multe relaţii de calcul sunt incluse şi funcţii. Excel oferă posibilitatea
efectuării unor calcule diverse prin funcţii de calcul (financiare, statistice,
matematice şi trigonometrice, pentru baze de date, etc). Caseta de
introducere a argumentelor unei funcţii este afişată prin acţionarea butonului
asociat liniei de editare.

Funcţiile de calcul financiar dau posibilitatea efectuării unor calcule


privind rata dobânzii, valoarea viitoare sau prezentă a unei investiţii raportate
la un număr de perioade de timp. Valorile monetare sunt introduse din
postura de debit/credit, prin convenţie cu +/- (de menţionat că toate valorile
cu semnificaţie de plăţi sunt valori negative). Argumentele marcate cu bold
(în caseta de specificare a argumentelor) sunt obligatorii a fi introduse,
celelalte fiind opţionale. Valorile argumentelor pot rezulta şi prin editarea
unor relaţii de calcul.

↓ Exemplu____________________________________________________________________________________
 Funcţia NPER (Rate  rata dobânzii; Pmt  plata periodică; Pv  valoarea
prezentă - sold), returnează numărul de perioade necesare pentru a obţine un
anumit sold cu rata şi dobânda specificate. Valoarea returnată este de tip real,
de aceea, aceasta trebuie, eventual, rotunjită la o valoare întreagă (cu funcţia
Round). Se poate observa prezenţa unor valori negative (-B1, -B3) dar şi a
relaţiei B2/12 în postură de argument:

Bazele informaticii    13 


Editarea foilor electronice de calcul

 Funcţia FV (rata dobânzii; numărul de plăţi; plata periodică), calculează


valoarea de viitor a unei investiţii, cu plăţi periodice egale, pentru perioade
egale de timp, la o valoare dată a ratei dobânzii. Argumentele Rate, Nper, Pmt
ale acestei funcţii sunt obligatorii (în caseta funcţiei sunt marcate bold), iar
argumentele Pv, Type sunt opţionale.
____________________________________________________________________________________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, secţiunea 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 lăţimea coloanei se precizează numărul de caractere conţinute de o


celulă aparţinând acesteia. Lăţimea implicită a unei coloane este de 8,43
caractere normale. Dacă o celulă conţine text în exces acesta este afişat peste
celulele următoare, cu condiţia ca acestea să nu fie vide.

 Datele numerice care depăşesc ca număr de caractere lăţimea celulei


sunt afişate în format exponenţial iar dacă şi acest mod de afişare nu
este posibil se tipăreşte şirul de caractere ###### (depăşire de
format !).

Schimbarea dimensiunii unei coloane/linii se poate realiza utilizând


mouse-ul, prin culisarea liniilor grilă pentru coloane şi rânduri (se ţine apăsat
butonul stâng al mouse-ului).

↓ Exemplu____________________________________________________________________________________

Schimbarea dimensiunii unei coloane:



_____________________________________________________________________________Exemplu ↑

Referinţe absolute şi relative de celulă

Celulele pot fi referite în două moduri, modurile de referire rezultând din


tabelul următor :

Referire Exemple
coloană relativă, linie relativă A2
coloană absolută, linie absolută $A$2
coloană relativă, linie absolută A$2
coloana absolută, linie relativă $A2

Bazele informaticii    15 


Editarea foilor electronice de calcul

O referire absolută înseamnă o poziţie fixă în foaia de calcul, poziţie care


nu este afectată de modificări în foaia de calcul. Modificările din foaia de calcul
(ştergeri de linii şi coloane) se reflectă şi în referinţele relative.

 Copierea formulelor (procedeele de copiere vor fi tratate ulterior)


dintr-o celulă de calcul în altă celulă de calcul este influenţată de modul
de referire a celulelor. Toate referirile relative sunt "translatate", în timp
ce referirile absolute rămân nemodificate.

Copy (copiere), Cut (tăiere), Paste (alipire)


Copierea şi mutarea conţinutului celulelor se realizează în patru paşi:

1. Se selectează celula (sau domeniul de celule).


2. Copy (sau Cut).
3. Se stabileşte celula (sau domeniul de celule) receptoare.
4. Paste.

Pentru realizarea paşilor amintiţi anterior sunt oferite următoarele


posibilităţi:

din tab-ul Home, secţiunea Clipboard se selectează butoanele


Copy, Cut sau Paste:

Din combinaţii de taste: Ctrl+C  Copy


Ctrl+X  Cut
Ctrl+V  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… posibilităţile de


alipire sunt extinse. De exemplu, dacă sursa copiată este o formulă se
poate obţine, prin copiere, doar valoarea (Values), fără a se efectua
translatarea formulei.

Mouse-ul se plasează în colţul dreapta jos al zonei selectate acesteia,


astfel încât cursorul îşi schimbă forma în simbolul . Ţinându-se apăsat
butonul drept se face deplasarea mouse-ului în zona receptoare, la
eliberarea lui obţinându-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ă fără translatare


(rămâne $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, utilizând mouse-ul:


 

 


 

   

____________________________________________________________________________________Exemplu ↑

Formatarea conţinutului celulelor

Modul de afişare al conţinutului celulelor (afişarea numerelor  Number,


alinierea  Alignment, fontul  Font, aspectul liniilor de bordare  Border,
umplerea  Fill, …) poate fi schimbat în funcţie de tipul informaţiei pe care-l
conţine:

Bazele informaticii    18 


Editarea foilor electronice de calcul

Prin apăsarea butonului săgeată din dreapta secţiunilor tab-ului Home.


Prin clic dreapta pe zona selectată, Format Cells… .
Din combinaţie de taste Ctrl+Shift+F.

Pentru numere se poate utiliza separatorul punct (Use 1000


separator) sau numărul de zecimale cu care se face afişarea acestora
(Decimal places). Un tip foarte utilizat de afişare a numerelor este cel
procentual (Percentage, exemplu: 25%) sau monetar (Currency, exemplu:
23,45 lei).


 Formatul celulelor se păstrează. Dacă modul de afişare a valorilor
conţinute în celule trebuie schimbat se va acţiona î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 afişată prin
adăugarea simbolului %.
 Cele mai multe funcţii financiare calculează valori monetare, ca urmare
formatul de afişare stabilit va fi Currency.

Bazele informaticii    19 


Editarea foilor electronice de calcul

Atributele textului, afişat în celule, pot fi fixate şi utilizând butoane:

  Font: bold, italic, subliniat


  bordarea (Border) celulelor
  umplere (Fill), culoarea fontului
  alinierea conţinutului
  tipul fontului şi mărimea


 Editarea conţinutului unei celule
 Contopirea celulelor
 Editarea funcţiilor de calcul financiar
 Inserarea liniilor şi a coloanelor
 Ajustarea dimensiunii liniilor şi a coloanelor
 Referinţe relative şi absolute de celule
 Copiere şi mutare
 Formatarea celulelor

Bazele informaticii    20 


Editarea foilor electronice de calcul

1. Pentru comercializarea mărfurilor se folosesc documente justificative cum ar


fi factura. Să se editeze următoarea factură folosind posibilităţile de calcul
oferite de Excel:


 Celulele D1:E1, B12:C13, D12:E13 sunt contopite.
 Denumirile din capul de tabel sunt scrise pe două rânduri (Alt+Enter
pentru rând nou în interiorul celulei).
 În celula E4 este introdusă funcţia 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 utilizând mouse-ul).
 Sumele totale se vor calcula prin acţionarea butonului din tab-ul Home.
 Se vor respecta modalităţile de bordare (Border) şi umplere (Fill).

Bazele informaticii    21 


Editarea foilor electronice de calcul

2. Ştiind suma lunară care se poate investi şi rata dobânzii oferită de o bancă
oarecare să se calculeze câte 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ă.
 Numărul de perioade necesar atingerii soldului propus de 1.500 lei prin
depuneri de 100 lei, cu dobânda 13% se calculează în celula E1 cu funcţia
NPER. Rezultatul, rotunjit în E2 (14 depuneri), intră în calculul soldului final
(E3), prin funcţia FV.

 Formule:
E1 : =-NPER(B2/12;-B1;-B3)
E2 : =ROUND(E1;0)
E3 : =FV(B2/12;E2;-B1)
A6 : =1
B6 : =D6
C6 : =0
D6 : =$B$1
E6 : =D6
A7 : =A6+1

Bazele informaticii    22 


Editarea foilor electronice de calcul

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

 Conţinutul celulelor din domeniul A8:E19 se va obţine prin copierea (cu


mouse-ul) domeniului A7:E7 (calculele din linia cu numărul 2 din tabel se
repetă).
 Valorile din interiorul tabelului sunt afişate cu două zecimale şi cu separatorul
punct (Decimal places, Use 1000 separator).

Bazele informaticii    23 


Calcule financiare. Tabele de decizie

Unitatea de învăţare Nr. 3 şi 4


Calcule financiare. Tabele de decizie
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 3 şi 4 25
3.1. Despre funcţii financiare 25
3.1.1. Funcţia FV 26
3.1.2. Funcţia PV 26
3.1.3. Funcţia NPER 27
3.1.4. Funcţia PMT 27
3.1.5. Funcţia IPMT 28
3.2. Tabele de decizie 28
3.3. Rezumat 30
Lucrare de verificare Unitate de învăţare Nr. 3 şi 4 31

Bazele informaticii    24 


Calcule financiare. Tabele de decizie

Despre funcţii financiare

Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de pildă


determinarea plăţii pentru un împrumut, valoarea viitoare sau valoarea netă
actualizată a unei investiţii şi valorile obligaţiunilor sau cupoanelor.

Argumentele comune pentru funcţiile financiare includ:

 Valoarea viitoare (Fv) – valoarea investiţiei sau împrumutului


după ce s-au efectuat toate plăţile.
 Numărul de perioade (Nper) – numărul total de plăţi sau perioade
ale unei investiţii.
 Plată (Pmt) – suma plătită periodic pentru o investiţie sau
împrumut.
 Valoarea actualizată (Pv) – valoarea unei investiţii sau a unui
împrumut la începutul perioadei de investiţie. De exemplu, valoarea
actualizată a unui împrumut este capitalul de bază care este
împrumutat.
 Rata (Rate) – rata dobânzii sau rata de actualizare pentru un
împrumut sau o investiţie.
 Tip (Type) – intervalul la care sunt efectuate plăţile în timpul
perioadei de plată, ca de pildă la începutul unei luni sau la sfârşitul
acesteia.

 Unele funcţii financiare se folosesc pentru anuităţi. O anuitate constă


dintr-o serie de plăţi constante efectuate pe o perioadă continuă (de
exemplu, un împrumut pentru un autoturism sau un împrumut
ipotecar).

În funcţiile de anuităţi, sumele plătite, 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 legătură cu unităţile utilizate pentru


specificarea argumentelor Rate şi Nper (de exemplu, pentru plăţi lunare la un
împrumut pe un număr de ani, rata dobânzii va fi împărţită întotdeauna cu 12,
iar Nper va fi înmulţit cu 12 şi cu numărul de ani).

Funcţia FV

Funcţia FV întoarce valoarea viitoare


a unei investiţii bazate pe plăţi
periodice şi constante şi o rată a
dobânzii constantă.

 Rate - rata dobânzii pe o perioadă;


 Nper - numărul total de perioade de plată dintr-o anuitate;
 Pmt - plata efectuată periodic, neschimbată pe durata anuităţii (în mod
tipic, argumentul Pmt conţine capital şi dobândă, dar nu şi alte taxe şi
datorii);
 Pv - valoarea actualizată, sau suma globală pe care o serie de plăţi
viitoare o reprezintă în momentul actual (dacă argumentul Pv este omis,
se consideră zero);
 Type - este 0 sau 1 şi indică momentul când sunt datorate plăţile (dacă
Type este omis, se consideră 0).
 argumentele Pv şi Type sunt opţionale.

Funcţia PV

PV întoarce valoarea actualizată a


unei investiţii. Valoarea actualizată
este suma totală pe care o reprezintă
în prezent o serie de plăţi viitoare.
De exemplu, pentru împrumut, suma
împrumutată este valoarea
actualizată pentru creditor.

 Rate - rata dobânzii pe perioadă;


 Nper - numărul total de perioade de plată dintr-o anuitate;
 Pmt - plata efectuată periodic, neschimbată pentru toată durata anuităţii
(în mod tipic, argumentul Pmt include capital de bază şi dobândă, dar nu

Bazele informaticii    26 


Calcule financiare. Tabele de decizie

şi alte onorarii sau taxe);


 Fv - este valoarea viitoare, sau balanţa în numerar la care se ajunge
după efectuarea ultimei plăţi (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 când sunt datorate plăţile.
 argumentele Pv şi Type sunt opţionale.

Funcţia NPER

Funcţia NPER furnizează numărul de


perioade pentru o investiţie bazată pe
plăţi periodice constante şi o rată
constantă a dobânzii.

 Rate - rata dobânzii pe o perioadă;


 Pmt - plata făcută în fiecare perioadă, neschimbată pe parcursul anuităţii
(tipic, Pmt conţine capital şi investiţii, dar nu şi alte onorarii sau taxe);
 Pv - valoarea actualizată, sau valoarea globală pe care ar reprezenta-o în
acest moment o serie de plăţi viitoare;
 Fv - este valoarea viitoare, sau o balanţă în numerar, obţinută după
efectuarea ultimei plăţi (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 opţionale.

Funcţia PMT

PMT calculează plata pentru un


împrumut bazat pe plăţi constante şi
o rată constantă a dobânzii.

 Rate - rata dobânzii pentru împrumut;


 Nper - numărul total de plăţi pentru împrumut;
 Pv - valoarea actualizată, sau suma totală pe care valorează în prezent o
serie de plăţi viitoare, denumită şi capital de bază;
 Fv - valoarea viitoare, sau balanţa în numerar la care se ajunge după

Bazele informaticii    27 


Calcule financiare. Tabele de decizie

efectuarea ultimei plăţi (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 când sunt datorate plăţile.
 argumentele Fv şi Type sunt opţionale.

Funcţia IPMT

IPMT întoarce plata dobânzii pentru o


perioadă dată, pentru o investiţie
bazată pe plăţi periodice constante şi
o rată constantă a dobânzii.

 Rate - rata dobânzii pentru împrumut;


 Per - perioada pentru care se calculează dobânda cuprinsă în intervalul
[1, Nper];
 Nper - numărul 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 plăţi viitoare;
 Fv - valoarea viitoare, sau balanţa în numerar obţinută după efectuarea
ultimei plăţi (dacă Fv este omis, se presupune a fi egală cu 0 - valoarea
viitoare a unui împrumut, de exemplu, este 0);
 argumentul Fv este opţional.

 În casetele de introducere a argumentelor funcţiilor 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


modificările anumitor valori referite în formule afectează rezultatele formulelor.
Tabelele de decizie oferă facilitatea de a calcula variante multiple ale unei
operaţii şi un mod de a vizualiza şi compara rezultatele (prognozarea valorilor cu
ajutorul analizei: “ce se întâmplă dacă - What If”) - tab-ul Data, secţiunea Data
Tools, butonul What-if Analysis, opţiunea Data Table… :

Bazele informaticii    28 


Calcule financiare. Tabele de decizie

Aceste tabele de date se construiesc pe baza unei


formule având 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 afişează
tabelar. Logica constituirii lor constă în definirea unei relaţii de calcul care se
scrie o singură dată dar se aplică de mai multe ori. Pentru afişarea rezultatelor
se selectează domeniul corespunzător al intrărilor ş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ă relaţia : a+2*b (variabilele sunt a şi b).


 În celula aflată în colţul stânga
sus al tabelului de lucru se
defineşte relaţia 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 obţin 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.


 Funcţiile de calcul financiar FV, PV, NPER, PMT, IPMT.
 Tabele de decizie.

Bazele informaticii    30 


Calcule financiare. Tabele de decizie

1. Exerciţii
a. O persoană fizică depune 500 lei, într-un cont de economii, cu o dobândă
anuală de 11% şi îşi planifică să mai depună câte 50 lei timp de 2 ani. Câţi
bani va avea în cont la sfârşitul celor 24 luni (atenţie, argumentul Type este
1)?
Răspuns: 1970,08 lei

b. Ca urmare a depunerii cu o dobândă anuală de 15% a unei sume, o


bancă returnează lunar 400 de lei timp de şase ani. Care este valoarea
acestei sume?
Răspuns: -18.917 lei
c. După câte luni se va atinge un sold propus de 3 mii lei pentru depuneri
lunare de 150 lei şi la o rată a dobânzii anuale de 14% ?
Răspuns: 22,907… ≈ 23 luni

d. Cât trebuie să economisiţi lunar ca, după 10 ani, contul în bancă să fie de
1.500 lei la o dobândă lunară de 1% ?
Răspuns: -6,52 lei

e. Care este dobânda datorată după al doilea an pentru un împrumut de


1.000 de lei, pe trei ani, la o dobândă anuală de 12% ?
Răspuns: -84,438 lei

2. Returnarea unui împrumut bancar se poate realiza în plăţi constante (care


se determină cu funcţia PMT) sau în plăţi variabile (valoarea
împrumutului/numărul de perioade + dobânda calculată prin IPMT). Suma
plăţilor constante este egală cu suma plăţilor variabile. Să se verifice
această situaţie pentru un împrumut de 4.000 lei returnabil în 4 luni, cu o
dobândă lunară de 2%.

Bazele informaticii    31 


Calcule financiare. Tabele de decizie

Dobânda (calculată cu IPMT) scade – argumentul Per ia valorile 1, 2, 3, 4.


Plăţile constante se calculează cu funcţia PMT.

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


Ştiind că valoarea la zi a ratei dobânzii anuale este de 10% şi că valoarea
maximă estimată a acesteia pentru următorii ani este 17% să se calculeze:

a) Plăţile lunare pentru diverse valori ale ratei dobânzii în situaţia în care
plăţile pot fi eşalonate pe un număr 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 conţine
funcţia PMT - PMT(D5/12;D4*12;D3).

b) Plăţile lunare, împreuna cu dobânzile aferente, pentru valori ale ratei


dobânzii 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 plăţi se va
utiliza funcţia PMT - PMT(D5/12;D4*12;D3), iar pentru dobânzi IPMT -
IPMT(D5/12;D4*12;D4*12;D3).

Bazele informaticii    33 


Tabele de date. Grafice

Unitatea de învăţare Nr. 5 şi 6


Tabele de date. Grafice
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 5 şi 6 35
5.1. Tabele de date 35
5.1.1. Ştergere (Delete) şi inserare (Insert) 36
5.1.2. Sortare şi filtrare (Sort & Filter) 38
5.2. Grafice (diagrame) 42
5.3. Rezumat 44
Lucrare de verificare Unitate de învăţare Nr. 5 şi 6 45

Bazele informaticii    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 încât, principalele elemente care
definesc un tabel de date sunt:

 Înregistrările (articole, records), entitatea de lucru a


tabelului de date.
 Câmpurile (fields), informaţiile distincte din cadrul unei
înregistrări.
 Linia de antet (header row) care permite identificarea
informaţiilor cuprinse în înregistrări.

O zonă dintr-un Sheet poate fi definită ca


tabel de date, devenind astfel o entitate de sine
stătătoare, utilizând tab-ul Home, secţiunea Styles:

Prin acţionarea butonului Format as Table se alege stilul


sub care va fi afişat 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 câmpurile tabelului
de date trebuie să fie diferenţiate în mod corespunzător. Dacă un titlu de
coloană trebuie scris pe mai multe rânduri se poate folosi combinaţia de
taste Alt+Enter . Prin clic dreapta pe zona selecţionată (Format cells,

Bazele informaticii    35 


Tabele de date. Grafice

Alignment) se pot face precizări legate de afişarea textului cum ar fi:


 alinierea textului pe orizontală sau pe verticală (Horizontal,
Vertical),
 scrierea multirând (Wrap text),
 adaptarea dimensiunii textului la dimensiunea celulei (Shrink to
fit),
 contopirea mai multor celule (Merge cells),
 orientarea direcţională a textului (Orientation).
 datele de pe coloană trebuie să fie de acelaşi tip;
 liniile (coloanele) nu trebuie să fie goale sau întrerupte;
 datele de tip text nu trebuie să înceapă cu spaţiu (se pot crea probleme
la căutarea sau sortarea în listă).

↓ Exemplu____________________________________________________________________________________

Un tabel este definit ca tabel de date (a se observa apariţia butoanelor


săgeţi, lângă denumirile din capul de tabel, utilizate pentru prelucrarea
conţinutului 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 poziţia cursorului în tabel şi


este edificată, de obicei, prin clic dreapta, cu mouse-ul, şi alegerea opţiunii
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 opţiunii 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 (selecţie 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ă filtrări (selecţia pe orizontală), care reprezintă posibilitatea de a
introduce în prelucrare doar datele care îndeplinesc o anumită condiţie.
Filtrarea se poate realiza pe o valoarea anumită cuprinsă în unul din câmpurile
bazei de date şi poate fi personalizată prin criterii de filtrare particularizată
(Custom), care permite precizarea condiţiilor logice: Is Greater Than (mai
mare decât), Equals (egal cu), Does Not Equal (diferit de), Begins
With (începe cu), etc.

Pentru efectuarea sortărilor şi a filtrărilor este


utilizat butonul Sort & Filter (tab-ul Home, secţiunea
Editing):

În funcţie de tipul datelor de pe coloane este afişat un meniu vertical ce


permite lansarea operaţiilor de sortare sau filtrare:

Bazele informaticii    38 


Tabele de date. Grafice


Selectarea opţiunii Filter determină afişarea/ascunderea butoanelor săgeţi
asociate denumirilor de câmpuri, deci, utilizarea sau neutilizarea
acestora.

Acţionarea butoanelor săgeţi determină apariţia, funcţie de tipul datelor


din câmpul activ – textual sau numeric, unui meniu vertical, din care pot fi
selectate mai multe opţiuni:

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

↓ Exemplu___________________________________________________________________________________

 Sortare după câmpul Media (în ordine descrescătoare) - Sort Largest


to Smallest (se acţionează butonul săgeată asociat câmpului):

Bazele informaticii    39 


Tabele de date. Grafice

 Sortare în ordine alfabetică - Sort A to Z (se acţionează butonul


săgeată asociat câmpului Student):

____________________________________________________________________________________Exemplu ↑

Dacă se impune necesitatea ordonării unui tabel de date după mai multe
criterii – sortare pe nivele, se alege opţiunea Custom Sort… din meniul vertical
apărut la acţionarea butonului Sort & Filter (tab-ul Home, Editing). În fereastra
Sort se pot adăuga nivele - Add Level sau se pot elimina - Delete Level.

↓ Exemplu____________________________________________________________________________________

Pentru sortarea tabelului utilizat în exemplificările anteriore, pe anul de


studii (primul Level) şi în ordinea descrescătoare a mediilor (al doilea
Level) fereastra Sort are următorul conţinut:

iar tabelul de date va fi afişat astfel:

___________________________________________________________________________________Exemplu ↑

Bazele informaticii    40 


Tabele de date. Grafice

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


numite înregistrări. Pentru stabilirea unor criterii de filtrare se acţionează
butoanele sub formă de săgeţi din antetul tabelului şi, funcţie de tipul de date
de pe coloane - Text Filters, Number Filters, acestea se aleg din meniurile
contextuale:

Opţiunea 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
următorul conţinut:

Bazele informaticii    41 


Tabele de date. Grafice

astfel încât tabelul va fi afişat astfel:

___________________________________________________________________________________Exemplu ↑


Pentru invalidarea unor criterii de filtrare deja stabilite, se alege, din
meniul contextual aferent, opţiunea Select All. Astfel tabelul de date are
disponibile, spre prelucrare, toate înregistrările.

Grafice (diagrame)

Datele din tabele devin mai convingătoare atunci când sunt prezentate
sub formă de histograme, diagrame circulare, grafice liniare, etc. Mediile de
realizare a foilor de calcul electronic conţin facilităţi de redare grafică a
tabelelor.

Construirea unui grafic, pornind de la un tabel dat, presupune


următoarele 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 găsesc 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ă cantităţi,
preţuri, etc).
4) Alegerea titlurilor axelor şi a titlului graficului.
5) Stabilirea legendelor şi a altor detalii care contribuie la claritate
reprezentării 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 corelaţii între diverse serii de date se
recomandă reprezentare simultană pe acelaşi 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 gradaţiile 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 realizării unui grafic :

1) Se selectează seriile;
2) Se fixează colţul stânga-sus al zonei unde va fi afişat graficul;
3) Se selectează tab-ul Insert;

Bazele informaticii    43 


Tabele de date. Grafice

4) Din secţiunea 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). Însuşi grafic este un obiect care, atunci când este selectat,
determina apariţia 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 centralizării şi prelucrării datelor privind comerţul mondial pe


anul 2006 au fost înregistrate valorile privind exporturile, importurile
(milioane de dolari) şi populaţia (milioane de locuitori):

Să se constituie tabelul de date corespunzător şi să se afişeze


următoarele 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 ataşează 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 ataşează o nouă coloană pe care se calculează exportul/populaţie,


pentru o sortare descendentă

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

2. Să se facă reprezentările grafice corespunzătoare punctelor 1b, 1c, 1d


folosind diferite tipuri de diagrame .

 pentru 1b

Bazele informaticii    46 


Macrocomenzi

Unitatea de învăţare Nr. 7


Macrocomenzi
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 7 48
7.1. Înregistrarea unei macrocomenzi VBA 48
7.2. Rezumat 55
Lucrare de verificare Unitate de învăţare Nr. 7 55

Bazele informaticii    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, asemănător celui din Visual Studio (Visual
Basic, C++, Java, etc.). Acest limbaj de programare poate fi utilizat pentru:

 înregistrarea acţiunilor utilizatorului (de exemplu: introducerea şi


formatarea unui text, rularea unor comenzi de meniu, lansarea opţiunilor
din casetele de dialog etc.) prin transpunerea lor în secvenţe de
instrucţiuni Basic, care definesc un script numit macrocomandă;
 gestionarea conţinutului documentului Office, cu care VBA-ul poate
comunica;
 dezvoltarea unor programare independente de conţinutul documentului
Office (este necesară deschiderea, cel puţin formal, unei aplicaţii Word,
Excel, etc.).
O macrocomandă (apelată printr-o comandă de meniu, apăsarea unei
taste sau a unui buton dintr-o bară de instrumente) reprezintă o listă de
instrucţiuni - instrucţiuni de macrocomandă (macro statements). Unele
instrucţiuni execută operaţii specifice macrocomenzii, însă cele mai multe
corespund acţiunilor înregistrate ale utilizatorului. Este, astfel, posibilă
automatizarea activităţilor 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, informaţiile sunt, în general, valabile şi pentru suita
Office 2003. Acesta conţine 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ă,
operaţiunile 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ă toate operaţiile în instrucţiuni Basic


corespunzătoare (module VBA).

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


posedă funcţii 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, uşor accesibile;
 primul caracter trebuie să fie o literă sau o liniuţă de subliniere (_);
 în nume nu sunt permise spaţiile sau punctele.
↓ Exemple____________________________________________________________________________________

În Word, macrocomanda poate fi


asociată cu un buton (Button) de pe o
bară de instrumente, sau, cu o
combinaţie de taste (Keyboard) → Alt+,
Ctrl+. Ea se poate stoca (Store macro
in) în orice şablon deschis (devine astfel
disponibilă pentru orice document care
foloseşte şablonul) sau în orice document
deschis (va putea fi utilizată doar în
documentul respectiv). Caseta de text
Description conţine, opţional,
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
acţiunile utilizatorului, este indicată neefectuarea unor comenzi
neesenţiale pe parcursul înregistrării. Intrarea în starea ”Recording”
este marcată în bara de stare a programului Office. Acest buton va fi
acţionat în momentul terminării înregistrării:

 În PowerPoint, macrocomanda se poate memora în orice prezentare


deschisă. Ea va fi creată utilizând editorul VBA.

↓ Exemplu (Word) ____________________________________________________________________


Adăugarea unui buton de rulare a unei macrocomenzi, în Quick Access
Toolbar:

Quick Access Toolbar 

 se deschide în editare un document;


 se iniţiază înregistrarea unei macrocomenzi, ;
 se stabileşte 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 acţionează 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" Constanţa 

Facultatea de Ştiinţe Economice 

     Data: 11 februarie 2007 Ora: 11:24

 se încheie înregistrarea apăsând butonul , din bara de stare;

 macrocomanda, fiind asociată documentului, poate fi utilizată oricând prin


acţionarea butonului (a se remarca actualizarea datei şi a orei):

Universitatea "Ovidius" Constanţa 

Facultatea de Ştiinţe Economice 

     Data: 13 februarie 2007 Ora: 17:16

 vizualizarea conţinutului macrocomenzii , Edit în Editorul


VBA:

Bazele informaticii    51 


Macrocomenzi

În corpul macroinstrucţiunii apar instrucţiuni ale limbajului de programare


Visual Basic în care sunt transformate acţiunile utilizatorului. Acest instrucţiuni
au mai multă sau mai puţină semnificaţie, mai ales pentru un programator
începător. Deocamdată, important este faptul de a ştii că ele pot fi modificate.

___________________________________________________________________________________Exemplu ↑

O macrocomandă obişnuită are următoarele elemente:

 Cuvântul cheie Sub (prescurtare de la subrutină) - acest cuvânt


cheie marchează începutul unei macrocomenzi.
 Numele macrocomenzii - după cuvântul cheie Sub este plasat
numele unei macrocomenzi urmat de paranteze.
 Comentariile - rânduri care încep cu un apostrof ('). Comentariile
nu sunt prelucrate atunci când macrocomanda este rulată.
 Instrucţiunile 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ă acţionând butonul
:

 Rularea unei macrocomenzi se poate realiza şi prin shortcut-ul


Alt+F8.

↓ Exemplu (Excel) ___________________________________________________________________


 se deschide în editare un document;
 se poziţionează cursorul (de exemplu în celula B2);
 se iniţiază înregistrarea unei macrocomenzi, ;
 se stabileşte numele macrocomenzii (aici Data) care va fi asociată cu
combinaţia de taste Ctrl +d ;
 în celula curentă se introduce funcţia TODAY():

 se salvează foaia electronică de calcul: Save as type, Excel Macro-


Enabled Workbook ;
 se deschide documentul Excel, dându-se permisiunea de executare a
macrocomenzilor: , Enable this content ;

Bazele informaticii    53 


Macrocomenzi

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


utilizând shortcut-ul Ctrl +d :

 vizualizarea conţinutului macrocomenzii , Edit în Editorul


VBA:

 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 funcţiei de dată
calendaristică a fost apăsată tasta Enter). Dacă, în editorul VBA, se
şterge instrucţiunea 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 fişier ce conţine menţiunea Macro-Enabled.

Bazele informaticii    54 


Macrocomenzi


 O macrocomandă reprezintă o listă de instrucţiuni scrise în limbajul de
programare Basic, varianta VBA.
 VBA este un mediu de programare puternic, asemănător celui din Visual
Studio (Visual Basic, C++, Java, etc.)
 Instrucţiunile unei macrocomenzi pot fi editate - se pot modifica, şterge
instrucţiunile Basic existente, se pot adăuga altele noi.
 Macrocomenzile pot fi rulate de câte ori este nevoie.
 Din motive de securitate, la lansarea aplicaţiilor Office, se notifică
existenţa 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 învăţare Nr. 8


Editorul VBA
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 8 57
8.1. Lansarea editorului VBA 57
8.2. Mediul de editare VBA 57
8.3. Module VBA 59
8.3.1. Identificarea modulelor 59
8.3.2. Rularea modulelor 59
8.3.3. Save şi Open pentru aplicaţiile Office şi modulele asociate 60
8.3.4. Sistemul de asistenţă la scrierea codului 60
8.3.5. Proceduri 61
8.3.5.1. Proceduri Sub 61
8.3.5.2. Proceduri Function 63
8.4. Formulare VBA 64
8.4.1. Crearea unui formular 65
8.4.2. Rularea unui formular 66
8.4.3. Controale OLE 66
8.5. Documente Office active 68
8.5.1. Controale ActiveX 69
8.5.2. Proceduri eveniment 70
8.6. Rezumat 72
Lucrare de verificare Unitate de învăţare Nr. 8 73

Bazele informaticii    56 


Editorul VBA

Programele din suita Office au asociate un editor VBA numit VBE care
facilitează scrierea şi editarea unor secvenţe program în limbajul Visual Basic
(în cercurile programatorilor profesionişti, Visual Basic Editor este numit mediu
integrat de dezvoltare sau IDE). VBE transpune acţiunile utilizatorului în
instrucţiuni Basic sub forma macrocomenzilor, prin procedeul de înregistrare.
Se pot edita însă şi macrocomenzi proprii, fie pornind de la zero, fie utilizând 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 aplicaţia de bază).
 acţionarea 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, conţine o serie de meniuri, fiecare dintre


acestea conţinând comenzi. De exemplu, se poate selecta comanda Run
Sub/UserForm din meniul Run. Multe dintre comenzile meniurilor au aşa-
numitele taste rapide (hotkeys) care se pot folosi pentru a selecta

Bazele informaticii    57 


Editorul VBA

comanda direct din tastatură (F5 în cazul de faţă) – fără deschiderea


meniului.

MenuBar

ToolBar

Fereastra 
Project 

Fereastra 
de cod 

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 modalităţi rapide de
selectare a unei comenzi din meniuri. De exemplu, butonul (Save)
salvează documentul din proiectul curent, având aceeaşi pictogramă şi
acelaşi 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. Executând un clic pe semnele plus(+) şi minus(-) de lângă
dosarele din fereastra Project, se pot afişa mai multe sau mai puţine detalii.

 Fereastra Properties afişează proprietăţile obiectului care este curent


selectat. Proprietăţile 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 părţi din proiect, prin procedeul „Recording”, este necesară şi


scrierea codului sursă al programului. Programele conţin linii de comenzi
care se introduc în fereastra de cod.

Module VBA

În Visual Basic Editor, macrocomenzile sunt grupate în aşa numitele


module (esenţa limbajului VBA). Modulele sunt secţiuni care grupează
instrucţiuni Basic. Dacă documentul Office are asociată o macrocomandă,
instrucţiunile care o compun sunt afişate în fereastra de cod. Pentru editarea
propriilor module este necesară inserarea acestora (prin meniu, Insert,
sau utilizând butonul din Toolbar).

 Identificarea modulelor
Atunci când 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 diferenţiate.
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 conţine spaţii sau semne
de punctuaţie (liniuţele de subliniere sunt acceptate) şi nu are mai mult
de 31 de caractere.

 Rularea modulelor
Modulele includ o secvenţă de instrucţiuni Basic care trebuie să fie corecte
din punct de vedere sintactic. Detectarea erorilor se poate efectua prin
compilare (Debug, Compile Project).

În aplicaţiile Office există mai multe metode de rulare a modulelor, însă


cel mai des utilizate sunt următoarele două:
 În cadrul editorului, se acţionează, de obicei, butonul din
ToolBar. Aceeaşi comanda se poate lansa şi prin meniu: ,
.
 În aplicaţia Office, caseta Macros evidenţiază 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

şi pentru aplicaţiile 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 fişier: Macro-Enabled (Save As type).
Pentru un astfel de fişier, atunci când se deschide, în Message Bar va
apare mesajul:

Se poate permite executarea macrocomenzilor în fereastra Security


Alert – Macro (clic pe butonul Options…) :
 Separat, ca fişiere cu extensia .bas (fişiere Basic). Pe această cale se
exportă/importă modulul ca fişier .bas, de fapt un fişier 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 tastării codului, prin instrumentul


IntelliSense, după ce s-a introdus un cuvânt-cheie care este recunoscut ca
având parametri. Editorul de program afişează lista valorilor posibile pentru
respectivii parametrii. Parametri semnifică proprietăţile unui control (care în cod se
separă de numele controlului prin punct), argumentele unei proceduri sau funcţii,
tipurile de dată etc. Această facilitate se numeşte Auto Members.
Poziţionarea în listele respective se face mai uşor prin tastarea primelor
litere ale cuvântului dorit („Int" pentru Integer). Scrierea efectivă a cuvântului
dorit are loc prin apăsarea tastei Enter, tasta „virgulă" dacă se scriu elementele
unei liste.

La tastarea liniilor de cod, VBA execută mai multe operaţii:


 Formatează culoarea fiecărui cuvânt din linie. În mod prestabilit,
cuvintele cheie din VBA sunt afişate cu albastru, comentariile cu verde,

Bazele informaticii    60 


Editorul VBA

erorile cu roşu, iar celelalte texte cu negru.


 Adaugă linii şi cuvinte noi, specifice limbajului. De exemplu, dacă se
introduce cuvântul 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 sfârşitul procedurii.
 Cuvintele cheie sunt schimbate în formatul potrivit (dacă se tastează end
sub, VBA transformă expresia în End Sub la apăsarea tastei Enter.
 Verifică erorile de sintaxă, adică erorile care apar atunci când un cuvânt
este ortografiat greşit, o funcţie este introdusă incorect, etc. VBA
semnalează o eroare de sintaxă, fie afişând o casetă de dialog, fie
neafişând cuvântul, în formatul şi culoarea corespunzătoare.
↓ 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 afişat astfel:

____________________________________________________________________________________Exemplu ↑

 În exemplificările următoare, pentru afişarea unor casete de mesaj,


se va utiliza funcţia MsgBox.

 Proceduri
Un modul este compus din una sau mai multe unităţi de bază numite
proceduri. Există două tipuri de proceduri:
 proceduri Sub (subrutine)
 proceduri Function (funcţii)
Pentru lucrul cu procedurile trebuie avută în vedere, în primul rând,
definirea grupului de instrucţiuni care vor constitui corpul procedurii şi, în al
doilea rând apelul lor (de câte ori este nevoie).

Proceduri Sub

O procedură Sub reprezintă un grup de instrucţiuni care primeşte, de la


programul apelant un şir de parametri, realizează anumite prelucrări, după
care dă controlul programului apelant.

Bazele informaticii    61 


Editorul VBA

Definiţia sintactică este (Exit Sub este opţional şi reprezintă punctul


de ieşire din procedură, dacă lipseşte procedura se termină la End
Sub):
Sub NumeProcedură (argument1, argument2, …)
<instrucţiuni VBA>
[Exit Sub]
<instrucţiuni VBA>
End Sub 

Apelul procedurii (cuvântul 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 funcţie definită de utilizator reprezintă un grup de instrucţiuni care


primeşte un set de parametrii (argumentele funcţiei) de la programul apelant şi
îi returnează acestuia valoarea. Numele unei funcţii poate intra în componenţa
expresiilor de calcul ca operand.

Definiţia sintactică este:

Function NumeFuncţie (argument1, argument2, …) [As <tip>]


<instrucţiuni VBA>
[Exit Function]
<instrucţiuni VBA>
End Function 

Apelul funcţiei se realizează prin numele funcţiei urmat de lista


parametrilor, pusă între paranteze.


 Între lista parametrilor de apel şi lista argumentelor funcţiei trebuie
să existe o corespondenţă biunivocă, determinată de ordinea
argumentelor în listă.
 Exit Function este opţional şi reprezintă punctul de ieşire din
procedură - dacă lipseşte procedura se termină la End Function.
 Argumentul As, opţional, impune tipul valorii returnate la
terminarea funcţiei.

↓ Exemple______________________________________________________________________________
Din procedura Sub ex1() este apelată procedura Function ex2() – funcţie
fără nici un argument:

Bazele informaticii    63 


Editorul VBA

O funcţie ValoareTva, pentru calculul valorii TVA, poate fi definită într-un modul:

____________________________________________________________________________________Exemple ↑

 Tratarea mai pe larg a acestor secţiuni de program va fi făcută în


capitolul Module VBA.

Formulare VBA

Cu ajutorul formularelor (se poate utiliza şi termenul form) se


defineşte interfaţa grafică, asemănătoare cu cea editată în mediile de
programare Visual Studio, astfel că practica în VBA poate fi considerată
introductivă către acestea.

În formular se pot introduce controale OLE (numite şi controale


ActiveX), situate în caseta cu instrumente ToolBox, care permit interacţiunea
cu utilizatorul. Un control are atribute (proprietăţi) ajustabile şi sesizează
evenimente (este „viu”). Controalelor li se asociază secvenţe de cod, sub forma
unor proceduri, numite proceduri eveniment.

Bazele informaticii    64 


Editorul VBA

Design  Project  Properties  Toolbox

Formular  Caseta cu 
instrumente 

Crearea unui dialog utilizator (termenul utilizator este adăugat pentru


diferenţierea de dialogurile încorporate mediului) necesită parcurgerea mai
multor etape:

 crearea unui formular (UserForm), care constituie suportul pe care


sunt adăugate controalele;
 plasarea controalelor pe formular;
 stabilirea proprietăţilor pentru controale;
 scrierea procedurilor asociate controalelor, de răspuns la evenimentele
declanşate prin acţionarea lor.

 Crearea unui formular

În Visual Basic Editor crearea unui formular (prin meniu, Insert,


sau utilizând butonul din Toolbar) se realizează în modul de
proiectare (design mode).

Bazele informaticii    65 


Editorul VBA

 Rularea unui formular

În modul de execuţie (run mode) controalele răspund evenimentelor.


Pentru rularea unui formular se acţionează, de obicei, butonul din ToolBar
(aceeaşi 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 interfaţa cu
utilizatorul, cum ar fi:

  Buton

  Etichetă

    Casetă de text

    Buton radio (opţiune)

  Casetă cu listă

  Listă derulantă

  Casetă de imagine

Numele proiectului apare în fereastra Project Explorer, iar


proprietăţile controalelor (dar şi ale formularului) sunt afişate în fereastra
Properties. Aceste proprietăţi pot fi stabilite manual (din fereastra
Properties) sau prin instrucţiuni program.
Pentru a adăuga un control în formular se execută clic pe pictograma
corespunzătoare din Toolbox şi se trasează în fereastra formularului (o linie
punctată gri şi punctele de dimensionare înconjoară controlul). Mărimea
controlului se poate stabili utilizând punctele de dimensionare. Când se
plasează indicatorul mouse-ului deasupra unui punct de dimensionare, acesta
îşi modifică înfăţişarea pentru a indica direcţiile în care se poate trage acesta,
ţinând apăsat butonul stâng al mouse-ului. Pentru a muta controlul, se plasează
indicatorul mouse-ului deasupra sa, cursorul acestuia transformându-se într-o
pictogramă cu patru săgeţi. Butonul mouse-ului se ţine apăsat şi se deplasează
cursorul.

Bazele informaticii    66 


Editorul VBA

 Se pot redimensiona majoritatea controalelor, trăgând de punctele lor


de dimensionare. De asemenea se poate realiza deplasarea lor.

↓ Exemplu_____________________________________________________________________________
Adăugarea 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, proprietăţile Caption şi Name se modifică la
valoarea Start:

 Atunci când se execută dublu clic pe control, limbajul VBA afişează


fereastra de cod în care sunt incluse şi liniile de cod implicite
(procedură). Procedura Private Sub Start_Click() se va
executa ori de câte ori utilizatorul, în faza de execuţie, acţionează
butonul (procedura este un eveniment pe care Windows îl transmite
programului spre a fi administrată). Programatorul poate adăuga
propriul lui cod sursă. De exemplu instrucţiunea MsgBox (”Bun
venit in VBA”) spune limbajului VBA să afişeze o casetă de
mesaj:
Sub Start_Click()
MsgBox („Bun venit in VBA”)
End Sub 

 La rularea programului ( ) va apare caseta de mesaj conţinând


textul ”Bun venit in VBA”:

Bazele informaticii    67 


Editorul VBA

___________________________________________________________________________________Exemplu ↑

 Tratarea mai pe larg a controalelor care definesc interfaţa grafică cu


utilizatorul va fi făcută în capitolul Formulare VBA.

Documente Office active

Controalele ActiveX (în cazul formularelor mai sunt denumite şi controale


OLE, pentru a face diferenţierea) pot fi plasate şi direct în documentele
aplicaţiilor: 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 proprietăţi ajustabile, recunosc


evenimente. Prin scrierea procedurilor eveniment, interfaţa cu utilizatorul poate
fi personalizată şi definită corespunzător. Pot fi adăugate controale unui
document în acelaşi 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). Deşi modul de operare al
controalelor ActiveX este foarte asemănător cu cel al controalelor OLE, există
unele deosebiri:

Bazele informaticii    68 


Editorul VBA

 Adăugarea 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
(dar şi în Excel) prin acţionarea butonului din tab-ul
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.
 Proprietăţile controalelor se stabilesc după ce se acţionează
butonul .

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


diferite şi tratările acestora sunt diferite.  Pentru editarea şi utilizarea
documentelor Word active se impune respectarea următoarelor reguli:
 Controalele ActiveX se pot adăuga stratului (layer-ului) de text.
Controlul este inserat ca un caracter, respectându-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
inserţie pe text.
 În Design Mode, controalele ActiveX sunt disponibile pentru editare.
 În Run Mode controalele reacţionează la evenimente.

 Controale ActiveX

   
Controlul CommandButton este tipic pentru startul evenimentelor. Codul
program de executat este plasat în procedura eveniment Click. Textul afişat
pe buton este conţinut î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 afişarea 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 interfeţelor
grafice datorită avantajelor pe care le oferă la introducerea datelor şi la
manipularea lor. Defineşte un câmp de editare în care utilizatorul poate
introduce un text (proprietatea Text). Aspectul textului afişat este determinat
de proprietăţile Font şi ForeColor. La fel ca şi la alte controale, proprietăţile
pot fi modificate prin cod program, în timpul rulării aplicaţiei. O casetă de text
poate fi folosită în modul activ (utilizatorul are acces la conţinutul său) sau în
modul inactiv (utilizatorul poate doar să vizualizeze conţinutul, textul fiind
protejat în cazul în care se încearcă modificarea sa).

Este controlul care se foloseşte atunci când trebuie selectată doar o singură
opţiune din mai multe posibile.

 Proceduri eveniment

Procedurile eveniment sunt secvenţe de instrucţiuni asociate diferitelor


controale la activarea/dezactivarea acestora. Afişarea ferestrei de cod este
realizată prin executarea unui dublu clic pe controlul pentru care se doreşte
scrierea instrucţiunilor 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 instrucţiunile Basic, referirea la proprietatea unui control se face prin
construcţia control.proprietate – numele proprietăţii este legat de numele
controlului printr-un punct.


La testarea secvenţelor de cod se produc, deseori, erori
de sintaxă sau de natură logică, mai ales de către
începători. 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:
_______________________________________________________________

Preţul: TVA:

_______________________________________________________________

 Se stabilesc proprietăţile:

Proprietatea Enabled = True pentru TVA anihilează scrierile


accidentale în această casetă de text, destinată afişării rezultatului unui
calcul.

 Se editează procedura eveniment:


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

Mai complet, se poate testa dacă preţul este într-adevăr o valoare


numerică (funcţia IsNumeric şi instrucţiunea 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 foloseşte punct zecimal în loc de virgulă
zecimală, vezi : 0.19

 În Run Mode se pot iniţia calcule:

Bazele informaticii    71 


Editorul VBA

______________________________________________________________

142,50 27.075
Preţul: TVA:

______________________________________________________________

! preţul apare cu virgulă zecimală datorită setărilor de sistem:


Regional and Language Options: Romanian

____________________________________________________________________________________Exemplu ↑


 VBA se poate lansa dintr-o aplicaţie Office, cel mai adesea utilizând
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 fişiere cu extensia .bas).
 Fereastra Project Explorer arată modulele, formularele și documentele
Office din proiect. Un proiect are cel puţin un modul sau un formular.
 Pentru a crea o aplicaţie VBA e necesară scrierea codului sursă al
programului şi apoi compilarea programului (Debug, Compile Project)
pentru eliminarea eventualelor erori de sintaxă.
 Instrucţiunile programului se introduc în fereastra de cod VBA.
 Fereastra Properties afişează atributele unui obiect din proiect.
 Controalele se folosesc pentru a realiza interfaţa grafică cu utilizatorul.
 Se poate construi o interfaţă cu utilizatorul plasând controale pe un
formular sau pe stratul de text al Word-ului.
 Se pot redimensiona controalele (şi formularul) trăgând de punctele de
dimensionare ale controalelor, care apar atunci când este selectat
controlul.
 O modalitate de afişare a ferestrei de cod este executarea unui dublu clic
pe controlul pentru care se doreşte scrierea codului de program.
 Atunci când 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 preluării acestor date în programul Basic.

Să se editeze şi să se ruleze secvenţele de instrucţiuni Basic din

exemplele marcate cu simbolul .

Bazele informaticii    73 


Secvenţe de cod VBA

Unitatea de învăţare Nr. 9


Secvenţe de cod VBA
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 9 75
9.1. Cuvintele 75
9.2. Comentariile 76
9.3. Tipuri de date 76
9.4. Expresiile 79
9.4.1. Operanzi 79
9.4.2. Operatori 79
9.4.3. Ordinea de evaluare a expresiilor 80
9.5. Constante şi variabile 81
9.5.1. Constante 81
9.5.2. Variabile 82
9.6. Instrucţiunea de atribuire 83
9.7. Liste (arrays) de variabile 84
9.7.1. Liste dinamice 85
Lucrare de verificare Unitate de învăţare Nr. 9 86

Bazele informaticii    74 


Secvenţe de cod VBA

O aplicaţie VBA include unul sau mai multe formulare şi module.


Secvenţele 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ă părţi: o instrucţiune şi unul sau mai multe argumente.

Editorul de program colorează cuvintele pentru a facilita detectarea lor.


Sunt câteva culori implicite: verde pentru comentarii, albastru pentru cuvintele-
cheie, 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) aparţin limbajului şi au o semnificaţie


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 atât pentru a defini datele


ce se prelucrează, programele, fişierele, procedurile, cât şi pentru a înscrie
comentarii în programe (de exemplu: cantitate, PU, Valoare, etc).


 O linie poate ocupa şi două rânduri, reunite prin spaţiu şi linie de
subliniere ( _) la sfârşitul primului rând.
 O linie de program poate conţine mai multe instrucţiuni separate
prin : (două puncte), lucru nerecomandabil datorită dificultăţilor
de citire a programului.
 Nu este permisă tăierea cuvintelor !

Bazele informaticii    75 


Secvenţe de cod VBA

↓ Exemple____________________________________________________________________________________

Instrucţiune scrisă pe două rânduri:


Valoare = pret * _
cantitate
Instrucţiuni scrise pe acelaşi rând:
Valoare = 2 : cantitate = 50
____________________________________________________________________________________Exemple ↑

 Comentariile

Un comentariu constituie o linie de cod care nu se execută, având în cuprins


explicaţii asupra altor porţiuni de cod (care, de regulă, urmează). În acest fel, la o
parcurgere ulterioară a codului, va fi facilitată înţelegerea acestuia. Comentariile
incluse de programatori la scrierea unei aplicaţii ajută foarte mult la modificarea
sau întreţinerea 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 fiecărei proceduri în parte;
 explicarea secvenţelor sau a calculelor mai complexe.

În Basic există două variante:

 Utilizarea instrucţiunii REM: desemnează un comentariu care se întinde


pe întreg rândul;
 Utilizarea unui apostrof (') la începutul comentariului: în acest caz se
pot scrie comentarii şi după o instrucţiune, pe acelaşi rând.

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


execuţiei aplicaţiei - Basic ignoră la execuţie liniile care încep cu REM sau
apostrof.

Bazele informaticii    76 


Secvenţe 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 prelucrări. 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
corespunzător prelucrării ce urmează.

Tipul Descriere Lungime Interval de valori

(byte)
Boolean Date de tipul logic 1 True sau False

Byte 1 0  255

Integer Numere întregi 2 -32.768  32.767

Long 4 -2.147.483.648  2.147.483.647

Bazele informaticii    77 


Secvenţe de cod VBA

Currency 8 -922.337.203.685.477,5808 
Format monetar
922.337.203.685.477,5807

Single 4 -3.4028235E+38 

-1.401298E-45
Numere zecimale
Double în virgulă flotantă 8 -1,797.693.134.86232E308 
(pentru aplicaţii
ştiinţifice) -4,940.656.458.41247E-324 şi

4,940.656.458.41247E-324 

1,797.693.134.86232E308
Date Date calendaristice 8 1 ian. 100  31dec. 9999
şi de timp

String Şir de caractere

Object Obiecte (cum ar fi 4


controale şi
formulare)

Variant Date de orice tip,


utilizat atunci când
tipul acestora este
incert

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 înţelege o putere a lui 10 cu care se înmulţeşte o altă valoare.

Literele E şi e (sau D şi d) sunt utilizate într-o notaţie specială, denumită


ştiinţifică. Notaţia ştiinţifică este o reprezentare prescurtată, utilizată pentru
numere foarte mari sau foarte mici. Se consideră că această notaţie este mai
inteligibilă decât repetarea unui număr mare de zerouri. Convertirea la valoarea
reală se poate face oricând, astfel:

o calculează 10 la puterea dată de numărul care urmează după D sau E;


o valoarea obţinută se înmulţeşte cu numărul care-l precede pe D sau E.
↓ Exemplu____________________________________________________________________________________

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

____________________________________________________________________________________Exemplu ↑

Bazele informaticii    78 


Secvenţe de cod VBA

 Expresiile (de calcul)


Relaţiile de calcul se transpun în expresii formate din:

 Operanzi care pot fi:


 Constantele.
 Variabilele.
 Funcţiile (Basic sau utilizator).
 Operatori.
Operatorii leagă operanzi de acelaşi tip. Operatorii folosiţi în programele
Basic sunt următorii :

 Operatorii aritmetici - leagă operanzi numerici.


Operator Descriere

+ adunare

- scădere

* înmulţire

/ împărţire

\ câtul unei împărţiri cu rest

Mod modulo (restul împărţirii)

^ ridicare la putere

 Operatorii relaţionali - 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 


Secvenţe de cod VBA

Operator Descriere

NOT Rezultatul este adevărat dacă operandul este


fals şi invers (Not X).
(nu)

AND Rezultatul este adevărat când cei doi operanzi


sunt adevăraţi (X And Y).
(şi)

OR Rezultatul este adevărat dacă unul din operanzi


este adevărat (X OR Y)
(sau)

XOR Rezultatul este adevărat dacă unul din operanzi


este adevărat. Dacă ambii operanzi sunt, sau
(sau exclusiv) adevăraţi, sau falşi, rezultatul este fals.

 Operatorul de concatenare a şirurilor: &

Ordinea de evaluare a expresiilor

Dacă o relaţie sau o expresie cuprinde simultan operatori aritmetici,


relaţionali şi logici ordinea de evaluare este :

Operator Prioritate

Operatorii aritmetici sau & 0 (maximă)

Operatorii relaţionali 1

Operatorii logici 2

Pentru expresiile aritmetice:

Operator Prioritate

Operatorul unar (semn +, -) 0

Ridicarea la putere 1

Înmulţirea şi împărţirea 2

Adunarea şi scăderea 3

Bazele informaticii    80 


Secvenţe de cod VBA

Parantezele pot modifica ordinea de efectuare a operaţiilor.

↓ Exemplu____________________________________________________________________________________

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

102 / 4 25.5

102 \ 4 25

102 Mod 4 2

____________________________________________________________________________________Exemplu ↑

 Constante şi variabile
Ca toate limbajele de programare, Basic permite utilizarea memoriei
calculatorului pentru stocarea datelor utilizate de programele ce se execută.
Conţinutul acestor zone de stocare este asociat unor identificatori, cuvinte
cărora li se asociază o valoare definită prin unul din tipurile de date menţionate.


 Identificatorii de variabile pot conţine litere, cifre şi caracterul de
subliniere (underscore), nu pot să înceapă cu cifre, nu pot conţine spaţii
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 cărui valoare asociată nu se modifică


pe parcursul unui program. Constantele se pot declara (explicit) cu instrucţiunea:

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

Bazele informaticii    81 


Secvenţe 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 funcţie de setările 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 aplicaţie sunt constante. O variabilă este un


identificator al unei porţiuni din memoria calculatorului, a cărui conţinut 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ă instrucţiunea Dim.


Aceasta este plasată la începutul programului, indicând că, undeva pe parcurs, vor fi
necesare variabilele declarate. Formatul instrucţiunii de declarare este:

Bazele informaticii    82 


Secvenţe de cod VBA

Dim <NumeVariabilă> As <tip>

 Instrucţiunea Dim se poate plasa oriunde într-o procedură, dar se


recomandă scrierea sa la începutul acesteia. Nu se pot defini două
variabile cu acelaşi nume în aceeaşi procedură.

↓ Exemplu____________________________________________________________________________________

Dim Raza As Single, LungimeCerc As Single


Dim Contor As Integer

____________________________________________________________________________________Exemplu ↑

 Instrucţiunea de atribuire

Prin instrucţiunea 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 


Secvenţe de cod VBA

 Declaraţiile constantelor şi a variabilelor pot fi explicite sau implicite,


iar Basic suportă ambele tipuri de declaraţii. Declararea implicită are loc
o dată cu prima instrucţiune de atribuire, VBA atribuind automat tipul
cel mai adecvat.

↓ Exemplu____________________________________________________________________________________

'prin instrucţiunea 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 instrucţiunea de atribuire:


Raza = 25& 'raza este considerată de tip Long 
_____________________________________________________________________________________Exemplu ↑

 Liste (arrays) de variabile


Termenul englezesc array are în terminologia românească doi
corespondenţi: 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 când sunt definite mai multe dimensiuni.

 O listă reuneşte mai multe variabile care au acelaşi 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 


Secvenţe de cod VBA

Liste dinamice

Prin instrucţiunea Dim se declară o listă cu număr finit de elemente. Există


instrucţiunea ReDim care permite crearea de liste dinamice. ReDim urmează unei
instrucţiuni 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 număr 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 ATENŢIE!
'se pierd valorile
'Salariu(0) şi Salariu(9)
'...
ReDim Preserve Salariu(30) 'cu clauza Preserve
'nu se pierd valori 
_____________________________________________________________________________________Exemplu ↑

Bazele informaticii    85 


Secvenţe de cod VBA

1. Să se editeze o secvenţă de instrucţiuni pentru afişarea următoarelor valori:


nume (student), prenume, vârsta, anul (de studii), taxă (plătitor de taxă),
utilizând tipurile de date adecvate.

 (Word)
_______________________________________________________________

Date personale Andrei Vârsta 21 Taxa True

_______________________________________________________________

Controale Proprietăţi
CommandButton (Name): Datele 
Caption: Date personale 
TextBox (Name): Personale 

Procedura eveniment (Click):


Private Sub Datele_Click()
nume = "Andrei"
varsta = 21
taxa = True
Personale = nume & " Vârsta " & varsta & " Taxa " & taxa
End Sub

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


unor salariaţi), pentru care se va calcula un salariu mediu:

 (Word)
_______________________________________________________________

Salariul mediu 1541.4

_______________________________________________________________

Bazele informaticii    86 


Secvenţe de cod VBA

Controale Proprietăţi
CommandButton (Name): Salarii 
Caption: Salariul mediu 
TextBox (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 investiţii (MyFv) se utilizează formula:

(1  Rate) Nper  1
MyFV  Pmt *
Rate

Unde:
Pmt – reprezintă plăţile,
Rate – este rata dobânzii,
Nper – numărul de perioade.
Să se scrie un program pentru calculul depunerilor băneşti cu dobândă.

 (Word)
_______________________________________________________________

Sold 2327,59698849949

_______________________________________________________________

Controale Proprietăţi
CommandButton (Name): Sold 
Caption: Sold 
TextBox (Name): Valoare 

Bazele informaticii    87 


Secvenţe de cod VBA

Procedura eveniment (Click):


Private Sub Sold_Click()
Plata = 100 'Suma depusă lunar
Dobanda = 0.06 'Dobânda este de 6%
Numar = 15 'Se fac 15 depuneri
Valoare = Plata * ((1 + Dobanda) ^ Numar - 1) / Dobanda
End Sub

Bazele informaticii    88 


Funcţii VBA predefinite

Unitatea de învăţare Nr. 10


Funcţii VBA predefinite
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 10 90
10.1. Funcţia Format 90
10.2. Funcţii matematice 91
10.3. Funcţii financiare 91
10.4. Funcţii pe şiruri de caractere 93
10.5. Funcţii pentru dată calendaristică şi timp 93
10.6. Funcţii pentru conversii 94
10.7. Funcţii pentru testarea tipului de date 94
Lucrare de verificare Unitate de învăţare Nr. 10 95

Bazele informaticii    89 


Funcţii VBA predefinite

Basic oferă utilizatorului mai multe funcţii pentru a realiza diferite


operaţiuni pentru care, altfel, ar trebui scrise secvenţe de cod. Funcţiile pot
apare ca operanzi în relaţiile de calcul şi pot avea 0, 1 sau mai multe
argumente (constante sau expresii de calcul) iar cu ajutorul lor se execută
calcule sau prelucrări şi se furnizează un rezultat.

 Funcţia Format
 
Se utilizează, în special, pentru a specifica modul de afişare 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
următor sau formatul de afişare 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 sfârşit.

<strFormat>  Exemple 
Format(8.6, "#.#")  8,6 
Format(8.6, "#.00")  8,60 
Formatarea valorilor numerice 
Format(8.76, "#.00")  8,76 
Format(8.76, "#.0")  8,8 
Format(0.1, "Percent")  10,00 % 
Format procentual 
Format(0.1, "# %")  10 % 
Separarea grupurilor de 3 cifre  Format(10000,"###,### lei")  10.000 lei 
Format monetar  Format(10, "Currency")  10,00 lei 
Afişare cu două zecimale Format(10.236, "Fixed") 10,24 
Format ştiinţific  Format(1233.07, "Scientific")  1,23E+03 
True/Yes, False/No dacă <expresie> este #0  Format(0, "True/False")  False 
sau 0  Format(12.1, "Yes/No")  Yes 
Format("SALUT", "<")  salut 
Formatarea string‐urilor 
Format("salut", ">"  SALUT 
Format(Date, "Long Date")  27 martie 2007 
Formatarea datelor 
Format(Date, "dddd, mmm d yyyy")  Marţi, mar 27 2007 
calendaristice 
  … Date este o funcţie VBA care furnizează data curentă 

Bazele informaticii    90 


Funcţii VBA predefinite

 Funcţii matematice

Funcţiile matematice şi trigonometrice au ca argumente şi ca rezultate


valori numerice.

Funcţia  Descriere  Exemple 


Int  Numărul întreg mai mic sau egal   Int(‐8.4)  ‐9 
Int(8.4)  8 
Fix  Partea întreagă  Fix(‐8.4)  ‐8 
Fix(8.4)  8 
Abs  Valoarea absolută  Abs(‐7.2)  7,2 
Sgn  Semnul unei expresii  Sgn(‐2/3)  ‐1 
Rnd  Numere aleatoare subunitare  Int((100 * Rnd) + 1)  83 ? 
numere între 1 şi 100 

Exp  e la puterea x  e = Exp(1)  2,7182… 


Log  Logaritmul natural (baza e)  Log(e)  1 
În baza 10 : log(x)/log(10)  Log(1000)/Log(10)  3 
Sqr  Radical indice 2  Sqr(9)  3 
Atn  Arctangentă  Pi = 4*Atn(1)  3,1415… 
Sin  Sinus  Sin(Pi/2)  1 
Cos  Cosinus  Cos(Pi)  ‐1 
Tan  Tangentă  Tan(Pi/4)  1 

 Funcţii financiare

Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de


exemplu determinarea plăţii pentru un împrumut, valoarea viitoare sau
valoarea netă actualizată a unei investiţii şi valorile obligaţiunilor sau
cupoanelor.
Argumentele comune pentru funcţiile financiare includ:
 Valoarea viitoare (fv) – valoarea investiţiei sau împrumutului după ce
s-au efectuat toate plăţile.
 Numărul de perioade (nper) – numărul total de plăţi sau perioade ale
unei investiţii.
 Valoarea actualizată (pv) – valoarea unei investiţii sau a unui
împrumut la începutul perioadei de investiţie. De exemplu, valoarea
actualizată a unui împrumut este capitalul de bază care este
împrumutat.
 Rata (rate) – rata dobânzii sau rata de actualizare pentru un
împrumut sau o investiţie.
 Tip (type) – intervalul la care sunt efectuate plăţile în timpul perioadei
de plată, ca de exemplu la începutul unei luni sau la sfârşitul acesteia (
0 sau 1, implicit 0).

Bazele informaticii    91 


Funcţii VBA predefinite

 Unele funcţii financiare se folosesc pentru anuităţi. O anuitate


constă dintr-o serie de plăţi constante efectuate pe o perioadă continuă
(de exemplu un împrumut pentru un autoturism, sau un împrumut
ipotecar).
În funcţiile de anuităţi, sumele plătite, 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 legătură cu unităţile utilizate pentru
specificarea argumentelor rate şi nper (de exemplu, pentru plăţi lunare la
un împrumut pe un număr de ani, rata dobânzii va fi împărţită
întotdeauna cu 12, iar nper va fi înmulţit cu 12 şi cu numărul de ani).

Cele mai importante funcţii financiare sunt incluse în tabelul următor:

Funcţia  Descriere 
FV(rate, nper, pmt, pv, type)  Calculează valoarea viitoare a unei investiţii bazate 
pe plăţi periodice şi constante şi o rată a dobânzii 
constantă. 
PV(rate, nper, pmt, fv, type)  Întoarce valoarea actualizată a unei investiţii. 
Valoarea actualizată este suma totală pe care o 
reprezintă în prezent o serie de plăţi viitoare. De 
exemplu, pentru împrumut, suma împrumutată 
este valoarea actualizată pentru creditor. 
NPer(rate, pmt, pv, fv, type)  Furnizează numărul de perioade pentru o investiţie 
bazată pe plăţi periodice constante şi o rată 
constantă a dobânzii. 
Pmt(rate, nper, pv, fv, type)  Calculează plata pentru un împrumut bazat pe plăţi 
constante şi o rată constantă a dobânzii. 
Ipmt(rate, per, nper, pv, fv, type)  Determină plata dobânzii pe o perioadă dată, 
pentru o investiţie bazată pe plăţi periodice 
constante şi o rată constantă a dobânzii. 
Argumentele marcate bold sunt obligatorii, celelalte sunt opţionale. 

Bazele informaticii    92 


Funcţii VBA predefinite

 Funcţii pe şiruri de caractere

Aceste funcţii realizează prelucrări simbolice asupra unor şiruri de


caractere.

Funcţia  Descriere  Exemple 


Asc  Codul unui caracter  Asc("B")  66 
Len  Numărul de caractere din şir  Len("Visual Basic")  12 
Ucase  Litere mari  UCase("abc")  "ABC" 
Lcase  Litere mici  LCase("ABC") "abc" 
LTrim  Elimina spaţiile din stânga  LTrim("   def")  "def" 
RTrim  Elimina spaţiile din dreapta  RTrim("def   ")  "def" 
Trim  Elimina spaţiile de la capete  Trim("  def   ")  "def" 
Mid  Extrage un subşir  Mid("abcdef", 3, 2)  "cd" 
Space  Generează spaţii  "a" + Space(5) + "b"  "a     b" 
Replace  Înlocuieşte un şir cu alt şir  Replace("As","s","ce")  "Ace" 
Left  Extrage un subşir stânga  Left("abcef", 3)  "abc" 
Right  Extrage un subşir dreapta  Right("abcef", 3)  "cef" 

 Funcţii pentru dată calendaristică şi timp

Aceste funcţii sunt utilizate frecvent în aplicaţii: de la afişarea datei şi/sau


orei curente, la transformarea din ani în zile sau din ore în minute.

Funcţia  Descriere  Exemple 


Now  Data si ora curentă  Now  17.03.2007 17:01:08 
Date  Data curentă  Date 17.03.2007
Time  Ora curentă  Time  17:01:08 
Day  Ziua  Day(Date)  17 
Month  Luna  Month(Date)  3 
Year  Anul  Year(Date)  2007 
DateSerial  Data specificată   DateSerial(2007,2,17)  17.02.2007 
TimeSerial  Ora specificată  TimeSerial(18, 5, 27)  18:05:27 
***
DateAdd   Adună la o dată  x=DateAdd("d", 10, Date)  04.07.2007 
***
DateDiff   Diferenţa dintre date  DateDiff("d", Date, x)  10 
DatePart***  Un interval de timp  DatePart("m", Date)  3 
***
Primul argument reprezintă intervalul de timp (d – ziua, m – luna, q – trimestrul,  y – ziua din an, w – 
ziua din săptămână, ww ‐ săptămâna, yyyy – anul) 

Bazele informaticii    93 


Funcţii VBA predefinite

 Funcţii pentru conversii


 
Se utilizează pentru a converti argumentul într-o dată de tipul specificat de
funcţia utilizată.
Funcţia  Exemple 
Chr  Chr(65)  "A" 
Str  Str(‐14.34)  "‐14.34" 
Val  Val(" 1615 198Constanta")  1615198 
CBool  CBool(4 > 5)  False 
CByte  CByte(12 * 13)  156 
CInt  CInt(1725.6 ‐ 1700)  26 
CSng  CSng(17 / 18)  0,9444444 
CDbl  CDbl(1 / 2.0E+99)  5E‐100 
CDate  CDate(#3/17/2007#)  17.03.2007 

 Funcţii pentru testarea tipului de date

Funcţiile pentru testarea tipului de date sunt denumite şi funcţii pentru


inspectarea datelor, stabilind dacă o expresie, sau o variabilă, este sau nu este
de un anume tip.

Funcţia  Descriere  Exemple 


IsDate  Argumentul este o  IsDate(#3/17/2007#) True 
IsNumeric  expresie  IsNumeric(12.3)  True 
VarType  Argumentul este o     
variabilă 
  0 ‐ Empty 
1 ‐ Null 
2 ‐ Integer 
3 ‐ Long 
4 ‐ Single  VarType("Basic")  8 
5 ‐ Double 
6 ‐ Currency 
7 ‐ Date 
8 ‐ String 

Bazele informaticii    94 


Funcţii VBA predefinite

1. Să se calculeze valoarea funcţiei f(x) pentru diferite valori ale argumentului


x≥0 :
 
f ( x)  x 2  x  1  e x

 (Word)
_______________________________________________________________

x= 7 Valoarea lui f: 1104.18299286373

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): x 
TextBox (Name): f 
Enabled: 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. Scrieţi o secvenţă program prin care să determinaţi a câta zi de naştere
sărbătoriţi astăzi.

(Word)
_______________________________________________________________

Data naşterii = 3/20/1990 Au trecut: 7214 zile

_______________________________________________________________

Bazele informaticii    95 


Funcţii VBA predefinite

Controale Proprietăţi
TextBox (Name): DataNasterii 
TextBox (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 (funcţiile de
calcul FV, PV, Nper, Pmt).

(Word)
_______________________________________________________________

10
%

13

-100 1.367,03 lei


Valoarea calculată:
FV PV NPer Pmt

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): v1 
TextBox (Name): v2 
TextBox (Name): v3 
TextBox (Name): fc 
Enabled : False 
OptionButton Caption : FV 
OptionButton Caption : PV 
OptionButton Caption : NPer 
OptionButton Caption : 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 


Funcţii 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 unităţi lei, cu dobândă anuală


10%, valoarea soldului atins:

PV Valoarea depunerii bancare pentru returnarea lunară a 150 lei


(dobânda anuală 9,5%, 12 ani):

Bazele informaticii    97 


Funcţii VBA predefinite

NPer Numărul de luni necesare atingerii unui sold de 2000 lei (depunere
lunară 100, dobânda anuală 9,5%):

Pmt Pentru un împrumut bancar de 13000 unităţi bancare, pe 12 ani,


dobânda anuală 9,5%, plăţile lunare sunt:

4. Returnarea unui împrumut bancar se poate realiza în plăţi constante (care


se determină cu funcţia Pmt) sau în plăţi variabile (valoarea împrumutului/
numărul de perioade + dobânda calculată prin Ipmt). Suma plăţilor
constante este egală cu suma plăţilor variabile. Să se verifice această
situaţie pentru un împrumut de 4000 lei returnabil în 4 luni cu o dobândă
lunară de 2%.

(Word)
_______________________________________________________________

-4201.9800427406 -4201.9800427406 Verificare


/

_______________________________________________________________

Bazele informaticii    98 


Funcţii VBA predefinite

Controale Proprietăţi
TextBox (Name): PlataCt 
TextBox (Name): PlataVar 
CommandButton (Name): Verificare 
Caption : 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 învăţare Nr. 11


Structuri de control VBA
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 11 101
11.1. Structurile de control 102
11.1.1. Instrucţiunea de selecţie simplă 102
11.1.2. Instrucţiunea de selecţie multiplă 103
11.1.3. Structurile repetitive 107
11.1.3.1. Ciclul Do While (cu test iniţial) 107
11.1.3.2. Ciclul Do Until (cu test iniţial) 108
11.1.3.3. Ciclurile Do While şi Do Until cu test final 110
11.1.3.4. Ciclul For … Next, cu număr finit de paşi 110
Lucrare de verificare Unitate de învăţare Nr. 11 111

Bazele informaticii    100 


Structuri de control VBA

Procesul de rezolvare a problemelor cu ajutorul calculatorului constă în


două activităţi: 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ă găsirea unei metode de rezolvare a problemei, claritatea şi calitatea
acestuia impunând fiabilitatea şi calitatea programului. În contextul dezvoltării
programelor, etapele de rezolvare ale problemelor corespund cu cele definite de
matematicianul G. Polya, în 1945:

 Înţelegerea problemei este etapa cea mai importantă şi constă în:


• definirea datelor de intrare (tip, proprietăţi, domeniul valorilor),
• definirea rezultatelor (ieşirile),
• stabilirea relaţiilor 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
potenţial instrument pentru rezolvarea altor probleme.

În practica reprezentării 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 stabileşte o mulţime 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 semnificaţia lor).

Ansamblul de instrucţiuni ale limbajului de programare, alese pentru


reprezentarea algoritmilor, trebuie să fie adaptat la specificul de calcul
electronic. De obicei aceste instrucţiuni sunt definite la un nivel mai înalt decât
cel oferit de limbajul în cod maşină, astfel încât abordarea construcţiei şi
analizei algoritmilor se face prin prisma unor concepte moderne, cum ar fi
principiile programării structurate.

Programarea structurată (introdusă în 1972 de E.W. Dijkstra,


fundamentarea matematică fiind făcută de Böhm şi Jacopini într-un articol
publicat în 1966) este o metodă de codificare a algoritmilor de calcul, prin
definirea unui set de instrucţiuni grupate în trei structuri fundamentale:
secvenţa, selecţia şi ciclul.

Bazele informaticii    101 


Structuri de control VBA

 Secvenţa, tradusă în instrucţiuni simple (instrucţiunea de atribuire, instrucţiunea de 
apel subprogram, instrucţiuni de intrare/ieşire, subprograme). 
 
Instrucţiune 1 Instrucţiune 2 Instrucţiune n
 

 Selecţia, (structura alternativă) ‐ If … Then … End If. 
 
Instrucţiune 1
True
 
Condiţie 
  False
Instrucţiune 2
 

 Ciclul (iteraţia) cu test iniţial sau cu test final (“atâta timp cât”,  ”până când”) ‐  Do 
While, Do Until. 
Instrucţiuni
 
Condiţie
 

 
Instrucţiuni Condiţie

 Structurile de control

 Structurile selective

 Instrucţiunea de selecţie simplă

If <condiţie> Then
<instrucţiuni 1>
[Else
<instrucţiuni 2>]
End If

Instrucţiunea de selecţie simplă condiţionează execuţia unor seturi de


instrucţiuni prin evaluarea expresiei logice reprezentată în <condiţie>. Dacă

Bazele informaticii    102 


Structuri de control VBA

expresia logică <condiţie> este True se va executa grupul <instrucţiuni 1>.


În cazul valorii False a condiţiei apar două cazuri:
 dacă există clauza Else se va executa grupul <instrucţiuni 2>.
 în absenţa clauzei Else nu se execută nici o instrucţiune, comanda
terminându-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 Proprietăţi
TextBox (Name): An 
TextBox (Name): R 
Enabled: False 
Următoarea secvenţă verifică dacă un an este bisect sau nu: 
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 ↑

 Instrucţiunea de selecţie multiplă

Pentru a codifica mai multe alternative, este posibilă înlănţuirea mai multor
instrucţiuni If, dar cu cât numărul acestora este mai mare, cu atât urmărirea lor
devine mai dificilă. Alternativă pentru astfel de situaţii este instrucţiunea Select
Case.

Bazele informaticii    103 


Structuri de control VBA

Select Case <expresie>


Case <listă de valori 1> | Is <condiţie 1>
<instrucţiuni 1>
Case < listă de valori 2>| Is <condiţie 2>
<instrucţiuni 2>
….
Case < listă de valori n>| Is <condiţie
n><instrucţiuni n>
[Case Else
<instrucţiuni>]
End Select

 Selecţie după listă de valori. În funcţie de valoarea efectivă a expresiei,


care poate fi numerică sau caractere, se va executa un singur bloc de
instrucţiuni. Dacă expresia are o valoare ce nu se regăseşte între
valorile prevăzute, se va executa - dacă s-a specificat - blocul de
instrucţiuni 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) _________________________________________________________________________


___________________________________________________________

Nuanta de verde
Selecţie: 3 Culoare:

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): Selectie 
TextBox (Name): Cul 
Enabled: 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)________________________________________________________________________

Notând cu a, b, c trei valori pozitive să se stabilească dacă segmentele de


dreaptă corespunzătoare 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
a= 2 b= c=
Nu formeaza un triunghi
răspuns:

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): S1 
TextBox (Name): S2 
TextBox (Name): S3 
TextBox (Name): Raspuns 
Enabled: 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 ↑

 Selecţie după condiţie. Pentru a extinde posibilităţile de utilizare a


structurii alternative, se foloseşte un format care permite compararea
expresiei cu o valoare, folosind alt operator decât cel de egalitate
(clauza Is).

↓ Exemplu (Word) ____________________________________________________________________


Pentru citirea a două note de la tastatură şi afişarea unor calificative se poate
utiliza următoarea interfaţă:

_______________________________________________________________

8 9 8.5 Foarte bine


Nota1: Nota2: Media: Calificativ:

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): Nota1 
TextBox (Name): Nota2 
TextBox (Name): Media 
Enabled: False 
TextBox (Name): Calificativ 
Enabled: False 

Bazele informaticii    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 iniţial („execută cât timp…”)

Do While <condiţie>
<instrucţiuni>
[Exit Do]
<instrucţiuni>
Loop

Într-un ciclu Do While grupul de instrucţiuni care constituie corpul ciclului


este executat atât timp cât este îndeplinită condiţia. Clauza Exit Do impune
abandonarea execuţiei instrucţiunii (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 iniţial („execută până când…”)

Do Until <condiţie>
<instrucţiuni>
[Exit Do]
<instrucţiuni>
Loop

Într-un ciclu Do Until grupul de instrucţiuni care constituie corpul


ciclului este executat pâna când este îndeplinită condiţia. Clauza Exit Do
impune abandonarea execuţiei instrucţiunii (salt după Loop). Ciclul se poate
executa de zero, unu sau mai multe ori.

↓ Exemplu 1 (Word) ______________________________________________________________________

Pentru scrierea unui număr natural zecimal în baza de numeraţie 2, se


poate folosi metoda împărţirilor succesive la 2, până la obţinerea primului cât
egal cu zero. Exemplu:
6:2=3:2=1:2=0
6 2 0 _
0 1 1

Rezultă că 6(10)= 110(2)


 
__________________________________________________________

23 10111
Număr în baza 10: Număr în baza 2:

_____________________________________________________________

Controale Proprietăţi
TextBox (Name): B10 
TextBox (Name): B2 
Enabled: 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
câtul = NumarZecimal
indice = 0
Do While câtul > 0
SirulResturilor(indice) = câtul Mod 2
câtul = câtul \ 2
indice = indice + 1
Loop
Do Until indice = 0
indice = indice - 1
NumarBinar = NumarBinar & SirulResturilor(indice)
Loop

B2 =NumarBinar

End Sub 
 indice reprezintă poziţia în şirul resturilor (rezultate prin împărţiri
succesive la 2);
 SirulResturilor conţine 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 iniţial, suma numerelor naturale pare,
strict mai mici decât un număr natural n dat.

_______________________________________________________________

5 6
Numărul natural: Suma:

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): Numar 
TextBox (Name): Sum 
Enabled: False 

Bazele informaticii    109 


Structuri de control VBA

Procedura eveniment (în două variante):


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

 Ciclurile Do While şi Do Until cu test final

Există variante ale instrucţiunilor Do While şi Do Until care permit


execuţia condiţionată a secvenţei de instrucţiuni, cel puţin o dată:

Do
<instrucţiuni>
[Exit Do]
[<instrucţiuni>]
Loop While | Until <condiţie> 

 Ciclul For … Next, cu număr finit de paşi

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


<instrucţiuni>
[Exit For]
<instrucţiuni>
Next [<valoare>] 

În ciclul For … Next grupul de instrucţiuni, 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 primeşte o valoare iniţială (<valoare 1>). După
fiecare ciclu, contorul este incrementat şi comparat cu valoarea finală (<valoare
2>). Dacă nu s-a ajuns la valoarea finală, execuţia ciclului de instrucţiuni se reia,
în caz contrar trecându-se la linia de după Next. Exit For are acelaşi rol ca
Exit Do de la comenzile Do … Loop.

Exemplu (Word) _____________________________________________________________________


______________________________________________________________

100 5050
Suma primelor numere naturale este:

______________________________________________________________

Controale Proprietăţi
TextBox (Name): n 
TextBox (Name): Suma 
Enabled: 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 secvenţele de instrucţiuni Basic din

exemplele marcate cu simbolul .

Bazele informaticii    111 


Module VBA

Unitatea de învăţare Nr. 12


Module VBA
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 12 113
12.1. Variabile locale (private) 113
12.2. Variabile publice (globale) 113
12.3. Variabile private 114
12.4. Transmiterea argumentelor prin valoare şi prin referinţă 117
12.5. Funcţii recursive 118
Lucrare de verificare Unitate de învăţare Nr. 12 119

Bazele informaticii    112 


Module VBA

Programarea modulară este un procedeu prin care mai multe instrucţiuni


sunt grupate în proceduri (Sub şi Function) destinate realizării în mod
repetat a unor acţiuni. Acestea pot fi definite în cadrul limbajului (proceduri
standard) sau de către programator (proceduri utilizator). Programarea
structurată combinată cu programarea modulară contribuie la creşterea
eficienţei şi productivităţii în proiectarea de aplicaţii. Procedurile de dimensiuni
mici, scrise pentru realizarea diverselor sarcini, în locul programelor vaste,
monolitice, concretizează programarea structurată. Prin divizarea aplicaţiei în
mai multe proceduri se reduce efortul, o dată cu numărul de erori în scrierea
programelor. De asemenea, este simplificată întreţinerea aplicaţiei.

În general, programatorii preferă să pună procedurile de utilitate


generală în module. Se includ aici procedurile necesare în mai multe aplicaţii.
Pentru a adăuga un modul extern se acţionează butonul (Module), din linia
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 păstrează valorile pe tot timpul execuţiei 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
declaraţia Public.
'...
Public rataDobanzii As Single
'...

Bazele informaticii    113 


Module VBA

 Variabile private limitate la un modul sau procedură – prin


declaraţia Private.
'...
Private rataDobanzii As Single
'...


 Variabilele publice şi locale sunt declarate la început de modul.
 Orice program poate conţine 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 căutată mai întâi în cadrul secţiunii
curente, apoi în modulele externe.
 Execuţia unei proceduri depinde de parametrii externi transmişi
acestuia şi se va opri la sfârşit (End Sub, End Function) sau la
întâlnirea instrucţiunii de ieşire 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 interschimbării.
Explicarea metodei interschimbării:
 Se consideră un şir de numere a1, a2, a3 … an-1, an.
 Se compară, pe rând câte două elemente ale şirului. Dacă valorile lor
corespund criteriului de ordonare (crescător sau descrescător) atunci ele
rămân pe aceeaşi poziţie, dacă nu, se interschimbă:
a1  a2  a3  … an-1  an
 Comparările se reiau până când 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 afişarea şirului ordonat, se poate utiliza următoarea
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 funcţie 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 funcţiei şi transmiterea parametrului Valoare se poate realiza în
acelaşi 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 defineşte următoarea funcţie:
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 funcţiei ş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 primeşte, le poate modifica şi transmite înapoi:
 Dacă se transmit prin valoare (cuvânt cheie ByVal care de obicei se
omite) - modalitatea implicită, procedura apelată poate modifica
valorile, dar aceste modificări nu se vor transmite procedurii apelante.
Transmiterea prin valoare protejează variabilele transmise, valorile lor
neputând fi modificate în procedura apelantă (procedura apelată
primeşte copii ale variabilelor din procedura apelantă). Se recomandă
transmiterea datelor prin valoare, atunci când modificarea lor nu e
necesară sau e riscantă.
 Dacă se transmit prin referinţă (cuvânt cheie ByRef), procedura
apelată poate modifica valorile variabilelor transmise, modificări care
sunt apoi transmise procedurii apelante. Transmiterea prin referinţă
(sau adresă) permite procedurii să actualizeze variabilele, modificările
fiind percepute de variabile şi în procedura apelantă. După ce acesta
redobândeşte controlul, variabilele transmise şi modificate vor rămâne
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 ↑

Funcţii recursive

O funcţie este recursivă dacă se apelează pe ea însăşi.


↓ Exemplu____________________________________________________________________________________
Pentru calculul funcţiei factorial, fact, este definită următoarea secvenţă
de instrucţiuni:
Function fact(n As Integer) As Integer
If n = 0 Then
fact = 1
Else
fact = n * fact(n - 1)
End If
End Function
Apelul funcţiei ş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. Editaţi propria funcţie de calcul a depunerilor cu dobândă cu relaţia:

(1  Rate) Nper  1
MyFV  Pmt *
Rate
Unde:
Pmt – reprezintă plăţile,
Rate – este rata dobânzii,
Nper – numărul de perioade.
Comparaţi rezultatul aplicării ei cu valorile obţinute prin funcţia Basic FV.
_______________________________________________________________

Rata dobânzii: 0,1 Numărul de perioade: 2 Plata: 100

210 -210 Calcul

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): Rate 
TextBox (Name): Nper 
TextBox (Name): Pmt 
TextBox (Name): F1 
TextBox (Name): F2 
CommandButton (Name): Calcul 
Caption : 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

k
2. Să se calculeze combinările de n luate câte k ( Cn ) utilizând relaţia de
recurenţă:

Cnk  Cnk1  Cnk11 , cazuri particulare : Cn0  Cnn  1 şi Cn1  n

_______________________________________________________________

5 3 10 Calculează
Combinări de: luate câte: =

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): v1 
TextBox (Name): v2 
TextBox (Name): Combinari 
CommandButton (Name): Calculeaza 
Caption : 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 funcţie


recursivă. Relaţia de calcul este:

1, n  0

Fib ( n )  1, n  1

 Fib ( n  1)  Fib ( n  2), n  1

_______________________________________________________________

5 8
al -lea termen este

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): Numa 
TextBox (Name): 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


relaţiei 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 şi 18 este 9

_______________________________________________________________

Controale Proprietăţi
TextBox (Name): a 
TextBox (Name): b 
TextBox (Name): 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 învăţare Nr. 13 şi 14


Formulare VBA
Cuprins Pagina
Obiectivele Unităţii de învăţare Nr. 13 şi 14 122
13.1. Formulare (form-uri) 124
13.2. Proprietăţi şi proceduri eveniment 125
13.3. Proprietatea Caption 126
13.4. Proprietatea StartUpPosition 128
13.5. Proprietatea Height şi Width 128
13.6. Proprietăţile ForeColor şi BackColor 129
13.7. Utilizarea controalelor 130
13.7.1. CommandButton 131
13.7.2. Label 131
13.7.3. TextBox 134
13.7.4. CheckBox 137
13.7.5. Frame 139
13.7.6. OptionButton 140
13.7.7. ListBox 142
13.7.8. ComboBox 145
13.7.9. Image 148
13.7.10. SpinButton 149
13.8. Modificarea proprietăţilor din cod 150
Lucrare de verificare Unitate de învăţare Nr. 13 şi 14 155

Bazele informaticii    123 


Formulare VBA

În mediul Windows, o aplicaţie oferă o multitudine de alternative grupate


în ferestre de dialog dintre cele mai diferite. Activităţile şi ordinea în care se
desfăşoară ele sunt stabilite de utilizator - programul se află într-o stare de
aşteptare, iar utilizatorul poate alege una din opţiunile oferite. Programul
trebuie conceput astfel încât să răspundă la toate acţiunile utilizatorului. Orice
acţiune - apăsarea unei taste, clic cu mouse-ul şi mişcarea lui, etc. - reprezintă
un eveniment. Aplicaţiile care rulează sub sistemul de operare Windows sunt
dirijate de evenimente iar rezolvarea sarcinilor de execuţie ale acestora impune
conceptul de „programarea dirijată de evenimente”.

Interfaţa cu utilizatorul, a unui program, permite utilizatorului să


interacţioneze cu programul şi conţine orice control (cum ar fi butoane, casete
de text) pe care utilizatorul îl manipulează pentru a furniza comenzi sau
informaţii programului.

Formulare (form-uri)

Limbajul Basic facilitează crearea interfeţelor cu utilizatorul prin


intermediul unui set de controale, din caseta cu instrumente (Toolbox).

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


formulare (UserForm) se poziţionează controale OLE (obiecte de interfaţă) care
permit introducerea sau extragerea datelor utilizatorului în mod interactiv.
Controalelor din formular le sunt asociate proprietăţi şi metode (proceduri
eveniment). Procedurile eveniment sunt secvenţe de instrucţiuni care pot fi
modificate, ca de altfel şi proprietăţile controalelor incluse în formular.
Modificările efectuate se reflectă în aspectul formularului şi în comportamentul
acestuia în diferite situaţii..

În varianta Visual Basic şi a produselor similare, proiectul (programul)


este un ansamblu de proceduri eveniment, cele mai multe având dimensiuni
reduse şi fiecare tratând un eveniment individual. O astfel de procedură este
ataşată unui control şi se execută numai când controlul respectiv interceptează
evenimentul pentru care a fost scrisă. Altfel spus, un program va răspunde
unui eveniment care se produce la execuţie 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 însuşi) suportă mai

Bazele informaticii    124 


Formulare VBA

multe evenimente. De exemplu, un buton poate răspunde la evenimentul clic


dacă pentru acest eveniment este scrisă o procedură. Atunci când aplicaţia se
va lansa în execuţie, iar utilizatorul va efectua clic pe buton (se produce în
acest fel evenimentul), va fi lansată automat în derulare procedura definită.

Proprietăţi şi proceduri eveniment

Un formular poate conţine mai multe controale, el însuşi fiind considerat


un control. Fereastra Properties permite alegerea controlului şi a proprietăţii a
cărei 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
stabileşte valori implicite proprietăţii (Name) cum ar fi:
 UserForm1, UserForm2… pentru formulare (prin convenţie,
numele formularelor utilizator vor fi prefixate de cuvântul frm, de
exemplu: frmPrincipal, frmCalcul);
 Label1, Label2… pentru etichete (prefix convenţional: lbl);
 CommandButton1, CommandButton2… pentru butoane (prefix: btn);
 TextBox1, TextBox2… pentru casete de text (prefix: txt).
Aceste nume ale controalelor pot fi folosite aşa cum au fost definite de
VBA însă utilizatorul are posibilitatea stabilirii unor denumiri proprii.

Proprietăţile formularului sunt afişate, alfabetic (Alphabetic) sau pe


categorii (tab-ul Categorized):
 Aparenţă (Appearence) : culorile utilizate, efectele vizuale de umplere
etc.
 Comportare (Behaviour) : modul de continuare a acţiunilor la părăsirea
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.
 Poziţie (Position) : poziţie şi dimensiuni.

Procedurile eveniment sunt secvenţe de instrucţiuni asociate diferitelor


controale la activarea/dezactivarea acestora. Afişarea ferestrei de cod este
realizată prin executarea unui dublu clic pe controlul pentru care se doreşte
scrierea instrucţiunilor 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 instrucţiunile Basic, referirea la proprietatea unui control se face prin


construcţia control.proprietate – numele proprietăţii 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 construcţie
asemănătoare, adică formular.control.proprietate. Există construcţii 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)ataşată formularului
____________________________________________________________________________________Exemplu ↑

Proprietatea Caption

În general, proprietatea Caption a unui control stabilește textul pe care


respectivul control îl afişează. Proprietatea Caption a unui formular definește
titlul form-ului.

Dacă nu este afişată fereastra de controale (Toolbox), având formularul


deschis în mediul de proiectare, din meniul View (afişare) se selectează
opţiunea Toolbox sau se apasă butonul din linia de butoane standard.
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 afişată fereastra de proprietăţi a unui formular, din meniul


View (afişare) se selectează opţiunea Properties Window (fereastra de
proprietăţi) sau butonul dintre butoanele standard. Pentru un formular care
conţine 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 proprietăţile.

Pentru a configura proprietatea Caption, a unui formular, în fereastra


de proprietăţi:

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


fereastra Properties.
 Din lista de proprietăţi 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 foloseşte cuvântul 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ă poziţia unui formular atunci


când este executat prima oară. De obicei, atunci când un formular rulează,
utilizatorul îl poate muta.

Pentru a amplasa un formular în mijlocul


ecranului folosind fereastra de proprietăţi:

 Având formularul deschis, în fereastra


Properties se selectează opţiunea
StartUpPosition.
 În coloana din dreapta, se selectează 2-
CenterScreen.
 Se rulează proiectul. Fereastra bazată pe form
va apărea în centrul ecranului.

Proprietăţile Height şi Width

Prin aceste proprietăţi se fixează înălţimea şi lăţimea (în pixeli) a ferestrei


formularului (unitatea de măsură standard pentru monitoarele de calculator).

Se poate configura dimensiunea formularului în trei moduri:


 Trăgând cu mouse-ul de latura de jos şi/sau din dreapta a
formularului, în mediul de proiectare, până ce formularul atinge
dimensiunile dorite. Schimbările făcute în acest fel sunt reflectate, în
fereastra Properties, de Width (lăţime) şi Height (înălţime).
 Setând în fereastra de proprietăţi dimensiunile Width şi Height.
 Configurând î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 foloseşte cuvântul 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.

Proprietăţile ForeColor şi BackColor

Proprietatea ForeColor stabileşte culoarea elementelor grafice şi, mai


important, a textului. Proprietatea BackColor stabileşte culoarea de fundal.
Ele se configurează în acelaşi mod.

Atunci când se configurează proprietăţile ForeColor şi BackColor ale


unui formular, se configurează, de asemenea, şi valorile implicite ale acestora
pentru orice control aşezat î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 proprietăţi:
 Se deschide un formular în mediul de
proiectare.
 În fereastra Properties se alege
ForeColor.
 În coloana din dreapta, clic pe săgeata î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 acţionează butonul corespunzător
din Toolbox şi se stabileşte porţiunea dreptunghiulară (zona) din formular unde
va fi afişat controlul. Practic, controlul va fi desenat (se poziţionează cursorul
mouse-ului în colţul stânga-sus al zonei de afişare, se ţine apăsat butonul stâng
şi se trage cursorul spre colţul dreapta-jos). O dată plasat pe formular,
proprietăţile (starea) unui control pot fi vizualizate şi modificate în fereastra
„Properties", iar comportamentul său poate fi modelat prin scrierea procedurilor
eveniment. Toate controalele sunt obiecte şi, ca urmare, răspund la evenimentele
declanşate de entităţile exterioare (utilizator, alte controale) prin intermediul
procedurilor eveniment.

 Multe proprietăţi 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 (opţiune)

  Casetă cu listă

  Listă derulantă

  Casetă de imagine

    Generator de valori

Bazele informaticii    130 


Formulare VBA

    

Controlul CommandButton este tipic pentru startul evenimentelor, pentru


căutarea şi închiderea formularelor, etc. Codul program de executat este plasat
în metoda Click. Textul afişat pe buton este conţinut î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. Prin convenţie
aceste denumiri ar putea fi prefixate prin literele btn (btnCalculeaza,
btnStart, …).

Controlul Label este utilizat pentru afişarea unor texte care nu pot fi
editate de utilizator. Este util pentru descrierea altor controale din formular
cum ar fi TextBox, ListBox, etc.

Proprietăţile cele mai importante ale controlului Label:

Proprietate

Name

Nume VBA: Label1, Label2, … Convenţie prefix: lbl.

AutoSize

Proprietate de tip boolean care defineşte modalitatea de dimensionare a etichetei


(automat - True, manual - False). Implicit este False (dimensiune fixă). Dacă se
fixează la valoarea True înălţimea etichetei se autoreglează în funcţie 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 conţinutul efectiv al

Bazele informaticii    131 


Formulare VBA

etichetei. Poate fi stabilit atât la proiectare, cât şi în momentul execuţiei.

ControlTipText

Afişează un indicator textual, atunci când se plasează cursorul mouse-ului în zona


etichetei.

Font

Fontul (stilul caracterelor) cu care este afişat textul de pe etichetă. Este o


proprietate care fixează atribute pentru tip, mărime, stil de afişare.

ForeColor

Culoarea cu care este scris textul în cadrul etichetei. Are aceeaşi plajă de valori
ca şi BackColor.

Heigth

Înălţimea etichetei, în pixeli.

Picture

Imaginea care apare pe fundalul etichetei. Această proprietate reprezintă de


fapt o referinţă către un fişier de tip imagine (bmp, jpg, gif, ico, etc).

PicturePosition

Alinierea imaginii în cadrul etichetei.

TextAlign

Modalitatea de aliniere a textului în cadrul suprafeţei etichetei. Valori:


FmTextAlignLeft, FmTextAlignCenter, FmTextAlignRight. Implicit alinierea
textului este la stânga.

Visible

Permite ascunderea etichetei sau (re)afişarea ei pe ecran, în funcţie de valorile


care îi sunt atribuite: False, True.

Width

Lăţimea etichetei, în pixeli.

Bazele informaticii    132 


Formulare VBA

↓ Exemplu____________________________________________________________________________________

 Pe un formular se introduce o etichetă cu


numele lblPoza, proprietatea Visible
având valoarea False. O imagine de fundal
este fixată prin proprietatea Picture:

 În procedura eveniment a butonului se scriu următoarele 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 apăsării butonului, la rularea


formularului:

____________________________________________________________________________________Exemplu ↑

Bazele informaticii    133 


Formulare VBA

Acest control este unul dintre cele mai folosite în programarea interfeţelor
grafice datorită avantajelor pe care le oferă la introducerea datelor şi la
manipularea lor. Defineşte un câmp de editare în care utilizatorul poate
introduce un text. Controlul TextBox afişează mai multe linii atunci când
proprietatea Multiline este setată pe True. Aspectul textului afişat este
determinat de proprietăţile Font şi ForeColor. La fel ca şi la alte controale,
proprietăţile pot fi modificate prin cod program, în timpul rulării aplicaţiei.

Caseta de text este foarte flexibilă în VBA, permiţând 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 conţinutul său) sau în modul inactiv (utilizatorul poate doar să
vizualizeze conţinutul, textul fiind protejat în cazul în care se încearcă
modificarea sa).

Principalele proprietăţi, ale unei casete de text, sunt rezumate în tabelul


următor:

Proprietate

Name

Nume VBA: TextBox1, TextBox2, … Convenţie prefix: txt.

BackColor

Culoarea de fundal a casetei de text. În momentul proiectării (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 conţinutul


casetei (True - implicit) sau protejează textul împotriva modificărilor (False).

Bazele informaticii    134 


Formulare VBA

ForeColor

Culoarea textului care este afişat în interiorul casetei. Maniera de selectare


este asemănătoare cu cea asociată proprietăţii BackColor.

MaxLength

Numărul maxim de caractere care pot fi introduse în caseta de text. Poate fi


modificată la o valoare de tip Integer pozitivă.

MousePointer

Stabileşte felul cursorului mouse-ului atunci când 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 rânduri. Este o
proprietate de tip boolean (implict False).

PasswordChar

Defineşte care este caracterul (de exemplu *) ce se va afişa în mod repetat,


astfel încât 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 acelaşi 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ă următoarele operaţiuni:


 introducerea numelui (mărcii) unui autoturism;
 introducerea preţului autoturismului, în Euro;
 cursul, la zi, a monedei europene;
 în funcţie de cursul monedei Euro se calculează preţul
autoturismului în lei;
 confirmarea stocului existent;
 confirmarea includerii de taxe;
 opţiunea de culoare;
 afişarea informaţiile despre autoturism: marca, preţul în lei,
culoare, dacă se află în stoc, dacă preţul are taxele incluse.

 Pentru informaţiile introduse de la tastatură, textbox-urilor li se atribuie


nume semnificative (txtMarca, txtPretEuro, txtCursEuro).
Butonul de comandă (btnInfo) determină afişarea - în eticheta lblInfo
- informaţiilor necesare. Proprietatea Font a acestor controale poate fi
modificată pentru o afişare mai vizibilă (de exemplu Bold):

txtMarca txtCursEuro

txtPretEuro

btnInfo
lblInfo 

 Procedura de preluare a informaţiilor şi de afişare a rezultatelor


prelucrării lor (asociată butonului „Info”) conţine următoarele instrucţiuni:

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)"


'Observaţie: vbCrLf -> pentru rând 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 funcţia IsNumeric, de tip boolean, se
poate testa dacă argumentul este numeric (rezultat True pentru
argument numeric).

Controlul CheckBox creează posibilitatea de se specifica anumiţi


parametri prin intermediul unor casete de validare. Realizarea practică se face
prin efectuarea unui clic cu mouse-ul (bifare – debifare).

Principalele proprietăţi:
Proprietate
Name
Nume VBA: CheckBox1, CheckBox2, … Convenţie 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 stabileşte dacă checkbox-ul este sau nu
activ.
Font
Stilul fontului cu care este scris textul însoţitor.
ForeColor
Culoarea cu care este scris textul însoţitor.
Caption

Bazele informaticii    137 


Formulare VBA

Proprietate ce determină textul însoţitor (explicativ) al casetei de validare.


Value
Proprietate importantă cu următoarele 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ă
următoarele instrucţiuni:
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 execuţiei formularului ar putea arăta astfel:

   
 
 
 
  checkBox bifat
 
 
 
  Rezultatul prelucrării

_____________________________________________________________________________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 încât să formeze un
set de elemente între care se stabileşte o relaţie. De exemplu în cazul controlului
CheckBox, utilizatorul poate bifa un control indiferent de starea celorlalte.

Există însă situaţii în care este de dorit ca starea unei opţiuni să elimine în
mod automat celelalte opţiuni şi astfel se ajunge la utilizarea butoanelor de
opţiune structurate într-un grup.

Principalele proprietăţi ale unui Frame sunt:

Proprietate

Name

Nume VBA: Frame1, Frame2, … Convenţie 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 foloseşte atunci când trebuie selectată doar o


singură opţiune din mai multe posibile. De regulă, aceste butoane sunt
comasate într-un cadru de grupare, asigurându-se, în acest fel, selectarea doar
a unei singure opţiuni.

Proprietăţile cele mai importante ale unui control de tip buton radio sunt:
Proprietate
Name
Nume VBA: OptionButton1, OptionButton2, … Convenţie 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 însoţeşte 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ă, indicând dacă butonul este selectat - True
sau nu – False (implicit).
Visible
Proprietate de tip boolean care stabileşte 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 instru-
mente, 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 conţine.

Bazele informaticii    140 


Formulare VBA

 Codul care completează versiunea anterioară a formularului este


următorul:
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
'Observaţie: vbCrLf -> pentru rând nou
'.
'.

 Când se lansează în execuţie 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 afişează o listă de una sau mai


multe elemente. Dacă numărul total al elementelor excede numărul celor care
pot fi afişate, un scroll bar este automat adăugat la acel control. Prin
proprietatea MultiSelect elementele listei pot fi afişate în coloane multiple
(implicit MultiSelect este fmMultiSelectSingle).

Funcţia 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. Funcţia ListCount furnizează numărul elementelor listei.

În esenţă, controlul ListBox poate conţine mai multe valori care să fie
gestionate pe o suprafaţă fixă de pe formular, accesul la valorile ascunse
realizându-se prin intermediul barelor de derulare. Funcţia Clear permite
ştergere elementelor listei (golirea listei).

Proprietăţile importante ale unei casete cu listă sunt enumerate în tabelul


următor:
Proprietate
Name
Nume VBA: ListBox1, ListBox2, … Convenţie prefix: lst.
BorderStyle
Marginea casetei cu listă:
 None: nu apare nici o bordură;

Bazele informaticii    142 


Formulare VBA

 Single - bordură.
ColumnWidths
Lăţimea (în număr de puncte) fiecărei coloane în cazul în care lista suportă
coloane multiple.
Enabled
Proprietate de tip boolean care, atunci când 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 afişată pe un număr 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 apăsare a
butonului din stânga al mouse-ului;
 Extended: pot fi selectate mai multe valori, prin folosirea mouse-
ului şi a tastei Ctrl, precum şi prin deplasarea mouse-ului în timp
ce butonul din stânga este apăsat.
TextAlign
Implicit, elementele unei liste sunt aliniate la stânga. 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ă operaţiune este cea de adăugare a elementelor în listă
(aici lstAuto). În momentul proiectării interfeţei, cu ajutorul procedurii
Sub UserForm_Initialize(), se introduc elementele listei (aici, mărci
de autoturisme). Utilizându-se o singură coloană
(lstAuto.ColumnCount = 1) lista (lstAuto.List()) se preia din
tabloul Lista(5).

Bazele informaticii    143 


Formulare VBA

 Atunci când se va lansa formularul în execuţie lista conţine autoturismele


specificate.

lstAuto

 Se pot include, în formular, două butoane:

btnAdauga

btnSterge

 Adăugarea unei mărci noi de autoturism:


Private Sub btnAdauga_Click()
'Introducerea unei noi mărci
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 funcţia


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 asemănător listelor clasice, însă suprafaţa ocupată pe formular este
corespunzătoare unei singure linii. În momentul selecţiei, caseta se derulează,
afişând elementele disponibile, iar după selectarea unuia dintre ele se reduce la
forma iniţială. Selecţia poate fi realizată şi prin tastarea primelor caractere care

Bazele informaticii    145 


Formulare VBA

identifică elementele listei.

Câteva proprietăţi ale ComboBox-ului:


Proprietate

Name

Nume VBA: ComboBox1, ComboBox2, … Convenţie prefix: cbo.

DropButtonStyle

Modul de vizualizare a butonului de derulare a listei:

 Plain: ;
 Arrow (implict): buton de selecţie marcat cu săgeată: ;
 Ellipses: ;
 Reduce: .
ColumnWidths

Lăţimea fiecărei 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 afişarea elementelor.

ListWidth

Lăţimea, în pixeli, a listei care apare în momentul când se apasă butonul de


selecţie. Valoarea stabilită nu poate fi mai mică decât lăţimea ComboBox-ului.

MaxLength

Numărul maxim de caractere care pot fi introduse de utilizator. Implicit,


această proprietate are valoarea zero (pot fi introduse oricâte caractere).

TextAlign

Bazele informaticii    146 


Formulare VBA

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

Text

Stabileşte 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 următor 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 afişarea elementelor curente se foloseşte 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
proprietăţii 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 afişarea pe suprafaţa formularului a unor imagini


preluate din fişiere grafice. Formatele suportate sunt multiple: bmp, gif, jpg, ico
etc. Referitor la aspectul vizual, cele mai importante proprietăţi sunt următoarele:

Proprietate

Name

Nume VBA: Image1, Image2, … Convenţie 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 afişa în casetă. În momentul proiectării, această


imagine poate fi preluată prin indicarea fişierului care o conţine.

   

Controlul SpinButton oferă o modalitate de a selecta o valoare


numerică dintr-un anumit interval.

Proprietăţile definitorii ale generatorului de valori sunt următoarele:


Proprietate
Name
Nume VBA: SpinButton1, SpinButton2, … Convenţie 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
Stabileşte pasul cu care se modifică valoarea curentă din generator atunci
când utilizatorul acţionează butoanele de incrementare sau decrementare.
Valoarea incrementului trebuie să fie un număr î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 următoarele controale:
 Controlul spbVarsta (cu proprietăţile Min = 1, Max = 120);
 Eticheta lblInfo.

Incrementarea valorii curente

lblInfo

Decrementarea valorii curente

 Proprietatea Value se modifică dinamic, în funcţie de acţiunile


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

Modificarea proprietăţilor din cod

Pentru modificări ale proprietăţilor unui control este necesar ca valorile


acestora să fie citite şi redefinite în timpul execuţiei (Run Mode). Pentru fiecare
control se dau valori implicite (default), ele pot fi însă modificate prin acţiuni
ale utilizatorului.

Iniţializarea dialogului este realizată prin codul cuprins în procedura


eveniment Initialize. Afişarea formularului declanşează evenimentul
Initialize şi astfel au loc şi atribuirile de valori specificate.

Bazele informaticii    150 


Formulare VBA

Când se gestionează mai multe formulare se impune, de cele mai multe


ori, activarea altor formulare din formularul curent.

↓ Exemplu______________________________________________________________________________
 Având 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 aplicaţiei rezultă:

____________________________________________________________________________________Exemplu ↑

Când se impune modificarea mai multor proprietăţi ale unui control se


utilizează, de multe ori, structura:

With <control>
<instrucţiuni>
End With 

↓ Exemplu____________________________________________________________________________________
 Se creează un formular;
 Se introduce, în formular, controlul ListBox cu numele lstCardinale;
 Codul următor realizează iniţializarea 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ă, deşi în modelele de obiecte Word, Excel şi


PowerPoint colecţiile sunt indexate de la 1, în tablourile şi colecţiile
asociate formularelor se foloseşte indexarea de la 0. De aici selectarea
ultimei intrări (cu numărul de ordine 4) din listă prin instrucţiunea
ListIndex = 3.

Prin setarea proprietăţilor unui control şi aplicarea metodelor în timpul


execuţiei, se pot efectua modificări într-un dialog utilizator care se execută,
modificări apărute ca răspuns la acţiunile şi alegerile utilizatorului. De exemplu,
accesibilitatea unor controale poate fi controlată prin modificarea proprietăţii
Enabled. Dacă proprietatea este setată pe False, atunci utilizatorul nu poate
accesa controlul.

↓ Exemplu _____________________________________________________________________________
 Se creează un formular conţinând două butoane radio şi o casetă de
validare.
 Codul următor restricţionează 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 bifării/debifării casetei de validare:

____________________________________________________________________________________Exemplu ↑

Prin intermediul metodei SetFocus se controlează focalizarea. Un control


care are focusul este cel care răspunde la intrările 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, utilizând controalele TextBox, sunt de tip String.
Pentru colectarea unor valori numerice este necesară o conversie (de obicei cu
funcţia Val). Deoarece conversia string  numeric ia în considerarea
caracterele, până la primul ce nu reprezintă informaţie numerică, se impune
validarea şirului introdus prin funcţia 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 afişează un
mesaj de eroare realizând 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 când 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, informaţia necesară a fi reutilizată trebuie să fie salvată în
variabile de la nivelul modul, înaintea descărcării formularului. Închiderea
(descărcarea) formularului se realizează prin instrucţiunea 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 descărcarea 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 fişier .frm care poate fi importat în alte aplicaţii:
 În VBE, unde s-a proiectat formularul, se selectează opţiunea din
meniu File, Export File.
 Se alege un nume, pentru fişierul formular, şi Save. Se obţine un
fişier nume.frm.
 Reutilizarea formularului necesită deschiderea fişierului stocat:
prin meniu, File, Import File, selectarea numelui formularului şi
Open.

1. Să se editeze şi să se ruleze secvenţele de instrucţiuni 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 Valoare proprietate

Calculator Formular Caption Calculator

  txtA TextBox 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

Enabled False

btnAdun Buton 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 x

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 
Observaţii:
 Deoarece valorile introduse în TextBox-urile txtA şi txtB sunt de tip
text este necesară funcţia de convertire Val
Cu funcţia IsNumeric se testează dacă valoarea introdusă este o valoare
numerică 

Secvenţele 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

  txtD TextBox TextAlign 3 -


fmTextAlignRight

Font, Size 10

Font,FontStyle Bold

txtN TextBox La fel cu txtD

txtV TextBox La fel cu txtD

TextBox TextAlign 3 -
txtRezultat fmTextAlignRight

Font, Size 10

Font,FontStyle Bold

Enabled False

 frmFunctia Frame Caption Functia

Bazele informaticii    159 


Formulare VBA

  rbnFV Caption FV

  ForeColor Palette, Red


O
Font,FontStyle Bold
p
rbnPV Caption PV
ţ
ForeColor Palette, Green
i

u Font,FontStyle Bold

n rbnPmt Caption Pmt

i
ForeColor Palette, Blue

Font,FontStyle Bold

Procedurile eveniment

Private Sub rbnFv_Click()


rbnFV 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 

rbnPV Secvenţele de cod sunt la fel ca pentru rbnFV, doar că se


schimbă funcţia de calcul: FV  PV

Secvenţele de cod sunt la fel ca pentru rbnFV, doar că se


rbnPmt
schimbă funcţia de calcul: FV  Pmt

Bazele informaticii    160 


Bibliografie

Bibliografie 
 

Emil Cosma  Aplicaţii Excel, Project, Visual FoxPro, Ed. EXPONTO, 2004 

John Nossiter  Utilizare Microsoft Excel 97,  Ed. TEORA, 1999 

Emil Cosma   Office 2007 – VBA, Excel, Access, Ed. EXPONTO, 2008 

Clayton Walnum  Visual Basic .NET, Ed. ALL, 2003

Luminiţa Fînaru, Ioan Brava  VISUAL BASIC, Primii paşi … şi următorii, Ed. POLIROM, 2001

Emil Cosma   Visual BASIC … VBA 2007 … Studio 2005, Ed. MATRIXROM, 
2007 

Paul McFedries  VBA, Ghid pentru începători, Ed. TEORA, 2006 

Octavian Dospinescu  Dezvoltarea aplicaţiilor în Visual Basic.NET, Ed. POLIROM, 
2004 

Bazele informaticii     161 

S-ar putea să vă placă și