Sunteți pe pagina 1din 101

1

Prof. univ. Emil Cosma

VBA
Cuprins
O introducere n programare3
Macrocomenzi5
nregistrarea unei macrocomenzi VBA5
Rezumat10

Editorul VBA11
Lansarea editorului VBA11
Mediul de editare VBA11
Module VBA13
Proceduri13
Identificarea modulelor15
Rularea modulelor16
Save i Open pentru aplicaiile Office i modulele asociate16
Sistemul de asisten la scrierea codului16

Formulare VBA18
Crearea unui formular18
Rularea unui formular18
Proprietile formularului19

Rezumat21

Secvene de cod VBA22


Cuvintele22
Comentariile23
Tipuri de date24
Expresiile25
Operanzi25
Operatori25
Ordinea de evaluare a expresiilor26

Constante i variabile27
Constante27
Variabile28

Instruciunea de atribuire29
Liste (arrays) de variabile30
Liste dinamice30

Aplicaii31

Funcii VBA predefinite 33

Funcia Format33
Funcii matematice34
Funcii financiare34
Funcii pe iruri de caractere36
Funcii pentru dat calendaristic i timp37
Funcii pentru conversii37
Funcii pentru testarea tipului de date37
Aplicaii38

Prof. univ. Emil Cosma

Programare structurat. Structuri de control VBA40


Introducerea/extragerea datelor41
InputBox41
MsgBox42

Structurile de control42

Instruciunea de selecie simpl42


Instruciunea de selecie multipl43
Structurile repetitive45

Aplicaii48

Ciclul Do While (cu test iniial) 45


Ciclul Do Until (cu test iniial) 45
Ciclurile Do While i Do Until cu test final46
Ciclul For Next, cu numr finit de pai47

Module VBA51
Variabile locale (private) 51
Variabile publice (globale) 51
Variabile private52

Transmiterea argumentelor prin valoare i prin referin54


Funcii recursive55
Aplicaii56

Formulare VBA60
Formulare (form-uri) 60
Proprieti i metode61
Proprietatea Caption62
Proprietatea StartUpPosition63
Proprietatea Height i Width63
Proprietile ForeColor i BackColor64
Utilizarea controalelor64
65
65
68
70
72
73
74
77
79
80

Modificarea proprietilor din cod81


Aplicaii86

Documente Office active91


Controale ActiveX (Word) 92
Controale Content (Excel) 95
Form Controls i ActiveX Controls99
Aplicaii101

Prof. univ. Emil Cosma

O introducere n programare

O introducere n programare
Un program de calculator este o list de instruciuni care spun unui calculator ce
sarcini are de ndeplinit. Calculatorul ruleaz instruciunile pn cnd ajunge la sfritul
programului. Fiecare linie dintr-un program este, de obicei, o singur comand pe care
calculatorul trebuie s o execute, cum ar fi adunarea a dou numere. Cu o succesiune
de comenzi calculatorul poate realiza mai multe: bilanul unui carnet de cecuri, tiprirea
unui document, desenarea de imagini.
Programul de calculator (program surs) poate fi scrise n limbaje diferite.
Calculatoarele neleg numai limbajul main (program obiect) un ir de bii. Limbajele
de programare ca BASIC (limbaj procedural simplu, creat n 1964) permit oamenilor s
scrie programe ntr-un limbaj asemntor limbii engleze. Unele limbaje de calculator,
cum ar fi cteva versiuni de BASIC, convertesc treptat un program n limbajul main,
pe msur ce programul ruleaz, folosind ceea ce se numete interpretor. Alte limbaje,
cum ar fi Pascal i C, folosesc un compilator pentru a converti integral programul,
nainte de a-l rula. Un compilator transform programul ntr-un fiier executabil (.exe)
care poate fi rulat n mod direct. Cu cteva excepii, majoritatea limbajelor de
programare ale calculatoarelor sunt nsoite de un compilator. n orice caz, toate
programele pot s fie citite de oameni i trebuie s fie convertite n limbaj main,
pentru a putea fi interpretate de calculator.
Exist multe limbaje de programare: Pascal, C, Fortran, Oracle, FoxPro, Java, Basic.
La fel, exist multe versiuni ale limbajului Basic. Versiunile mai vechi de DOS (dinainte de
5.0) aveau o versiune de Basic inclus, numit GW-Basic. Versiunile mai noi de DOS
includ QBasic. Toate aceste pachete de programe permit crearea programelor de
calculator cu BASIC, dar ele implementeaz limbajul BASIC puin diferit. n Windows
este implementat limbajul Visual Basic care permite scrierea unor aplicaii Windows.
Adesea, numele limbajului BASIC este ortografiat cu litere mici (Basic). Cu toate
acestea, BASIC i-a fcut de fapt debutul ca un acronim, reprezentnd prescurtarea de
la Beginner's All-purpose Symbolic Instruction Code (codul de instruciuni simbolice
generale pentru nceptori). Ca limbaj de programare, Visual Basic este un dialect BASIC.
El este logic, seamn cu limba englez i este uor de neles. Fiind un mediu de
programare vizual, acesta permite programatorilor s asambleze vizual programul,
ntr-o fereastr, folosind componentele dintr-o cutie cu instrumente (toolbox) utile
pentru realizarea aplicaiilor. Printre aceste instrumente se includ: un editor de texte
pentru scrierea programului surs, un compilator pentru limbaj i alte faciliti pentru
testarea i verificarea aplicaiei (de natura depanatoarelor).

Prof. univ. Emil Cosma

O introducere n programare

Convenii (pentru redactare):


Simbol

Semnificaie

Observaii

Indicaii, meniuni

Aplicaii

Rezumat

n descrierea limbajului de programare Visual Basic se utilizeaz urmtoarele


notaii:
[]
|
<tip>
<valoare>
<expresie>
<condiie>

elementul este opional;


variant;
tip de dat;
valoarea unei constante, a unei variabile sau a unei expresii;
expresie oarecare;
condiie (expresie logic).

Editorul de programe Basic coloreaz cuvintele pentru a facilita detectarea lor.


Sunt cteva culori implicite: verde pentru comentarii, albastru pentru cuvintelecheie, negru pentru elemente definite de utilizator (variabile i constante). n
particular, se va utiliza simbolul , atunci cnd o linie de program depete
lungimea unui rnd de text.

Un calculator poate face numai ceea ce un om l instruiete s fac.


Un program de calculator este o list de comenzi pe care calculatorul

le

urmrete de la nceput pn la sfrit.


Exist mai multe limbaje de calculator. Limbajul tratat n continuare este o form
de BASIC.
Un program BASIC trebuie s fie convertit n limbaj main, nainte de a putea fi
neles de ctre calculator. Compilatorul din Visual Basic face aceast conversie.
Scrierea unui program seamn mult cu scrierea unui document text. Trebuie
scrise mai multe schie" nainte ca programul s fie complet.

Prof. univ. Emil Cosma

Macrocomenzi

Macrocomenzi

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

Editor.
nregistrarea unei macrocomenzi VBA
Cea mai simpl metod de creare a unei macrocomenzi este
utilizarea resursei Macro Recorder. Prin aceast metod, operaiunile
dorite a fi automatizate sunt nregistrate pas cu pas (editare text,
comenzi de meniu, casete de dialog ). Macro Recorder-ul transform
toate operaiile n instruciuni Basic corespunztoare (module VBA).
n Word, Excel sau PowerPoint (celelalte programe din pachetul Office nu posed
funcii de nregistrare ale macrocomenzilor) nregistrarea unei macrocomenzi ncepe
prin stabilirea unui nume pentru macrocomand (cum ar fi Macro1), dar acest nume se
poate schimba cu orice alt nume, n caseta de text Macro name:

Prof. univ. Emil Cosma

Macrocomenzi

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

______________________________________________________________________________________________Exemple

Deoarece modulul de nregistrare a macrocomenzilor memoreaz toate aciunile


utilizatorului, este indicat neefectuarea unor comenzi neeseniale pe parcursul
nregistrrii. Intrarea n starea Recording este marcat n bara de stare a
programului Office. Acest buton va fi acionat n momentul terminrii
nregistrrii:

n PowerPoint, macrocomanda se poate memora n orice prezentare deschis.


Ea va fi creat utiliznd editorul VBA.

Prof. univ. Emil Cosma

Macrocomenzi

Exemplu______________________________________________________________________________________________
Adugarea (Word) unui buton de rulare a unei macrocomenzi, n Quick Access
Toolbar:
Quick Access Toolbar

se deschide n editare un document;


se iniiaz nregistrarea unei macrocomenzi,
;
se stabilete numele macrocomenzii (aici Antet) care va fi asociat unui buton
(Assign macro to, Button);
,

n fereastra Word Option, Customize,


noul buton va apare n lista Quick Access:

se acioneaz butonul

din fereastra Modify Button se selecteaz un simbol (de


exemplu
):

n Quick Access Toolbar va apare noul buton:

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


din tab-ul Insert,

):

Universitatea "Ovidius" Constana


Facultatea de tiine Economice
Data: 11 februarie 2007 Ora: 11:24

se ncheie nregistrarea apsnd butonul

, din bara de stare;

Prof. univ. Emil Cosma

Macrocomenzi

macrocomanda, fiind asociat documentului, poate fi utilizat oricnd prin


acionarea butonului

(a se remarca actualizarea datei i a orei):

Universitatea "Ovidius" Constana


Facultatea de tiine Economice
Data: 13 februarie 2007 Ora: 17:16

vizualizarea coninutului macrocomenzii

, Edit n Editorul VBA:

n corpul macroinstruciunii apar instruciuni ale limbajului de programare Visual


Basic n care sunt transformate aciunile utilizatorului. Acest instruciuni au mai mult
sau mai puin semnificaie, mai ales pentru un programator nceptor. Deocamdat,
important este faptul de a tii c ele pot fi modificate.
______________________________________________________________________________________________Exemplu
O macrocomand obinuit are urmtoarele elemente:
Cuvntul cheie Sub (prescurtare de la subrutin) - acest cuvnt cheie
marcheaz nceputul unei macrocomenzi.
Numele macrocomenzii - dup cuvntul cheie Sub este plasat numele unei
macrocomenzi urmat de paranteze.
Comentariile - rnduri care ncep cu un apostrof ('). Comentariile nu sunt
prelucrate atunci cnd macrocomanda este rulat.
Instruciunile macrocomenzii - corpul principal al macrocomenzii (liniile
dintre cuvintele cheie Sub i End Sub).

Prof. univ. Emil Cosma

Macrocomenzi

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


macrocomenzilor nu este permis, din motive de securitate,

utilizatorul poate lua decizia adecvat acionnd butonul

Rularea unei macrocomenzi se poate realiza i prin shortcut-ul Alt+F8.

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

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

Workbook ;
se deschide documentul Excel, dndu-se permisiunea
macrocomenzilor:
, Enable this content ;

de

executare

se poate introduce data curent, n orice celul (de exemplu n D4) utiliznd
shortcut-ul Ctrl +d :

Prof. univ. Emil Cosma

10

Macrocomenzi

vizualizarea coninutului 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 funciei de dat calendaristic a fost apsat
tasta
Enter).
Dac,
n
editorul
VBA,
se
terge
instruciunea
Range(B3).Select, activarea celulei B3 va fi anulat.

______________________________________________________________________________________________Exemplu

Macrocomenzile sunt asociate documentelor Office. Ele pot fi salvate mpreun cu


aceste documente: din lista Save as type, se selecteaz tipul de fiier ce conine
meniunea Macro-Enabled.

macrocomand reprezint o list de instruciuni scrise n limbajul de


programare Basic, varianta VBA.
VBA este un mediu de programare puternic, asemntor celui din Visual Studio
(Visual Basic, C++, Java, etc.)
Instruciunile unei macrocomenzi pot fi editate - se pot modifica, terge
instruciunile Basic existente, se pot aduga altele noi.
Macrocomenzile pot fi rulate de cte ori este nevoie.
Din motive de securitate, la lansarea aplicaiilor Office, se notific existena
macrocomenzilor, executarea lor nefiind permis n mod implicit.

11

Prof. univ. Emil Cosma

Editorul VBA

Editorul VBA

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

Lansarea editorului VBA


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

Mediul de editare VBA


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

12

Prof. univ. Emil Cosma

Editorul VBA

cazul de fa) fr 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 modaliti rapide de selectare a unei comenzi din meniuri.
De exemplu, butonul
(Save) salveaz documentul din proiectul curent, avnd
aceeai pictogram i acelai efect ca i selectarea comenzii din meniul File.
Fereastra Project ofer o trecere n revist a obiectelor din proiectul curent. De
exemplu, un modul sau un formular utilizator (UserForm) va fi unul dintre aceste
obiecte. De fapt, n unele proiecte pot exista mai multe obiecte. Executnd un clic
pe semnele plus(+) i minus(-) de lng dosarele din fereastra Project, se pot
afia mai multe sau mai puine detalii.
Fereastra Properties afieaz proprietile obiectului care este curent selectat.
Proprietile sunt atribute ale unui obiect. De exemplu, modulul are o proprietate
numit (Name) pentru identificarea acestuia.
Fereastra de cod. Chiar dac limbajul Visual Basic permite construirea unei pri
din proiect, prin procedeul Recording, este necesar i scrierea codului surs al
programului. Programele conin linii de comenzi care se introduc n fereastra de
cod.

13

Prof. univ. Emil Cosma

Editorul VBA

Module VBA

n Visual Basic Editor, macrocomenzile sunt grupate n aa numitele module


(esena limbajului VBA). Modulele sunt seciuni care grupeaz instruciuni Basic. Dac
documentul Office are asociat o macrocomand, instruciunile care o compun sunt
afiate n fereastra de cod. Pentru editarea propriilor module este necesar inserarea
acestora (prin meniu, Insert,

sau utiliznd butonul

din Toolbar).

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

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


Module VBA.
Proceduri Sub
O procedur Sub reprezint un grup de instruciuni care primete, de la
programul apelant un ir de parametri, realizeaz anumite prelucrri, dup care d
controlul programului apelant.
Definiia sintactic este (Exit Sub este opional i reprezint punctul de ieire
din procedur, dac lipsete procedura se termin la End Sub):
Sub NumeProcedur (argument1, argument2, )
<instruciuni VBA>
[Exit Sub]
<instruciuni VBA>
End Sub
Apelul procedurii (cuvntul Call poate s nu apar):
[Call] NumeProcedur (parametru1, parametru2, )
Argumentele de apel - 0, 1 sau mai multe - sunt n coresponden biunivoc cu

Prof. univ. Emil Cosma

14

Editorul VBA

parametrii de transmis. Aceast coresponden este determinat de ordinea i


tipul argumentelor aflate n list.

n exemplificrile urmtoare, pentru afiarea unor casete de mesaj, se va


utiliza funcia MsgBox.
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

Proceduri Function
O funcie definit de utilizator reprezint un grup de instruciuni care primete un
set de parametrii (argumentele funciei) de la programul apelant i i returneaz
acestuia valoarea. Numele unei funcii poate intra n componena expresiilor de calcul
ca operand.
Definiia sintactic este:
Function NumeFuncie (argument1, argument2, ) [As <tip>]
<instruciuni VBA>
[Exit Function]
<instruciuni VBA>
End Function

Prof. univ. Emil Cosma

15

Apelul
funciei
se
realizeaz
parametrilor, pus ntre paranteze.

Editorul VBA

prin

numele

funciei

urmat de lista

ntre lista parametrilor de apel i lista argumentelor funciei trebuie s existe


o coresponden biunivoc, determinat de ordinea argumentelor n list.
Exit Function este opional i reprezint punctul de ieire din procedur - dac
lipsete procedura se termin la End Function.
Argumentul As, opional, impune tipul valorii returnate la terminarea funciei.

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

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

______________________________________________________________________________________________Exemple
Identificarea modulelor
Atunci cnd se introduce un modul nou ntr-un proiect, VBA i atribuie un nume
generic, cum ar fi Module1, Module2, . Practic este necesar utilizarea unor nume
sugestive pentru ca, prin acestea, modulele s poat fi difereniate. Pentru a schimba
numele unui modul:
Se selecteaz modulul n fereastra Project Explorer.
n fereastra Properties, proprietatea (Name), se tasteaz numele modulului.
Numele utilizat ncepe cu o liter, nu conine spaii sau semne de punctuaie
(liniuele de subliniere sunt acceptate) i nu are mai mult de 31 de caractere.

16

Prof. univ. Emil Cosma

Editorul VBA

Rularea modulelor
Modulele includ o secven de instruciuni Basic care trebuie s fie corecte din
punct de vedere sintactic. Detectarea erorilor se poate efectua prin compilare (Debug,
Compile Project).
n aplicaiile Office exist mai multe metode de rulare a modulelor, ns cel mai
des utilizate sunt urmtoarele dou:
n cadrul editorului, se acioneaz, de obicei,

butonul

din ToolBar.

Aceeai comanda se poate lansa i prin meniu:


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

pentru aplicaiile Office i modulele asociate

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

mpreun cu documentul. n acest caz este necesar ca, la salvare, s se fac


precizarea tipului de fiier: Macro-Enabled (Save As type). Pentru un astfel
de fiier, atunci cnd se deschide,

n Message Bar va apare mesajul:

Se poate permite executarea macrocomenzilor n fereastra Security Alert


Macro (clic pe butonul Options) :

Separat, ca fiiere cu extensia .bas (fiiere Basic). Pe aceast cale se


export/import modulul ca fiier .bas, de fapt un fiier text care cuprinde
codul VBA. Exportare/importarea unui modul este realizat prin meniul
editorului (File, Export File Ctrl+E / File, Import File Ctrl+M).

Sistemul de asisten la scrierea codului


VBA ofer sugestii i alternative n timpul tastrii codului, prin instrumentul
IntelliSense, dup ce s-a introdus un cuvnt-cheie care este recunoscut ca avnd
parametri. Editorul de program afieaz lista valorilor posibile pentru respectivii parametrii.
Parametri semnific proprietile unui control (care n cod se separ de numele controlului
prin punct), argumentele unei proceduri sau funcii, tipurile de dat etc. Aceast facilitate se
numete Auto Members.

17

Prof. univ. Emil Cosma

Editorul VBA

Poziionarea n listele respective se face mai uor prin tastarea primelor litere ale
cuvntului dorit (Int" pentru Integer). Scrierea efectiv a cuvntului dorit are loc prin
apsarea tastei Enter, tasta virgul" dac se scriu elementele unei liste.

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

Formateaz culoarea fiecrui cuvnt din linie; n mod prestabilit, cuvintele


cheie din VBA sunt afiate cu albastru, comentariile cu verde, erorile cu rou, iar
celelalte texte cu negru.

Adaug linii i cuvinte noi, specifice limbajului. De exemplu, dac se introduce


cuvntul cheie Sub urmat de numele procedurii, VBA adaug automat o
pereche de paranteze rotunde dup nume i introduce o linie End Sub pentru
a marca sfritul procedurii.

Cuvintele cheie sunt schimbate n formatul potrivit (dac se tasteaz end sub,
VBA transform expresia n End Sub la apsarea tastei Enter.

Verific erorile de sintax, adic erorile care apar atunci cnd un cuvnt este
ortografiat greit, o funcie este introdus incorect, etc. VBA semnaleaz o eroare
de sintax, fie afind o caset de dialog, fie neafind cuvntul, n formatul i
culoarea corespunztoare.

Exemplu______________________________________________________________________________________________
ntr-un modul se tasteaz

sub Salut,

Se apas tasta Enter,


Se apas tasta Tab,
Se introduce textul

msgbox(Bun venit in VBA!),

Modulul va fi afiat astfel:

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

18

Editorul VBA

Formulare VBA
Cu ajutorul formularelor (se poate utiliza i termenul form) se definete
interfaa grafic, asemntoare cu cea editat n mediile de programare Visual Studio,
astfel c practica n VBA poate fi considerat introductiv ctre acestea.
n formular se pot introduce controale ActiveX (obiecte OLE) care permit
interaciunea cu utilizatorul. Un control are atribute (proprieti) ajustabile i sesizeaz
evenimente (este viu). Controalelor li se asociaz secvene de cod, sub forma unor
proceduri, numite proceduri eveniment.
Crearea unui dialog utilizator (termenul utilizator este adugat pentru
diferenierea de dialogurile ncorporate mediului) necesit parcurgerea mai multor
etape:
crearea unui formular (UserForm), care constituie suportul pe care sunt
adugate controalele;
plasarea controalelor pe formular;
stabilirea proprietilor pentru controale;
scrierea procedurilor asociate controalelor, de rspuns la evenimentele
declanate prin acionarea lor.
Crearea unui formular
n Visual Basic Editor crearea unui formular (prin meniu, Insert,
sau
utiliznd butonul
din Toolbar) se realizeaz n modul de proiectare (design mode).
Rularea unui formular
n modul de execuie (run mode) controalele rspund evenimentelor. Pentru
rularea unui formular se acioneaz, de obicei, butonul
din ToolBar (aceeai
comanda se poate lansa i prin meniu: Run, Run Sub/UseForm). Se pot rula doar
proiectele corecte sintactic (verificare prin compilare: Debug, Compile Project).

19

Prof. univ. Emil Cosma

Design
Mode

Project
Explorer (Ctrl+R)

Editorul VBA

Properties
Window (F4)

Formular

Toolbox

Caseta cu
instrumente
(Toolbox)

Fereastra UserForm include obiectul care are UserForm1 n bara de titlu.

formular se pot introduce controalele care definesc interfaa cu utilizatorul. Numele


proiectului apare n fereastra Project Explorer, iar proprietile formularului (dar i
ale unui control din formular) sunt afiate n fereastra Properties. O linie punctat
gri i punctele de dimensionare nconjoar obiectul selectat curent.

Proprietile formularului
Proprietile formularului sunt afiate, alfabetic (Alphabetic) sau pe categorii
(tab-ul Categorized):
Aparen (Appearence) : culorile utilizate, efectele vizuale de umplere etc.
Comportare (Behaviour) : modul de continuare a aciunilor la prsirea
ultimului control de pe formular (Cycle) sau accesul utilizatorului la obiect
(Enabled).
Font (Font) : fontul implicit (poate fi modificat pentru fiecare control n parte).
Diverse (Misc) : numele formei, imaginea mouse-ului etc.
Imagine (Picture) : imagini utilizate.
Poziie (Position) : poziie i dimensiuni.
Pentru a aduga un control n formular se execut clic pe pictograma
corespunztoare din Toolbox i se traseaz n fereastra formularului.

Prof. univ. Emil Cosma

20

Editorul VBA

Mrimea controlului se poate stabili utiliznd punctele de dimensionare. Cnd se


plaseaz indicatorul mouse-ului deasupra unui punct de dimensionare, acesta i
modific nfiarea pentru a indica direciile n care se poate trage acesta, innd
apsat butonul stng al mouse-ului.
Pentru a muta controlul, se plaseaz indicatorul mouse-ului deasupra sa, cursorul
acestuia transformndu-se ntr-o pictogram cu patru sgei. Butonul mouse-ului se ine
apsat i se deplaseaz cursorul.

Se pot redimensiona majoritatea controalelor, trgnd de punctele lor de

dimensionare. De asemenea se poate realiza deplasarea lor.


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

Atunci cnd se execut dublu clic pe control, limbajul VBA afieaz fereastra
de cod n care sunt incluse i liniile de cod implicite (procedur). Procedura
Private Sub CommandButton1_ Click() se va executa ori de cte ori
utilizatorul, n faza de execuie, acioneaz butonul (procedura este un
eveniment pe care Windows l transmite programului spre a fi administrat).
Programatorul poate aduga propriul lui cod surs. De exemplu instruciunea
MsgBox (Bun venit in VBA) spune limbajului VBA s afieze o
caset de mesaj:

Prof. univ. Emil Cosma

La rularea programului (
Bun venit in VBA:

21

Editorul VBA

) va apare caseta de mesaj coninnd textul

______________________________________________________________________________________________Exemplu

Tratarea mai pe larg a controalelor care definesc interfaa grafic cu

utilizatorul va fi fcut n capitolul Formulare VBA.

VBA se poate lansa dintr-o aplicaie Office, cel mai adesea utiliznd shortcut-ul
Alt+F11.

Dup lansarea mediului de programare VBA se pot edita module i formulare noi
sau se pot edita cele existente (stocate mpreun cu documentele Office sau
exportate ca fiiere cu extensia .bas).
Fereastra Project Explorer arat modulele i formularele din proiect. Un proiect are
cel puin un modul sau un formular.
Pentru a crea o aplicaie VBA e necesar scrierea codului surs al programului i
apoi compilarea programului (Debug, Compile Project) pentru eliminarea
eventualelor erori de sintax.
Instruciunile programului se introduc n fereastra de cod VBA.
Fereastra Properties afieaz atributele unui obiect din proiect.
Caseta de instrumente Toolbox conine controale care se pot folosi pentru a
realiza interfaa cu utilizatorul programului.
Se poate construi o interfa cu utilizatorul plasnd controale din Toolbox pe un
formular.
Se pot redimensiona controalele (i formularul) trgnd de punctele de
dimensionare ale controalelor, care apar atunci cnd este selectat controlul.
O modalitate de afiare a ferestrei de cod este executarea unui dublu clic pe
obiectul pentru care se dorete scrierea codului de program.
Atunci cnd utilizatorul apas pe un buton dintr-un formular creat, VBA genereaz
un eveniment Click. Codul de program care se adaug la procedura de eveniment
Click a butonului determin ce anume face butonul.

Prof. univ. Emil Cosma

22

Secvene de cod VBA

Secvene de cod VBA


O aplicaie VBA include unul sau mai multe formulare i module. Secvenele de
cod (program surs), asociate acestora, sunt constituite din linii de program editat n
limbajul de programare Visual Basic. n principiu o linie de program, format din mai
multe cuvinte care pot fi scrise cu majuscule i/sau cu minuscule, are dou pri: o
instruciune i unul sau mai multe argumente.
Editorul de program coloreaz cuvintele pentru a facilita detectarea lor. Sunt
cteva culori implicite: verde pentru comentarii, albastru pentru 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) aparin limbajului i au o semnificaie predefinit,
motiv pentru care pot fi folosite numai n modul n care sunt specificate n formatele
generale (de exemplu: For, Next, Do, Loop, etc).
Cuvintele utilizator sunt create de programator att pentru a defini datele ce se
prelucreaz, programele, fiierele, procedurile, ct i pentru a nscrie comentarii n
programe (de exemplu: cantitate, PU, Valoare, etc).

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

23

Prof. univ. Emil Cosma

Secvene de cod VBA

Exemple______________________________________________________________________________________________
Valoare = pret * _
cantitate
este echivalent cu:

Valoare = pret * cantitate


Valoare = 2 : cantitate = 50
este echivalent cu:

Valoare = 2
cantitate = 50
______________________________________________________________________________________________Exemple
Comentariile
Un comentariu constituie o linie de cod care nu se execut, avnd n cuprins explicaii
asupra altor poriuni de cod (care, de regul, urmeaz). n acest fel, la o parcurgere
ulterioar a codului, va fi facilitat nelegerea acestuia. Comentariile incluse de
programatori la scrierea unei aplicaii ajut foarte mult la modificarea sau ntreinerea
acesteia.
Un comentariu este deci un mesaj inclus ntr-o secven de program cu diferite
scopuri, precum:
o identificarea programului;
o descrierea obiectivului general al programului;
o descrierea scopului fiecrei proceduri n parte;
o explicarea secvenelor sau a calculelor mai complexe.
n Basic exist dou variante:
o Utilizarea instruciunii REM: desemneaz un comentariu care se ntinde pe
ntreg rndul;
o Utilizarea unui apostrof (') la nceputul comentariului: n acest caz se pot scrie
comentarii i dup o instruciune, pe acelai rnd.
Liniile de comentarii nu sunt executate i nu sunt vizibile n momentul execuiei
aplicaiei - Basic ignor la execuie liniile care ncep cu REM sau apostrof.
Exemplu______________________________________________________________________________________________
REM Programator: Parvulescu Andrei
REM Program de calcul al salariilor
'...
REM Aici sunt alte instructiuni
'...

24

Prof. univ. Emil Cosma

Secvene de cod VBA

Sub Calc_Impozit(Salariu As Single)


'Procedura de calcul a impozitului
Dim Impozit As Single 'variabila pentru memorarea
'impozitului
'Se utilizeaza 2 variabile:
'una pentru suma fixa si una pentru procent.
Dim SumaFixa, Procent As Single
'calculul impozitului
Impozit = SumaFixa + Salariu * Procent / 100
End Sub
______________________________________________________________________________________________Exemplu

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

Descriere

Lungime

Interval de valori

(byte)

Boolean

Date de tipul logic

Byte
Integer

Numere ntregi

Long
Currency

Format monetar

Single

True sau False

0 255

-32.768 32.767

-2.147.483.648 2.147.483.647

-922.337.203.685.477,5808
922.337.203.685.477,5807

1.401298E-45 3.4028235E+38

Numere zecimale n

Double

virgul flotant
(pentru aplicaii

-3.4028235E+38 -1.401298E-45

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

tiinifice)

4,940.656.458.41247E-324
1,797.693.134.86232E308

Date

Date calendaristice
i de timp

String

ir de caractere

1 ian. 100 31dec. 9999

25

Prof. univ. Emil Cosma

Object

Secvene de cod VBA

Obiecte (cum ar fi

controale i
formulare)

Variant

Date de orice tip,


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

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

Expresiile (de calcul)


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

Operatorii leag operanzi de acelai tip. Operatorii folosii n programele Basic


sunt urmtorii :

Operatorii aritmetici - leag operanzi numerici.


Operator

Descriere

adunare

scdere

26

Prof. univ. Emil Cosma

nmulire

mprire

ctul unei mpriri cu rest

Mod

modulo (restul mpririi)

Secvene de cod VBA

ridicare la putere

Operatorii relaionali - produc rezultate de tip boolean.


Operator

Descriere

<

strict mai mic

>

strict mai mare

egalitate

<> sau ><

diferit

<= sau =<

mai mic sau egal

>= sau =>

mai mare sau egal

Operatorii logici - leag expresii logice.


Operator

Descriere

NOT
(nu)

Rezultatul este adevrat dac operandul este


fals i invers (Not X).

AND
(i)

Rezultatul este adevrat cnd cei doi operanzi


sunt adevrai (X And Y).

OR
(sau)

Rezultatul este adevrat dac unul din operanzi


este adevrat (X OR Y)

XOR
(sau exclusiv)

Rezultatul este adevrat dac unul din operanzi


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

Operatorul de concatenare a irurilor: &

Ordinea de evaluare a expresiilor


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

Prioritate

Operatorii aritmetici sau &

0 (maxim)

Operatorii relaionali

Operatorii logici

27

Prof. univ. Emil Cosma

Secvene de cod VBA

Pentru expresiile aritmetice:


Operator

Prioritate

Operatorul unar (semn +, -)

Ridicarea la putere

nmulirea i mprirea

Adunarea i scderea

Parantezele pot modifica ordinea de efectuare a operaiilor.


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

25

102 / 4

25.5

102 \ 4

25

102 Mod 4

______________________________________________________________________________________________Exemplu

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

Identificatorii de variabile pot conine litere, cifre i caracterul


(underscore), nu pot s nceap cu cifre, nu pot conine spaii ori
speciale.
Este interzis folosirea unor nume care sunt cuvinte cheie
exemplu, nu se poate defini o variabil numit sub, dar se
identificatorul sub16)

de subliniere
alte caractere
n Basic (de
poate utiliza

Constante
O constant este un identificator a crui valoare asociat nu se modific pe
parcursul unui program. Constantele se pot declara (explicit) cu instruciunea:
Const <NumeConstant> [As <tip>] = <expresie>

28

Prof. univ. Emil Cosma

Secvene de cod VBA

Exemplu______________________________________________________________________________________________
Const PI As Double = 3.1416, Raza As Integer = 25
Const LungimeCerc = 2 * PI * Raza
_____________________________________________________________________________________________Exemplu

Constantele de tip String se scriu ntre ghilimele.

Exemplu______________________________________________________________________________________________
"Parvulescu Andrei"

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

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

scrie n funcie de setrile definite n calculator.


Exemplu______________________________________________________________________________________________

#17/1/2007#
#1:12:00 PM#
#17/1/2007 1:12:00 PM#
_____________________________________________________________________________________________Exemplu

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

Prof. univ. Emil Cosma

29

Secvene de cod VBA

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

scrierea sa la nceputul acesteia. Nu se pot defini dou variabile cu acelai nume


n aceeai procedur.
Exemplu______________________________________________________________________________________________
Dim Raza As Single, LungimeCerc As Single
Dim Contor As Integer
_____________________________________________________________________________________________Exemplu

Pentru ca Visual Basic s atribuie unei constante sau unei variabile un tip

dorit, trebuie utilizat un sufix:


Sufix

Tip dat

String

&

Long

Single

Double

Currency

Exemplu______________________________________________________________________________________________
Const Sold = 100@
'constanta sold este de tip Currency
Const Raza = 25.0!
'constanta Raza este de tip Single
Dim D!
'este echivalen cu: Dim D As Single
Dim A$, B$, C$
'este echivalen cu: Dim A, B, C As String

_____________________________________________________________________________________________Exemplu

Instruciunea de atribuire
Prin instruciunea de atribuire, unei variabile i se asociaz valori. Formatul ei este:
<NumeVariabil> = <expresie>
<expresie> poate fi o constant, o expresie matematic sau o alt variabil.
Exemplu______________________________________________________________________________________________
Dim Pretul As Single, Valoarea As Single
Dim Cantitatea As Integer
'...
Pretul = 34.3
Cantitatea = 10
Valoarea = Pretul * Cantitatea
_____________________________________________________________________________________________Exemplu

30

Prof. univ. Emil Cosma

Secvene de cod VBA

Declaraiile constantelor i a variabilelor pot fi explicite sau implicite, iar Basic


suport ambele tipuri de declaraii. Declararea implicit are loc o dat cu prima
instruciune de atribuire, VBA atribuind automat tipul cel mai adecvat.
Exemplu______________________________________________________________________________________________
'prin instruciunea de atribuire:
Raza = 25 'raza este considerat de tip Integer
PI = 3.14 'PI este considerat de tip Single
LungimeCerc = 2 * PI * Raza 'LungimeCerc va fi de tip Single
'dar prin instruciunea de atribuire:
Raza = 25& 'raza este considerat de tip Long

_____________________________________________________________________________________________Exemplu

Liste (arrays) de variabile


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

list reunete mai multe variabile care au acelai nume, fiind identificate n

cadrul listei printr-un indice. Limita minim implicit a indicelui este zero !.
Exemplu______________________________________________________________________________________________
'...
Dim Salariu(25) As Single
'salariul a 25 persoane
Dim Masiv3D(5, 6, 7) As Integer 'Tablou cu 3 dimensiuni
'...
Salariu(0) = 1546.23 'Salariul primei persoane
Salariu(1) = 1265.7 'Salariul celei de a doua persoane
'...
Masiv3D(2, 5, 6) = 11
_____________________________________________________________________________________________Exemplu
Liste dinamice
Prin instruciunea Dim se declar o list cu numr finit de elemente. Exist
instruciunea ReDim care permite crearea de liste dinamice. Redim urmeaz unei
instruciuni Dim la care nu se precizeaz nici o limit. Nu se poate utiliza ReDim pentru a
redimensiona o list care s-a declarat deja cu un numr finit de elemente.
ReDim poate include i clauza Preserve pentru a se conserva vechile valori ale listei.

31

Prof. univ. Emil Cosma

Secvene de cod VBA

Exemplu______________________________________________________________________________________________
Dim Salariu() As Single
'...

'list dinamic

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

'...

'se adaug elemente suplimentatre


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

ReDim Preserve Salariu(30) 'cu clauza Preserve


'nu se pierd valori
_____________________________________________________________________________________________Exemplu

Aplicaii

1. S se editeze un modul pentru declararea i afiarea urmtoarelor variabile: nume


(student), prenume, vrsta, anul (de studii), tax (pltitor de tax), alegnd tipurile
de dat adecvate.

Se lanseaz un program Office, se lanseaz Editorul Basic (Alt+F11), se insereaz un


modul avnd urmtorul coninut (declaraiile explicite cu Dim nu sunt obligatorii):

Sub DatePersonale()
Dim nume As String, prenume As String
Dim varsta As Integer, anul As Integer
Dim taxa As Boolean
nume = "Parvulescu"
prenume = "Andrei"
varsta = 21
anul = 2
taxa = True
MsgBox(nume & " " & prenume & " Vrsta " &
varsta & " Anul " & anul & " Taxa " & taxa)
End Sub
Ca urmare a executrii secvenei se va afia urmtoarea caset de text:

32

Prof. univ. Emil Cosma

Secvene de cod VBA

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


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

Secvena:

Sub Salarii()
Dim Sal(25) As Single
Sal(0) = 1543.1
Sal(1) = 1447.76
Sal(2) = 1633.34
MsgBox("Salariul mediu " & (Sal(0) + Sal(1) + Sal(2)) / 3)
End Sub
Va determina afiarea urmtoarei casete de text:

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

MyFV = Pmt *

(1 + Rate) Nper 1
Rate

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

Secvena:

Sub CalculFV()
Plata = 100
'Suma depus lunar
Dobanda = 0.06 'Dobnda este de 6%
Numar = 15
'Se fac 15 depuneri
Valoare = Plata * ((1 + Dobanda) ^ Numar - 1) / Dobanda
MsgBox("Sold " & Valoare)
End Sub
Va determina afiarea urmtoarei casete de text:

33

Prof. univ. Emil Cosma

Funcii VBA predefinite

Funcii VBA predefinite


Basic ofer utilizatorului mai multe funcii pentru a realiza diferite operaiuni
pentru care, altfel, ar trebui scrise secvene de cod. Funciile pot apare ca operanzi n
relaiile de calcul i pot avea 0, 1 sau mai multe argumente (constante sau expresii de
calcul) iar cu ajutorul lor se execut calcule sau prelucrri i se furnizeaz un rezultat.
Funcia Format
Se utilizeaz, n special, pentru a specifica modul de afiare a numerelor:
Format ( <expresie>, <strFormat>)
<expresie> poate fi o variabil, o constant sau o expresie format din acestea.
<strFormat> este una dintre valorile predefinite prezentate n tabelul urmtor sau
formatul de afiare definit de utilizator sub forma unui ir de caractere. Fiecare caracter
# indic o cifr, iar 0 precizeaz dac apar n completare zerouri, la nceput sau la
sfrit.
<strFormat>

Exemple
Format(8.6, "#.#")

8,6

Format(8.6, "#.00")

8,60

Format(8.76, "#.00")

8,76

Format(8.76, "#.0")

8,8

Format(0.1, "Percent")

10,00 %

Format(0.1, "# %")

10 %

Separarea grupurilor de 3 cifre

Format(10000,"###,### lei")

10.000 lei

Format monetar

Format(10, "Currency")

10,00 lei

Afiare cu dou zecimale

Format(10.236, "Fixed")

10,24

Format tiinific

Format(1233.07, "Scientific")

1,23E+03

True/Yes, False/No dac <expresie>

Format(0, "True/False")

False

este #0 sau 0

Format(12.1, "Yes/No")

Yes

Format("SALUT", "<")

salut

Format("salut", ">"

SALUT

Formatarea valorilor numerice

Format procentual

Formatarea string-urilor
Formatarea datelor
calendaristice

Format(Date, "Long Date")

27 martie 2007

Format(Date, "dddd, mmm d yyyy")

Mari, mar 27 2007

Date este o funcie VBA care furnizeaz data curent

34

Prof. univ. Emil Cosma

Funcii VBA predefinite

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

Descriere
Numrul ntreg mai mic sau egal
Partea ntreag

Exemple
Int(-8.4)

-9

Int(8.4)

Fix(-8.4)

-8

Fix(8.4)

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)

n baza 10 : log(x)/log(10)

Log(1000)/Log(10)

Sqr

Radical indice 2

Sqr(9)

Atn

Arctangent

Pi = 4*Atn(1)

3,1415

Sin

Sinus

Sin(Pi/2)

Cos

Cosinus

Cos(Pi)

-1

Tan

Tangent

Tan(Pi/4)

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

35

Prof. univ. Emil Cosma

Funcii VBA predefinite

Unele funcii financiare se folosesc pentru anuiti. O anuitate const dintr-o

serie de pli constante efectuate pe o perioad continu (de exemplu un


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

Descriere
Calculeaz valoarea viitoare a unei investiii
bazate pe pli periodice i constante i o rat a
dobnzii constant.

PV(rate, nper, pmt, fv, type)

ntoarce valoarea actualizat a unei investiii.


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

NPer(rate, pmt, pv, fv, type)

Furnizeaz numrul de perioade pentru o


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

Pmt(rate, nper, pv, fv, type)

Calculeaz plata pentru un mprumut bazat pe


pli constante i o rat constant a dobnzii.

Ipmt(rate, per, nper, pv, fv, type)

Determin plata dobnzii pe o perioad dat,


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

Argumentele marcate bold sunt obligatorii, celelalte sunt opionale.

Exemple______________________________________________________________________________________________
a) Pentru 13 depuneri lunare, a 100 uniti monetare, cu dobnd anual 10%,
soldul atins se poate calcula astfel:
' Definirea formatului monetar.
Fmt = "###,##0.00"
sold = FV(10 / 100 / 12, 13, -100)
MsgBox(Format(sold, Fmt))

36

Prof. univ. Emil Cosma

Funcii VBA predefinite

b) Calculul depunerii bancare pentru returnarea lunar a 150 uniti monetare


(dobnda anual 9,5%, 12 ani):
depozit= PV(9.5 / 100 / 12, 13 * 12, 150)
c) Numrul de luni necesare atingerii unui sold de 2000 uniti monetare
(depunere lunar 100, dobnda anual 9,5%):
NrdeLuni = NPer(9.5 / 100 / 12, -100, -2000)
(e necesar o rotunjire, 18,64 19)
d) Pentru un mprumut bancar de 13000 uniti bancare, pe 12 ani, dobnda
anual 9,5%, plile lunare sunt:
PlataLunara = Pmt(9.5 / 100 / 12, 12 * 12, 13000)
e) Dobnda datorat n al doilea an, pentru un mprumut de 13000 unitii
monetare, pe 12 ani, (dobnda anual 9,5%):
Dobanda2 = IPmt(9.5 / 100, 2, 12, 13000)
______________________________________________________________________________________________Exemple
Funcii pe iruri de caractere
Aceste funcii realizeaz prelucrri simbolice asupra unor iruri de caractere.
Funcia

Descriere

Exemple

Asc

Codul unui caracter

Asc("B")

66

Len

Numrul de caractere din ir

Len("Visual Basic")

12

Ucase

Litere mari

UCase("abc")

"ABC"

Lcase

Litere mici

LCase("ABC")

"abc"

LTrim

Elimina spaiile din stnga

LTrim(" def")

"def"

RTrim

Elimina spaiile din dreapta

RTrim("def ")

"def"

Trim

Elimina spaiile de la capete

Trim(" def ")

"def"

Mid

Extrage un subir

Mid("abcdef", 3, 2)

"cd"

Space

Genereaz spaii

"a" + Space(5) + "b"

"a

Replace

nlocuiete un ir cu alt ir

Replace("As","s","ce")

"Ace"

Left

Extrage un subir stnga

Left("abcef", 3)

"abc"

Right

Extrage un subir dreapta

Right("abcef", 3)

"cef"

b"

37

Prof. univ. Emil Cosma

Funcii VBA predefinite

Funcii pentru dat calendaristic i timp


Aceste funcii sunt utilizate frecvent n aplicaii: de la afiarea datei i/sau orei
curente, la transformarea din ani n zile sau din ore n minute.
Funcia

Descriere

Exemple

Now

Data si ora curent

Now

Date

Data curent

Date

17.03.2007

Time

Ora curent

Time

17:01:08

Day

Ziua

Day(Date)

17

Month

Luna

Month(Date)

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***

Diferena dintre date

DateDiff("d", Date, x)

10

Un interval de timp

DatePart("m", Date)

DatePart

***

17.03.2007 17:01:08

Primul argument reprezint intervalul de timp (d ziua, m luna, q trimestrul, y ziua

***

din an, w ziua din sptmn, ww - sptmna, yyyy anul)

Funcii pentru conversii


Se utilizeaz pentru a converti argumentul ntr-o dat de tipul specificat de funcia
utilizat.
Funcia

Exemple

Chr

Chr(65)

"A"

Str

Str(-14.34)

"-14.34"

Val

Val(" 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

Funcii pentru testarea tipului de date


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

38

Prof. univ. Emil Cosma

Funcia

Funcii VBA predefinite

Descriere

Exemple

IsDate

Argumentul este o

IsDate(#3/17/2007#)

True

IsNumeric

expresie

IsNumeric(12.3)

True

VarType

Argumentul este o

VarType("Basic")

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

Aplicaii

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

f ( x) = x 2 + x + 1 + e x
x = 7 ' x se initializeaza cu diverse valori
E = Exp(1)
f = Sqr(x ^ 2 + x + 1) + E ^ x
MsgBox ("Valoarea lui f : " & f)

2. S se scrie o secven de program prin care s se determine diferena (n ore) ntre


ora curent i o alt or a zilei.

Ora = #9:05:27 PM#


MsgBox(DatePart("h", Time - Ora))
3. Scriei o secven program prin care s determinai a cta zi de natere srbtorii
astzi.

DataNasterii = #3/20/1990#
MsgBox(DateDiff("d", DataNasterii, Date))
4. O persoan fizic depune 500 lei ntr-un cont de economii cu o dobnd anual de
11% i i planific s mai depun cte 50 de lei la nceputul fiecreia din urmtoarele

Prof. univ. Emil Cosma

39

Funcii VBA predefinite

12 luni. Ci bani va avea n cont la sfritul celor 12 luni (atenie, argumentul type
este 1)?
Rspuns: 1.194,84 lei

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


returneaz lunar 400 de lei timp de ase ani. Care este valoarea acestei sume?
Rspuns: -18.917 lei

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

7. Ct trebuie s economisii lunar ca, dup 10 ani, contul n banc s fie de 15 mii lei
la o dobnd lunar de 1% ?
Rspuns: -65,20 lei

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


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

'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)
'Afisarea sumelor
MsgBox(PlataCt & " / " & PlataVar)

Prof. univ. Emil Cosma

40

Programare structurat. Structuri de control VBA

Programare structurat. Structuri de control VBA


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

41

Prof. univ. Emil Cosma

Programare structurat. Structuri de control VBA

Secvena, tradus n instruciuni simple (instruciunea de atribuire, instruciunea de


apel subprogram, instruciuni de intrare/ieire, subprograme).
Instruciune 1

Instruciune 2

Instruciune n

Selecia, (structura alternativ) - If Then End If.

True

Instruciune 1

Condiie
False

Instruciune 2

Ciclul (iteraia) cu test iniial sau cu test final (atta timp ct, pn cnd) - Do
While, Do Until.
Instruciuni
Condiie

Instruciuni

Condiie

Introducerea/extragerea datelor (funciile InputBox i MsgBox


ntr-o form simplificat)
InputBox
Pentru efectuarea unor operaii simple de introducere a unor date (de tip String)
de la tastatur se poate folosi funcia InputBox. ntr-o form simplificat funcia are
urmtoarea sintax:
<variabil> = InputBox(<mesaj>, [<titlu>])
Exemplu______________________________________________________________________________________________
Sub test()
Dim AnulNasterii As Integer
AnulNasterii = InputBox("Nascut in anul", "Datele personale")
End Sub

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

42

Programare structurat. Structuri de control VBA

MsgBox
Funcia MsgBox este utilizat, de obicei, pentru afiarea unui mesaj, dar poate
recepiona i un rspuns concretizat prin apsarea unor butoane (Ok, Cancel, Abort,
Retry, Yes, No)
<variabil> = MsgBox(<mesaj> [,<constant>] [,<titlu>])
<constant> poate fi:
O(zero)
- va aprea doar butonul Ok
1
- butoanele Ok i Cancel
2

(<variabil> va fi 1 sau 2)
- butoanele Abort Retry i Ignore

(<variabil> va fi 3, 4 sau 5)
- butoanele Yes No i Cancel

(<variabil> va fi 6, 7 sau 2)
- butoanele Yes No

(<variabil> va fi 6 sau 7)
Exemplu______________________________________________________________________________________________
Sub test()
raspuns = MsgBox("TEST", 1)
MsgBox(raspuns)
End Sub

______________________________________________________________________________________________Exemplu

Structurile de control
Structurile selective
Instruciunea de selecie simpl
If <condiie> Then
<instruciuni 1>
[Else
<instruciuni 2>]
End If

43

Prof. univ. Emil Cosma

Programare structurat. Structuri de control VBA

Instruciunea de selecie simpl condiioneaz execuia unor seturi de instruciuni


prin evaluarea expresiei logice reprezentat n <condiie>. Dac expresia logic
<condiie> este True se va executa grupul <instruciuni 1>.
n cazul valorii False a condiiei apar dou cazuri:
dac exist clauza Else se va executa grupul <instruciuni 2>.
n absena clauzei Else nu se execut nici o instruciune, comanda terminnduse imediat.
Exemplu______________________________________________________________________________________________
Urmtoarea secven program verific dac un an este bisect sau nu (un an este
bisect dac este divizibil cu 4 I nu este divizibil cu 100 SAU este divizibil cu 400):
Sub test()
Dim ANUL As Integer
ANUL = InputBox("Anul este:") 'Se citeste ANUL
If ANUL Mod 4 = 0 And ANUL Mod 100 <> 0 Or ANUL Mod 400 = 0 Then
r = MsgBox("Anul este bisect", , ANUL)
Else
r = MsgBox("Anul nu este bisect", , ANUL)
End If
End Sub

______________________________________________________________________________________________Exemplu
Instruciunea de selecie multipl
Pentru a codifica mai multe alternative, este posibil nlnuirea mai multor instruciuni
If, dar cu ct numrul acestora este mai mare, cu att urmrirea lor devine mai dificil.
Alternativ pentru astfel de situaii este instruciunea Select Case.
Select Case <expresie>
Case <list de valori 1>

Is <condiie 1>

<instruciuni 1>

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


<instruciuni 2>
.

[Case < list de valori n>| Is <condiie n>

<instruciuni n>
[Case Else
<instruciuni>]
End Select

Prof. univ. Emil Cosma

44

Programare structurat. Structuri de control VBA

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


poate fi numeric sau caractere, se va executa un singur bloc de instruciuni.
Dac expresia are o valoare ce nu se regsete ntre valorile prevzute, se va
executa - dac s-a specificat - blocul de instruciuni de dup Case Else (altfel,
nu se execut nimic). n lista de valori, elementele listei sunt separate prin
virgul. Se poate folosi i clauza To (pentru precizarea unui interval de valori).
Exemplu______________________________________________________________________________________________
Dim selectie As Integer
selectie = InputBox("Culoarea dorita")
Select Case selectie
Case 1
Culoare = "Rosu"
Case 2, 3, 4
Culoare = "Nuanta de verde"
Case 5
Culoare = "Albastru"
Case 6 To 9
Culoare = "Nuanta de gri"
Case Else
Culoare = "Nici o Culoare"
End Select
r = MsgBox(Culoare, , selectie)

______________________________________________________________________________________________Exemplu
Selecie dup condiie. Pentru a extinde posibilitile de utilizare a structurii
alternative, se folosete un format care permite compararea expresiei cu o
valoare, folosind alt operator dect cel de egalitate (clauza Is).
Exemplu______________________________________________________________________________________________
Pentru citirea a dou note de la tastatur i afiarea unor calificative se poate utiliza
urmtoarea secven program:
Dim Nota1 As Integer, Nota2 As Integer
Nota1 = InputBox("Prima nota este:")
Nota2 = InputBox("A doua nota este:")
Media = (Nota1 + Nota2) / 2
Select Case Media
Case Is < 5
Calificativ = "Nesatisfacator"
Case Is <= 7
Calificativ = "Slab"
Case Is <= 8

Prof. univ. Emil Cosma

45

Programare structurat. Structuri de control VBA

Calificativ = "Bine"
Case Is < 10
Calificativ = "Foarte bine"
Case 10
Calificativ = "Felicitari"
Case Else
Calificativ = "Eroare"
End Select
r = MsgBox(Calificativ, , Media)

______________________________________________________________________________________________Exemplu
Structurile repetitive
Ciclul Do While cu test iniial (execut ct timp)
Do While <condiie>
<instruciuni>
[Exit Do]
<instruciuni>
Loop

ntr-un ciclu Do While grupul de instruciuni care constituie corpul ciclului este
executat att timp ct este ndeplinit condiia. Clauza Exit Do impune abandonarea
execuiei instruciunii (salt dup Loop). Ciclul se poate executa de zero, unu sau mai
multe ori.
Ciclul Do Until cu test iniial (execut pn cnd)
Do Until <condiie>
<instruciuni>
[Exit Do]
<instruciuni>
Loop

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

Prof. univ. Emil Cosma

46

Programare structurat. Structuri de control VBA

Exemplu______________________________________________________________________________________________
Pentru scrierea unui numr natural zecimal n baza de numeraie 2, se poate
folosi metoda mpririlor succesive la 2, pn la obinerea primului ct egal cu zero.
Exemplu:
6:2=3:2=1:2=0
6
2
0 _
0
1
1
Rezult c 6 (10) = 110 (2)
Dim NumarZecimal As Integer
Dim SirulResturilor(30) As Integer
Dim NumarBinar As String
NumarBinar = ""
NumarZecimal = InputBox("Numarul zecimal")
ctul = NumarZecimal
indice = 0
Do While ctul > 0
SirulResturilor(indice) = ctul Mod 2
ctul = ctul \ 2
indice = indice + 1
Loop
Do Until indice = 0
indice = indice - 1
NumarBinar = NumarBinar & SirulResturilor(indice)
Loop
r = MsgBox(NumarBinar, , NumarZecimal)

indice reprezint poziia n irul resturilor (rezultate prin mpriri succesive la


2);
SirulResturilor conine valorile cifrelor binare (dar n ordine invers) i este o
variabil de tip Array completat in ciclul Do While;
NumarBinar este irul caracterelor binare, compus n ciclul Do Until;
MsgBox afieaz numrul zecimal i numrul binar.
______________________________________________________________________________________________Exemplu
Ciclurile Do While i Do Until cu test final
Exist variante ale instruciunilor Do While i Do
condiionat a secvenei de instruciuni, cel puin o dat:

Until care permit execuia

Prof. univ. Emil Cosma

47

Programare structurat. Structuri de control VBA

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

Until <condiie>

Ciclul For Next, cu numr finit de pai


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

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


dup valorile variabilei contor <valoare>, ntr-un interval specificat prin <valoare 1> i
<valoare 2>. Variabila contor se incrementeaz implicit cu 1, dac nu este precizat
pasul (Step) sau cu valoarea <valoare 3> dac apare clauza Step. Variabila contor
primete o valoare iniial (<valoare 1>). Dup fiecare ciclu, contorul este incrementat i
comparat cu valoarea final (<valoare 2>). Dac nu s-a ajuns la valoarea final, execuia
ciclului de instruciuni se reia, n caz contrar trecndu-se la linia de dup Next. Exit For are
acelai rol ca Exit Do de la comenzile Do. . . Loop.
Exemplu______________________________________________________________________________________________
Suma primelor n numere naturale:
Dim n As Integer
n = InputBox("Valoarea lui n: ")
Suma = 0
For i = 1 To n
suma = suma + i
Next
r = MsgBox("este " & suma, ,
"Suma primelor " & n & " numere")

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

48

Programare structurat. Structuri de control VBA

Aplicaii

1. S se editeze i s se execute secvenele de program prezentate ca exemple pentru


utilizarea instruciunilor de control.
2. S se calculeze preul de vnzare al unui produs pe dou variante de adaos
comercial:

valoare *110% dac valoare 100,


preul
valoare *115% dac valoare 100

Dim valoare As Single


valoare = InputBox("Valoarea este")
If valoare < 100 Then
pretul = valoare * 110 / 100
Else
pretul = valoare * 115 / 100
End If
MsgBox("Pretul este: " & pretul)
3. Notnd cu a, b, c trei valori pozitive s se stabileasc dac segmentele de dreapt
corespunztoare acestora pot constituii un triunghi. n caz afirmativ s se
stabileasc natura acestui triunghi (oarecare, isoscel, echilateral) i s i se calculeze
perimetrul.

Trei segmente de dreapt pot forma un triunghi dac fiecare este strict mai
mic ca suma celorlalte dou.
Dim a As Single, b As Single, c As Single
a= InputBox("Latura a")
b = InputBox("Latura b")
c = InputBox("Latura c")
If a < b + c And b < a + c And c < a + b Then
perimetrul = a + b + c
Select Case True
Case a = b And b = c
mesaj = "Tringhiul este echilateral"
Case a = b Or a = c Or b = c
mesaj = "Tringhiul este isoscel"
Case Else
mesaj = "Triunghiul este oarecare"
End Select
MsgBox(mesaj & " iar perimetrul este: " & perimetrul)
Else
MsgBox("Cele trei segmente nu formeaza un triunghi")
End If

Prof. univ. Emil Cosma

49

Programare structurat. Structuri de control VBA

4. Se consider polinomul:
P(x) = a n xn + a n-1 xn-1 + + a 1 x + a 0
S se calculeze valoarea P(b) a polinomului pentru o valoare dat, b, a
necunoscutei x.

Se citesc gradul polinomului, irul coeficienilor i b. Se aplic relaiile de recuren:


P = an
P = P*b + a i ,

i=n-1, ,1, 0

Dim n As Integer, b As Integer


Dim a() As Integer
n = InputBox("Gradul polinomului")
ReDim a(n + 1)
For i = 0 To n
a(i) = InputBox("a" & i)
Next
b = InputBox("Valoarea lui b")
P = b
For i = n - 1 To 0 Step -1
P = P * b + a(i)
Next
MsgBox("Valoarea polinomului= " & P)
5. S se calculeze, folosind ciclurile cu test iniial i final, suma numerelor naturale
pare, strict mai mici dect un numr natural n dat.

Dim n As Integer
'n trebuie sa fie pozitiv
Do
n = InputBox("n=")
Loop While n <= 0
suma = 0 : i = 0
Do While i < n
suma = suma + i
i = i + 2
Loop
r = MsgBox(suma, , n)

Dim n As Integer
'n trebuie sa fie pozitiv
Do
n = InputBox("n=")
Loop Until n > 0
suma = 0 : i = 0
Do Until i >= n
suma = suma + i
i = i + 2
Loop
r = MsgBox(suma, , n)

6. Considernd un ir de numere ntregi s se calculeze maximul i minimul


elementelor din ir, precum i suma lor.

Dim sir() As Integer, n As Integer


n = InputBox("Numarul de elemente")
ReDim sir(n)
For i = 0 To n - 1
sir(i) = InputBox("Valoarea " & i + 1)
Next
max = sir(0)

Prof. univ. Emil Cosma

50

Programare structurat. Structuri de control VBA

min = sir(0)
suma = 0
For i = 0 To n - 1
suma = suma + sir(i)
If min > sir(i) Then
min = sir(i)
End If
If max < sir(i) Then
max = sir(i)
End If
Next
MsgBox("Maxim " & max & " Minim " & min & " Suma " & suma)
7. ntr-un sondaj de opinie este intervievat un eantion de n persoane, pe grupuri de
vrst. Rspunsurile posibile sunt: d (da), n (nu), x (nu tiu). S se editeze o
secven program care s contorizeze i s afieze rspunsurile intervievailor.

contor = 1
Do
raspuns = InputBox("Raspuns:", contor)
Select Case raspuns
Case "d"
da = da + 1
Case "n"
nu = nu + 1
Case "x"
x = x + 1
Case Else
Exit Do
End Select
contor = contor + 1
Loop While raspuns = "d" Or raspuns = "n" Or raspuns = "x"
MsgBox("Da:" & da & " Nu:" & nu & " Nu stiu:" & x)

Prof. univ. Emil Cosma

51

Module VBA

Module VBA
Programarea modular este un procedeu prin care mai multe instruciuni sunt
grupate n proceduri (Sub i Function) destinate realizrii n mod repetat a unor
aciuni. Acestea pot fi definite n cadrul limbajului (proceduri standard) sau de ctre
programator (proceduri utilizator). Programarea structurat combinat cu programarea
modular contribuie la creterea eficienei i productivitii n proiectarea de aplicaii.
Procedurile de dimensiuni mici, scrise pentru realizarea diverselor sarcini, n locul
programelor vaste, monolitice, concretizeaz programarea structurat. Prin divizarea
aplicaiei n mai multe proceduri se reduce efortul, o dat cu numrul de erori n
scrierea programelor. De asemenea, este simplificat ntreinerea aplicaiei.
n general, programatorii prefer s pun procedurile de utilitate general n
module. Se includ aici procedurile necesare n mai multe aplicaii. Pentru a aduga un
modul extern se acioneaz 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 pstreaz valorile pe tot timpul execuiei
programului, spre deosebire de cele declarate prin Dim sau Redim care sunt

terse din memorie la terminarea procedurii.


Exemplu______________________________________________________________________________________________
Sub test()
Static Dobanda As Single
Dobanda = 3 / 100
'...
End Sub
______________________________________________________________________________________________Exemplu

Variabile publice (globale) accesibile din orice procedur prin declaraia


Public.

Prof. univ. Emil Cosma

52

Module VBA

Exemplu______________________________________________________________________________________________
Sub test()
Static Dobanda As Single
Dobanda = 3 / 100
'...
End Sub
'...
Public rataDobanzii As Single
'...
______________________________________________________________________________________________Exemplu

Variabile private limitate la un modul sau procedur prin declaraia


Private.

Exemplu______________________________________________________________________________________________
'...
Private rataDobanzii As Single
'...
______________________________________________________________________________________________Exemplu

Observaii:

Variabilele publice i locale sunt declarate la nceput de modul.


Orice program poate conine unul sau mai multe proceduri.
Singura deosebire dintre procedurile Sub i Function este c cele de tip
Function returneaz o valoare care se atribuie unei variabile iar celelalte nu.
Din orice procedur pot fi apelate alte proceduri (apeluri n cascad).
Orice procedur apelat este cutat mai nti n cadrul seciunii curente, apoi
n modulele externe.
Execuia unei proceduri depinde de parametrii externi transmii acestuia i se
va opri la sfrit (End Sub, End Function) sau la ntlnirea instruciunii de
ieire din procedur (Exit Sub, Exit Function).
Dup executarea unei proceduri se revine n programul apelant.
O procedur poate avea atributele Private sau Public.

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

Prof. univ. Emil Cosma

53

Module VBA

Apelul procedurii i transmiterea parametrului Valoare:

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

Se consider un ir de numere a 1 , a 2 , a 3 a n-1 , a n.

Se compar, pe rnd cte dou elemente ale irului. Dac valorile lor corespund
criteriului de ordonare (cresctor sau descresctor) atunci ele rmn pe aceeai
poziie, dac nu, se interschimb:
a 1 a 2 a 3 a n-1 a n

Comparrile se reiau pn cnd nu mai e necesar nici o interschimbare.

Sub Ordonare(n As Byte, 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 citirea elementelor irului, apelul procedurii de ordonare a elementelor lui
i afiarea irului ordonat, se poate utiliza urmtoarea secven:
Sub test()
Dim a() As Single
Dim n As Byte
Dim SirOrdonat As String
SirOrdonat = ""
n = InputBox("Numarul de elemente")
ReDim a(n)
For i = 0 To n - 1
a(i) = InputBox("elementul " & i + 1)
Next
'
Call Ordonare(n, a) 'Apelul procedurii
'
For i = 0 To n - 1

Prof. univ. Emil Cosma

54

Module VBA

SirOrdonat = SirOrdonat & a(i) & " "


Next
MsgBox(SirOrdonat)
End Sub
()
O funcie ValoareTva, pentru calculul valorii TVA, poate fi definit ntr-un modul
extern:
Function ValoareTva(val As Single) As Single
ValoareTva = val * 0.19
End Function
Apelul funciei i transmiterea parametrului Valoare se poate realiza n acelai
modul sau dintr-un modul extern:
Sub test()
Dim Valoare As Single, v As Single
Valoare = InputBox("Care este valoarea?")
'
v = ValoareTva(Valoare) 'apelul functiei
'
MsgBox("Valoarea Tva:" & v)
End Sub
()
Pentru calculul sumei 1+1/2+ +1/n se definete urmtoarea funcie:
Function Suma(n As Byte)
Dim s As Single
s = 0
For i = 1 To n
s = s + 1 / i
Next
Suma = s
End Function
Apelul funciei i transmiterea parametrului n:
Sub test()
Dim n As Byte, v As Single
n = InputBox("?n")
'
v = Suma(n) 'apelul functiei
'
MsgBox("Pentru " & n & " elemente: " & v)
End Sub
______________________________________________________________________________________________Exemple
Transmiterea argumentelor prin valoare i prin referin
Exist dou variante de transmitere a argumentelor, stabilindu-se astfel dac
procedura, care le primete, le poate modifica i transmite napoi:
Dac se transmit prin valoare (cuvnt cheie ByVal), procedura apelat poate
modifica valorile, dar aceste modificri nu se vor transmite procedurii
apelante. Transmiterea prin valoare protejeaz variabilele transmise, valorile

Prof. univ. Emil Cosma

55

Module VBA

lor neputnd fi modificate n procedura apelant (procedura apelat primete


copii ale variabilelor din procedura apelant). Se recomand transmiterea
datelor prin valoare, atunci cnd modificarea lor nu e necesar sau e riscant.
Dac se transmit prin referin (cuvnt cheie ByRef), procedura apelat poate
modifica valorile variabilelor transmise, modificri care sunt apoi transmise
procedurii apelante. Transmiterea prin referin (sau adres) permite
procedurii s actualizeze variabilele, modificrile fiind percepute de variabile i
n procedura apelant. Dup ce acesta redobndete controlul, variabilele
transmise i modificate vor rmne cu noile valori.

Exemplu______________________________________________________________________________________________
Procedura Sub ValoareTva, pentru calculul valorii TVA, transmiterea parametrilor
prin referin:
Sub ValoareTva(ByRef valoare, ByRef Tva)
Tva = Valoare * 0.19
End Sub
Apelul procedurii i transmiterea parametrilor Valoare i Tva:
Sub Test()
Dim Valoare As Single, Tva As Single
Valoare = InputBox("Care este valoarea?")
'
Call ValoareTva(Valoare, Tva) 'apelul procedurii Sub
'
MsgBox("Valoarea Tva:" & Tva)
End Sub
______________________________________________________________________________________________Exemplu
Funcii recursive
O funcie este recursiv dac se apeleaz pe ea nsi.
Exemplu______________________________________________________________________________________________
Pentru calculul funciei factorial, fact, este definit urmtoarea secven de
instruciuni:
Function fact(ByVal n As Byte) As Integer
If n = 0 Then
fact = 1
Else
fact = n * fact(n - 1)
End If
End Function
Apelul funciei i
Sub
Dim
n =
'

transmiterea parametrului n:
Test()
n As Byte, f As Integer
InputBox("?n")

56

Prof. univ. Emil Cosma

Module VBA

f = fact(n) 'apelul functiei


'
MsgBox("Factorial de " & n & " este: " & f)
End Sub
______________________________________________________________________________________________Exemplu

Aplicaii

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

(1 + Rate) Nper 1
MyFV = Pmt *
Rate
Unde:
Pmt reprezint plile,
Rate este rata dobnzii,
Nper numrul de perioade.

Comparai rezultatul aplicrii ei cu valorile obinute de funcia Basic, Fv.

Funcia

Function MyFV(ByRef Rate, ByRef Nper, ByRef Pmt)


As Double
MyFV = Pmt * ((1 + Rate) ^ Nper - 1) / Rate

Apel

End Function
Sub Test()
Dim Rate As Double, Nper As Double, Pmt As Double
Rate = InputBox("Rata Dobanzii")
Nper = InputBox("Numarul de perioade")
Pmt = InputBox("Plata")
r1 = MyFV(Rate, Nper, Pmt)
r2 = FV(Rate, Nper, Pmt)
MsgBox(r1 & " " & r2)
End Sub

57

Prof. univ. Emil Cosma

Module VBA
k

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

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

Funcia

Apel

Function comb(ByRef n, ByRef k) As Long


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
Sub Test()
Dim n As Byte, k As Byte
n = InputBox("?n")
k = InputBox("?k")
MsgBox("Comb(" & n & "," & k & ")=" & comb(n, k))
End Sub

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


Relaia de calcul este:
1, n 0

Fib ( n ) 1, n 1

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

Funcia

Apel

Function Fib(ByRef n) As Long


If n = 0 Or n = 1 Then
Fib = 1
Else
Fib = Fib(n - 1) + Fib(n - 2)
End If
End Function
Sub Test()
Dim n As Byte
n = InputBox("?n")
MsgBox("al " & n & "-lea termen:" & fib(n))
End Sub

58

Prof. univ. Emil Cosma

Module VBA

4. S se calculeze cel mai mare divizor comun a dou numere, conform relaiei
recursive a lui Euclid:

x, dac y 0
cmmdc( x, y )
cmmdc( y, x mod y ) dac y 0
unde mod este operatorul modulo.

Funcia

Apel

Function cmmdc(ByRef x, ByRef y) As Long


If y = 0 Then
cmmdc = x
Else
cmmdc = cmmdc(y, x Mod y)
End If
End Function
Sub Test()
Dim x As Long, y As Long
x = InputBox("?x")
y = InputBox("?y")
MsgBox("cmmdc(" & x & "," & y & ") = " & cmmdc(x, y))
End Sub

5. S se editeze propria funcie de calcul a numrului lui Euler (e) cu patru zecimale
exacte (2,7182) folosind formula:

e 1

1 1
1

...
1! 2 ! 3!

S se compare valoarea calculat cu Exp(1).

59

Prof. univ. Emil Cosma

Module VBA

Se folosete funcia de calcul a factorialului i structura Do While, punnd condiia


3
10 k , unde n este numrul de iteraii necesare, iar 10-k este
de oprire
(n 1)!
eroarea (n cazul cerut k este 5).

Funcia

Apel

Function fact(ByRef n As Byte)


If n = 0 Then
fact = 1
Else
fact = n * fact(n - 1)
End If
End Function
Function EulMeu(ByRef k) As Single
Dim i As Byte
i = 1
EulMeu = 1
Do While 3 / fact(i + 1) > 10 ^ -k
EulMeu = EulMeu + 1 / fact(i)
i = i + 1
Loop
End Function
Sub Test()
Dim k As Byte
k = 5
MsgBox(EulMeu(k) & " " & Exp(1))
End Sub

Prof. univ. Emil Cosma

60

Formulare VBA

Form ulare VBA


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

Formulare (form-uri)
Limbajul Basic faciliteaz crearea interfeelor cu utilizatorul 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 poziioneaz controale (obiecte de interfa) care permit introducerea
sau extragerea datelor utilizatorului n mod interactiv. Controalelor din formular le sunt
asociate proprieti i metode (proceduri eveniment). Procedurile eveniment sunt
secvene de instruciuni care pot fi modificate, ca de altfel i proprietile controalelor
incluse n formular. Modificrile efectuate se reflect n aspectul formularului i n
comportamentul acestuia n diferite situaii..
n varianta Visual Basic i a produselor similare, proiectul (programul) este un
ansamblu de proceduri eveniment, cele mai multe avnd dimensiuni reduse i fiecare
tratnd un eveniment individual. O astfel de procedur este ataat unui control i se
execut numai cnd controlul respectiv intercepteaz evenimentul pentru care a fost
scris. Altfel spus, un program va rspunde unui eveniment care se produce la execuie
numai dac a fost scris o procedur pentru evenimentul respectiv; n caz contrar,
evenimentul va fi ignorat. Fiecare control al unui formular (ca i formularul nsui)
suport mai multe evenimente. De exemplu, un buton poate rspunde la evenimentul
clic dac pentru acest eveniment este scris o procedur. Atunci cnd aplicaia se va
lansa n execuie, iar utilizatorul va efectua clic pe buton (se produce n acest fel
evenimentul), va fi lansat automat n derulare procedura definit.

Prof. univ. Emil Cosma

61

Formulare VBA

Proprieti i metode
Un formular poate conine mai multe obiecte (controale), el nsui fiind considerat
un obiect. Fereastra Properties permite alegerea controlului i a proprietii a crei
valoare se schimb, ca de exemplu:
Proprietatea Caption este destinat stabilirii unui titlu (denumire) pentru
formular sau control.
Proprietatea (Name) permite atribuirea unor nume controalelor. VBA stabilete
valori implicite proprietii (Name) cum ar fi:
UserForm1, UserForm2
pentru formulare (prin convenie, numele
formularelor utilizator vor fi prefixate de cuvntul frm, de exemplu:
frmPrincipal, frmCalcul);
Label1, Label2 pentru etichete (prefix convenional: lbl);
CommandButton1, CommandButton2 pentru butoane (prefix: btn);
TextBox1, TextBox2 pentru casete de text (prefix: txt).
Aceste nume ale controalelor pot fi folosite aa cum au fost definite de VBA ns
utilizatorul are posibilitatea stabilirii unor denumiri proprii.

O categorie special de proprieti o reprezint metodele. Metodele sunt secvene


de instruciuni asociate diferitelor obiecte la activarea/dezactivarea acestora.
Designer-ul ofer posibilitatea modificrii unei proprieti prin comenzi de
atribuire, referirea la proprietatea respectiv fcndu-se prin construcia:

<nume formular>.<nume proprietate>


Referirea la un control din cadrul unui formular se realizeaz printr-o construcie
asemntoare, adic:

<nume formular>.<nume obiect>.<nume proprietate>


Exist construcii speciale, mai scurte, cum ar fi Me - care indic formularul
curent.
Exemplu______________________________________________________________________________________________
'
Me.Caption = "Actualizare"
'modific proprietatea Caption (titlu) a formularului
'
UserForm2.Label1.Caption = "Numele persoanei"
'modific proprietatea Caption a obiectului Label1
'
Me.Hide
'execut metoda Hide (ascundere)ataat formularului

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

62

Formulare VBA

Proprietatea Caption
n general, proprietatea Caption a unui obiect controleaz textul pe care
respectivul obiect l afieaz. Proprietatea Caption a unui formular stabilete titlul
form-ului.
Dac nu este afiat fereastra de controale (Toolbox), avnd formularul deschis n
mediul de proiectare, din meniul View (afiare) se selecteaz opiunea 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 obiectului n formular


sau clic pe obiect i apoi clic pe formular).
Dac nu este afiat fereastra de proprieti a unui formular, din meniul View
(afiare) se selecteaz opiunea Properties Window (fereastra de proprieti) sau
butonul
dintre butoanele standard. Pentru un formular care conine controale sau
componente, se poate folosi i lista derulant din fereastra Properties pentru a selecta
obiecte din formular. Unui obiect selectat i se pot configura proprietile.
Pentru a configura proprietatea Caption, a unui formular, n fereastra de
proprieti:

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


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

Pentru a configura proprietatea Caption din cod:

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

Se folosete cuvntul cheie Me pentru a referi formularul n interiorul procedurii


de tratare a unui eveniment Click pe un buton:

63

Prof. univ. Emil Cosma

Formulare VBA

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.

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

Avnd formularul deschis, n fereastra Properties se selecteaz opiunea


StartUpPosition.

n coloana din dreapta, se selecteaz 2-CenterScreen.


Se ruleaz proiectul. Fereastra bazat pe form va
aprea n centrul ecranului.

Proprietile Height i Width


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

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

Prof. univ. Emil Cosma

64

Formulare VBA

mediul de proiectare, pn ce formularul atinge dimensiunile dorite.


Schimbrile fcute n acest fel sunt reflectate, n fereastra Properties, de
Width (lime) i Height (nlime).
Setnd n fereastra de proprieti dimensiunile Width i Height.
Configurnd n cod valorile pentru Width i Height.

Pentru a schimba dimensiunile unui formular din cod:

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

Se folosete cuvntul cheie Me pentru a referi formularul n interiorul procedurii


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

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


la noile valori.
Proprietile ForeColor i BackColor

Proprietatea ForeColor stabilete culoarea elementelor grafice i, mai


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

Utilizarea controalelor
Includerea controalelor n cadrul unui formular se realizeaz prin introducerea
(drag&drop) unor obiecte (CommandButton, Label, TextBox, etc.) n acest
formular. Pentru aceasta, se acioneaz butonul corespunztor din Toolbox i se
stabilete poriunea dreptunghiular (zona) din formular unde va fi afiat obiectul.

Prof. univ. Emil Cosma

65

Formulare VBA

Practic, obiectul va fi desenat (se poziioneaz cursorul mouse-ului n colul stnga-sus


al zonei de afiare, se ine apsat butonul stng i se trage cursorul spre colul dreaptajos). O dat plasat pe formular, proprietile (starea) unui control pot fi vizualizate i
modificate n fereastra Properties", iar comportamentul su poate fi modelat prin scrierea
procedurilor eveniment. Toate controalele sunt obiecte i, ca urmare, rspund la
evenimentele declanate de entitile exterioare (utilizator, alte controale) prin intermediul
procedurilor eveniment.

Multe proprieti enumerate anterior pentru formulare se pot aplica nu numai

acestora ci i controalelor din formular.


Cele mai importante controale:
Buton
Etichet
Caset de text
Caset de validare
Cadru de grupare
Buton radio (opiune)
Caset cu list
List derulant
Caset de imagine
Generator de valori

Controlul CommandButton este tipic pentru

startul evenimentelor,

pentru

cutarea i nchiderea formularelor, etc. Codul program de executat este plasat n


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

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

Prof. univ. Emil Cosma

66

Formulare VBA

ListBox, etc.
Proprietile cele mai importante ale controlului Label:
Proprietate

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

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

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

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

Caption
Este proprietatea cea mai des utilizat i se refer la coninutul efectiv al
etichetei. Poate fi stabilit att la proiectare, ct i n momentul execuiei.

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

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

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

Heigth
nlimea etichetei, n pixeli.

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

PicturePosition
Alinierea imaginii n cadrul etichetei.

TextAlign

67

Prof. univ. Emil Cosma

Formulare VBA

Modalitatea de aliniere a textului n cadrul suprafeei etichetei. Valori:


FmTextAlignLeft, FmTextAlignCenter, FmTextAlignRight. Implicit alinierea
textului este la stnga.

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

Width
Limea etichetei, n pixeli.
Exemplu______________________________________________________________________________________________
Pe un formular se introduce o etichet cu numele
lblPoza, proprietatea Visible avnd valoarea
False. O imagine de
proprietatea Picture:

fundal

este

fixat

prin

n procedura eveniment a butonului se scriu urmtoarele linii de cod care au


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

apsrii

butonului,

la

rularea

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

68

Formulare VBA

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

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

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

BorderStyle
Tipul marginii casetei de text. Sunt disponibile 2 variante:
0-FmBackStyleTransparent;
1-FmBackStyleOpaque.

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

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

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

MousePointer
Stabilete felul cursorului mouse-ului atunci cnd acesta se afl pe caseta de text.

Prof. univ. Emil Cosma

69

Formulare VBA

Valorile pot fi alese dintr-o list: AppStarting, Arrow, Cross, Ibeam, NoDrop,
SizeAll

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

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

ScrollBars
Stilul barelor de derulare aferente casetei:
None (nu este prezent nici o bar de derulare);
Horizontal (bar de derulare orizontal, sub caseta de text);
Vertical (bar de derulare vertical, n dreapta casetei de text);
Both (bare de derulare vertical i orizontal). n cazul n care se
alege aceast variant, se recomand testarea ei n acelai timp cu
proprietatea Multiline.

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

70

Prof. univ. Emil Cosma

Formulare VBA

txtMarca

txtCursEuro

txtPretEuro

lblInfo

btnInfo

Procedura de preluare a informaiilor i de afiare a rezultatelor prelucrrii lor


(asociat butonului Info) conine urmtoarele instruciuni:
Private Sub btnInfo_Click()
If IsNumeric(txtPretEuro.Text) And
IsNumeric(txtCursEuro.Text) Then
PretEuro = Val(txtPretEuro.Text)
CursEuro = Val(txtCursEuro.Text)
PretLei = PretEuro * CursEuro * 1.19
lblInfo.Caption = "Autoturismul " & txtMarca.Text
& vbCrLf & "Are pretul " & PretLei &
"lei (cu TVA)"
'Observaie: vbCrLf -> pentru rnd nou
Else
MsgBox("Eroare! Valoare numeric!")
End If
End Sub
______________________________________________________________________________________________Exemplu

Proprietatea Text a casetelor de text returneaz ntotdeauna o valoare de tip


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

Controlul CheckBox creeaz posibilitatea de se specifica anumii parametri prin


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

Prof. univ. Emil Cosma

71

Formulare VBA

Principalele proprieti:
Proprietate

Name
Nume VBA: CheckBox1, CheckBox2, Convenie prefix: chk.

Alignment
Specific locul de plasare a cadrului de bifare n cadrul controlului. Aceast
proprietate poate lua valorile Left i Right. Right este implicit.

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

Font
Stilul fontului cu care este scris textul nsoitor.

ForeColor
Culoarea cu care este scris textul nsoitor.

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

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

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

Prof. univ. Emil Cosma

72

Formulare VBA

Un rezultat al execuiei formularului ar putea arta astfel:

checkBox bifat

Rezultatul prelucrrii

______________________________________________________________________________________________Exemplu

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

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

Caption
Textul care apare n antetul grupului.

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

Font
Tipul fontului cu care este scris titlul grupului.

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

Prof. univ. Emil Cosma

73

Formulare VBA

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

Name
Nume VBA: OptionButton1, OptionButton2, Convenie prefix: rbn.

Alignment
Locul de plasare a cadrului de bifare n cadrul controlului. Aceast proprietate
poate lua valorile Left i Right. Right este implicit.

Caption
irul de caractere care nsoete butonul radio.

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

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

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

Prof. univ. Emil Cosma

74

Formulare VBA

Codul care completeaz versiunea anterioar a formularului este urmtorul:


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

______________________________________________________________________________________________Exemplu

Controlul ListBox dintr-un formular afieaz o list de una sau mai multe
elemente. Dac numrul total al elementelor excede numrul celor care pot fi afiate,
un scroll bar este automat adugat la acel control. Prin proprietatea MultiSelect
elementele listei pot fi afiate n coloane multiple (implicit MultiSelect este
fmMultiSelectSingle).
Funcia ListIndex returneaz o valoare ntreag care corespunde primului
element selectat din list. Dac nu este selectat nici un element, valoare lui ListIndex

Prof. univ. Emil Cosma

75

Formulare VBA

este -1. Dac este selectat primul element din list, valoarea lui ListIndex este 0.
Funcia ListCount furnizeaz numrul elementelor listei.
n esen, controlul ListBox

poate conine mai multe valori care s fie

gestionate pe o suprafa fix de pe formular, accesul la valorile ascunse realizndu-se


prin intermediul barelor de derulare. Funcia Clear permite tergere elementelor listei
(golirea listei).
Proprietile importante ale unei casete cu list sunt enumerate n tabelul
urmtor:
Proprietate

Name
Nume VBA: ListBox1, ListBox2, Convenie prefix: lst.

BorderStyle
Marginea casetei cu list:
None: nu apare nici o bordur;
Single - bordur.

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

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

Font
Stilul fontului pentru elementele din cadrul listei.

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

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

TextAlign
Implicit, elementele unei liste sunt aliniate la stnga. Se pot face i alinieri la

76

Prof. univ. Emil Cosma

Formulare VBA

dreapta (de regul pentru elemente de tip numeric) sau la centrul listei.

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

Atunci cnd se va lansa formularul n execuie lista conine autoturismele specificate.

lstAuto

Se pot include, n formular, dou butoane:

btnAdauga
btnSterge

Adugarea unei mrci noi de autoturism:

77

Prof. univ. Emil Cosma

Formulare VBA

Private Sub btnAdauga_Click()


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

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


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

______________________________________________________________________________________________Exemplu

Caseta cu list derulant permite memorarea unei liste de elemente n mod


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

Prof. univ. Emil Cosma

78

Formulare VBA

Cteva proprieti ale ComboBox-ului:


Proprietate

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

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

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

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

Font
Stilul caracterelor folosite pentru afiarea elementelor.

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

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

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

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

Visible
Dac este True, controlul este vizibil pe formular; n caz contrar, nu este
vizibil pentru utilizator.
Exemplu______________________________________________________________________________________________
n exemplul urmtor se utilizeaz dou ComboBox-uri (cboMarca i cboPret).
Cu ajutorul procedurii Sub UserForm_Initialize(), se introduc elementele
listei (la fel ca n exemplul anterior - pentru ListBox):

79

Prof. univ. Emil Cosma

Formulare VBA

cboMarca

cboPret

btnInfo
lblInfo

Pentru afiarea elementelor curente se folosete proprietatea Text, care


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

Private Sub btnInfo_Click()


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

Acest control permite afiarea pe suprafaa formularului a unor imagini preluate din
fiiere grafice. Formatele suportate sunt multiple: bmp, gif, jpg, ico etc. Referitor la
aspectul vizual, cele mai importante proprieti sunt urmtoarele:
Proprietate

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

Prof. univ. Emil Cosma

80

Formulare VBA

BackStyle
Fundalul casetei:
Opaque (implicit);
Transparent.

BorderStyle
Stilul marginii casetei:
None: nici o bordur;
Single: bordur (implicit);

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

Controlul SpinButton ofer o modalitate de a selecta o valoare numeric dintrun anumit interval.
Proprietile definitorii ale generatorului de valori sunt urmtoarele:
Proprietate

Name
Nume VBA: SpinButton1, SpinButton2, Convenie prefix: spb.

Enabled
Proprietate de tip boolean:
True: controlul este disponibil pentru a fi modificat de utilizator;
False: utilizatorul nu poate modifica starea controlului.

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

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

Min
Limita inferioar a intervalului n care poate naviga utilizatorul.

Orientation
Orientarea butoanelor de incrementare/decrementare:
Auto;

81

Prof. univ. Emil Cosma

Formulare VBA

Vertical;
Horizontal
Value
Reprezint valoarea curent a generatorului.

Visibile
Dac este True, generatorul este vizibil pentru utilizator; dac este False,
este ascuns.
Exemplu______________________________________________________________________________________________
ntr-un formular se introduc urmtoarele controale:
Controlul spbVarsta (cu proprietile Min = 1, Max = 120);
Eticheta lblInfo.
Incrementarea valorii curente

lblInfo

Decrementarea valorii curente

Proprietatea Value se modific dinamic, n funcie de aciunile utilizatorului


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

Modificarea proprietilor din cod


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

82

Prof. univ. Emil Cosma

Formulare VBA

activarea altor formulare din formularul curent.


Exemplu______________________________________________________________________________________________
Avnd formularul UserForm1, deschis, n mediul de proiectare (cu un buton,
CommandButton1 inclus) se adaug un nou formular.
Se deschide editorul de cod (dublu-clic pe butonul Button1). Se aplic metoda
Show pentru activarea celui de al doilea formular:
Private Sub CommandButton1_Click()
Me.Caption = "Eu sunt formularul 1"
UserForm2.Caption = "Eu sunt formularul 2"
UserForm2.Show

End Sub

La rularea aplicaiei rezult:

______________________________________________________________________________________________Exemplu
Cnd se impune modificarea mai multor proprieti ale unui control se utilizeaz,
de multe ori, structura:
With <control>
<instruciuni>
End With
Exemplu______________________________________________________________________________________________
Se creeaz un formular;
Se introduce, n formular, controlul ListBox cu numele lstCardinale;
Codul urmtor realizeaz iniializarea valorilor din list:
Private Sub UserForm_Initialize()
With lstCardinale
.AddItem "Nord"
.AddItem "Sud"
.AddItem "Est"
.AddItem "Vest"
.ListIndex = 3
End With
End Sub

Prof. univ. Emil Cosma

83

Formulare VBA

Rularea formularului:

______________________________________________________________________________________________Exemplu

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

coleciile sunt indexate de la 1, n tablourile i coleciile asociate formularelor se


folosete indexarea de la 0. De aici selectarea ultimei intrri (cu numrul de
ordine 4) din list prin instruciunea ListIndex = 3.
Prin setarea proprietilor unui control i aplicarea metodelor n timpul execuiei,
se pot efectua modificri ntr-un dialog utilizator care se execut, modificri aprute ca
rspuns la aciunile i alegerile utilizatorului. De exemplu, accesibilitatea unor controale
poate fi controlat prin modificarea proprietii Enabled. Dac proprietatea este setat
pe False, atunci utilizatorul nu poate accesa controlul.
Exemplu______________________________________________________________________________________________
Se creeaz un formular coninnd dou butoane radio i o caset de validare.
Codul urmtor restricioneaz accesul la radio butoane:
Private Sub CheckBox1_Click()
With Me 'Me se refer la formularul curent
If .CheckBox1.Value = True Then
.OptionButton1.Enabled = False
.OptionButton2.Enabled = False
Else
.OptionButton1.Enabled = True
.OptionButton2.Enabled = True
End If
End With
End Sub
Efectul bifrii/debifrii casetei de validare:

______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

84

Formulare VBA

Prin intermediul metodei SetFocus se controleaz focalizarea. Un control care


are focusul este cel care rspunde la intrrile din tastatur.
Exemplu______________________________________________________________________________________________
Pe un formular se introduc dou etichete (Textul 1 i Textul 2) i dou CheckBoxuri.
Procedurile care trateaz evenimentele Click ale etichetelor impun focusul:
Private Sub Label1_Click()
CheckBox1.SetFocus
End Sub
Private Sub Label2_Click()
CheckBox2.SetFocus
End Sub
Efectul click-ului pe cele dou etichete:

______________________________________________________________________________________________Exemplu
Valorile introdu-se, utiliznd controalele TextBox, sunt de tip String. Pentru
colectarea unor valori numerice este necesar o conversie (de obicei cu funcia Val).
Deoarece conversia string numeric ia n considerarea caracterele, pn la primul ce
nu reprezint informaie numeric, se impune validarea irului introdus prin funcia
IsNumeric.
Exemplu______________________________________________________________________________________________
Pe un formular se introduc dou casete de text i un buton (btnValidare).
Procedura care trateaz evenimentul Click al butonului afieaz un mesaj de
eroare realiznd focusul pe TextBox-ul care a generat eroarea:
Private Sub btnValidare_Click()
If Not IsNumeric(TextBox1.Text) Then
MsgBox ("Eroare 1")
TextBox1.SetFocus
End If
If Not IsNumeric(TextBox2.Text) Then
MsgBox ("Eroare 2")
TextBox2.SetFocus
End If
End Sub
Efect cnd se introduce, de exemplu, o valoare eronat n al doilea TextBox:

Prof. univ. Emil Cosma

85

Formulare VBA

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

Pentru ca, la descrcarea formularului, s fie memorat valoarea introdus n


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

Pentru reutilizarea formularelor proiectate, acestea se export ca un fiier

.frm care poate fi importat n alte aplicaii:


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

86

Prof. univ. Emil Cosma

Formulare VBA

Aplicaii

1. S se editeze un formular pentru calcule aritmetice.

Controale
Control

Tip

Proprietate

Valoare
proprietate

Formular

Caption

Calculator

Label1

Etichet

Caption

Primul operand

Label2

Etichet

Caption

Al doilea operand

Label3

Etichet

Caption

Rezultatul->

txtA

TextBox

TextAlign

Right

ForeColor

Blue

Font, Size

10

Font,FontStyle

Bold

TextAlign

Right

ForeColor

Green

Font, Size

10

Font,FontStyle

Bold

ForeColor

Red

Font, Size

12

Font,FontStyle

Bold

UserForm1

txtB

lblRezultat

TextBox

Etichet

87

Prof. univ. Emil Cosma

lblOperator

btnAdun

btnScad

btnInm

btnImp

btnPt

Etichet

Buton

Buton

Buton

Buton

Buton

Formulare VBA

TextAlign

Center

Font, Size

10

ForeColor

Red

Font,FontStyle

Bold

Caption

ForeColor

Blue

Font, Size

18

Font,FontStyle

Bold

Caption

ForeColor

Red

Font, Size

18

Font,FontStyle

Bold

Caption

ForeColor

Green

Font, Size

18

Font,FontStyle

Bold

Caption

ForeColor

Purple

Font, Size

18

Font,FontStyle

Bold

Caption

ForeColor

Black

Font, Size

18

Font,FontStyle

Bold

Metode
Control

Secvena de cod

Private Sub btnAdun_Click()


If IsNumeric(txtA.Text) And
IsNumeric(txtB.Text) Then
A = Val(txtA.Text)
B = Val(txtB.Text)
Rezultat = A + B
lblOperator.Caption = "+"
lblRezultat.Caption = Rezultat
Else
MsgBox("Eroare! Valoare numeric!")
End If

88

Prof. univ. Emil Cosma

Formulare VBA

End Sub
Observaii:

Deoarece valorile introduse n TextBox-urile txtA i txtB sunt


de tip String este necesar funcia de convertire Val

Cu funcia IsNumeric se testeaz dac valoarea introdus este


o valoare numeric

Secvenele de cod sunt la fel, doar


c se schimb operatorii de calcul.

2. S se editeze un formular pentru calcule financiare:

Controale
Control

Tip

Proprietate

Valoare
proprietate

Formular

Caption

Calcule financiare

Label1

Etichet

Caption

Rata dobanzii

Label2

Etichet

Caption

Numarul de perioade

Label3

Etichet

Caption

Valoare

Label4

Etichet

Caption

Rezultat

UserForm1

89

Prof. univ. Emil Cosma

TextBox

txtD

Formulare VBA

TextAlign

Right

Font, Size

10

Font,FontStyle

Bold

txtN

TextBox

La fel cu txtD

txtV

TextBox

La fel cu txtD

Etichet

Font, Size

12

Font,FontStyle

Bold

ForeColor

Red

Caption

Functia

Caption

FV

ForeColor

Red

Font,FontStyle

Bold

Value

True

Caption

PV

ForeColor

Green

Font,FontStyle

Bold

Caption

Pmt

ForeColor

Blue

Font,FontStyle

Bold

Caption

Calculeaza

Font, Size

12

Font,FontStyle

Bold

lblRezultat

frmFunctia
B

Frame

rbnFV

u
t

rbnPV

e
Radio

rbnPmt

Buton

btnCalcul

Metode
Control

UserForm1

rbnFV

rbnPV

Secvena de cod

Dim selectie As Byte


Private Sub UserForm_Initialize()
selectie = 1
End Sub
Private Sub rbnFv_Click()
selectie = 1
End Sub
Private Sub rbnPV_Click()
selectie = 2

90

Prof. univ. Emil Cosma

rbnPmt

Formulare VBA

End Sub
Private Sub rbPmt_Click()
selectie = 3
End Sub
Private Sub btnCalcul_Click()
If IsNumeric(txtD.Text) And
IsNumeric(txtN.Text) And
IsNumeric(txtV.Text) Then
D = Val(txtD.Text)
N = Val(txtN.Text)
V = Val(txtV.Text)
Select Case selectie
Case 1
lblRezultat.Caption = FV(D, N, V)
Case 2
lblRezultat.Caption = PV(D, N, V)
Case 3
lblRezultat.Caption = Pmt(D, N, V)
End Select
Else
MsgBox("Eroare! Valoare numeric!")
End If
End Sub

Prof. univ. Emil Cosma

91

Documente Office active

Docum ente Office active

Controalele ActiveX
Controalele ActiveX (n cazul formularelor mai sunt denumite i controale OLE,
pentru a face diferenierea) pot fi plasate i direct n documentele aplicaiilor:
documente Word, foi de calcul Excel, diapozitive PowerPoint. Inserarea lor este facilitat
de tab-ul Developer, Controls. Aceste controale au atribute cu proprieti ajustabile,
recunosc evenimente. Prin scrierea procedurilor eveniment, interfaa cu utilizatorul
proiectului poate fi personalizat i definit corespunztor.
Pot fi adugate controale unui document, foi de calcul electronic sau slide pentru
a le transforma n obiecte interactive, n acelai mod n care controalele se adaug unui
formular. Astfel, unui document, i se pot aduga casete de text, liste, butoane radio,
pentru a-l transforma ntr-un formular activ (online). Se pot aduga controale (Form
Controls) pe o foaie de calcul pentru a executa proceduri macro uzuale etc.
Dei modul de operare al controalelor ActiveX este foarte asemntor cu cel al
controalelor OLE exist unele deosebiri:

Adugarea controalelor se realizeaz cu ajutorul cutiei de unelte ActiveX


Controls (i nu Toolbox ca n VBE). Afiarea acestei cutii se realizeaz din
tab-ul Developer, Controls:

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 acionarea 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.
Proprietile controalelor se stabilesc dup ce se acioneaz butonul
.

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


tratrile acestora sunt diferite.

92

Prof. univ. Emil Cosma

Documente Office active

Word

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

Pre
Aparat foto
Sony digital DSC-H2

1188

Laptop
Acer TM2492NWLMi

1978

http://www.sony.com/

http://global.acer.com/

Telefon GSM
Motorola V3

428

http://www.motorola.com/

Coul de cumprturi:

Suma totala de plat:


0

Goleste Cosul

Pe layer-ul de text:
Se introduc textele: Produs, Pre, Aparat foto, Laptop, Telefon GSM, Coul de
cumprturi:, Suma totala de plat:.
Se includ imaginile (Insert Picture).
Se stabilesc Hyperlink-urile:http://www.sony.com/, http://global.acer.com/,
http://www.motorola.com/ care pot fi activate prin Ctrl+Click.

93

Prof. univ. Emil Cosma

Documente Office active

n Design Mode se creeaz urmtoarele controale:


Control

Tip

lblArt1

Etichet

Caption

Sony digital DSC-H2

lblArt2

Etichet

Caption

Acer TM2492NWLMi

lblArt3

Etichet

Caption

Motorola V3

lblPret1

Etichet

Caption

1188

lblPret2

Etichet

Caption

1978

lblPret3

Etichet

Caption

428

lblTotal

Etichet

Caption

cboCos

Proprietate

Valoare proprietate

ComboBox

btnAdaug1

Buton

Caption

btnAdaug2

Buton

Caption

btnSterg

Buton

Caption

btnReset

Buton

Caption

Controalelor introduse li se asociaz urmtoarele proceduri:


Private Sub btnAdaug1_Click()
cboCos.AddItem (lblPret1.Caption + "RON " +
lblArt1.Caption)
lblTotal.Caption = Val(lblPret1.Caption) +
Val(lblTotal.Caption)
End Sub
Private Sub btnAdaug2_Click()
cboCos.AddItem (lblPret2.Caption + "RON " +
lblArt2.Caption)
lblTotal.Caption = Val(lblPret2.Caption) +
Val(lblTotal.Caption)
End Sub
Private Sub btnAdaug3_Click()
cboCos.AddItem (lblPret3.Caption + "RON " +
lblArt3.Caption)
lblTotal.Caption = Val(lblPret3.Caption) +
Val(lblTotal.Caption)
End Sub
Private Sub btnReset_Click()
lblTotal.Caption = 0

94

Prof. univ. Emil Cosma

Documente Office active

cboCos.Clear
End Sub
Private Sub btnSterg_Click()
If cboCos.ListCount >= 1 Then
If cboCos.ListIndex <> -1 Then
lblTotal.Caption = Val(lblTotal.Caption) -
Val(cboCos.Text)
cboCos.RemoveItem (cboCos.ListIndex)
cboCos.ListIndex = -1
cboCos.Text = "" 'valoarea afiat este nul
'(irul vid)
End If
End If
End Sub
Cteva precizri:
Proprietile controalelor au fost tratate, mai pe larg, ntr-un capitol
anterior.
Prin acionarea butonului

, n ComboBox, se introduce preul i

denumirea corespunztoare produsului iar lista de produse poate fi


consultat prin desfurarea listei derulante:

Un produs poate fi introdus n co de mai multe ori.


Suma total de plat se calculeaz. Pentru calculul acesteia este necesar
conversia string numeric, prin funciei Val.
tergerea unui produs din list (de exemplu Sony digital DSC-H2 care apare de
dou ori) este facilitat de funcia RemoveItem :

Proprietatea ListIndex stabilete elementul selectat (ListIndex = -1


semnific sfritul listei).
Golirea coului de cumprturi este concretizat prin funcia Clear (se
terg toate elementele din list).
______________________________________________________________________________________________Exemplu

95

Prof. univ. Emil Cosma

Documente Office active

VBA interacioneaz cu documentul asociat. De exemplu se poate face


inserarea unui text pe poziia curent a cursorului:
'
ActiveDocument.Content.InsertAfter Un text inserat
'
Proprietile controalelor se pot modifica prin program. De exemplu
stabilirea titlului (caption) unui buton:
Private Sub CommandButton1_Click()
If CommandButton1.Caption = "Start" Then
CommandButton1.Caption = "Stop"
Else
CommandButton1.Caption = "Start"
End If
End Sub

Controale Content (Content controls)


Controalele Content sunt destinate editrii abloanelor sau formularelor (de
completat). Aceste controale sunt vizibile n tab-ului Developer:
Text

Picture

Combo Box

Rich Text

Drop-Down List

Date Picker

Rich Text

Paragraf

Text

Text (textul poate fi introdus pe mai multe


linii)

Picture
Combo Box

Imagine (jpg, bmp, etc.)

Drop-Down List
Date Picker

List (nu permite editarea)

Lista derulant (poate fi selectat un element


din list, sau se poate introduce)
Dat calendaristic (din calendarul sistem)

Proprieti:
generale: Title, Tag;
pentru redactare: tergere, editare;
pentru caracteristici specifice (n cazul de fa pentru un control Drop-down
List).

96

Prof. univ. Emil Cosma

Documente Office active

Exemplu______________________________________________________________________________________________
ntr-un document Word se creeaz un formular pe care se introduc urmtoarele
controale Content: Text, Drop-Down List, Rich Text, Date Picker:
Text

Drop-Down List
Rich Text

Date Picker

se redacteaz coninutul vizual al acestor controale (nume


i prenume, opiune, cteva motive, data solicitrii):

97

Prof. univ. Emil Cosma

Controlul Drop-Down

Documente Office active

List este o list derulant cu

dou elemente:
Dup ieirea din

formularul poate fi completat:

______________________________________________________________________________________________Exemplu

Excel
Apare necesitatea, de multe ori, ca acelai proces de calcul, s se desfoare n mai
multe zone (domenii de celule) ale foii de calcul electronic. Prin procedeul Recording se fac
limitri la domeniul de celule curent, memornd-se adresele de celule.
Exemplu______________________________________________________________________________________________
Crearea unei macrocomenzi pentru calcule financiare (funcia FV):
Record Macro (Macro Name : functiaFV, Shortcut key: Ctrl+f);
Editarea datelor pentru calcul i a funciei FV:

Comutare n VBE i vizualizarea instruciunilor generate:


Sub functiaFV()
'
'functiaFV Macro
'
'Keyboard Shortcut: Ctrl+f
'
ActiveCell.FormulaR1C1 = "Rata dobanzii"
Range("A2").Select
ActiveCell.FormulaR1C1 = "Numar de plati"

Prof. univ. Emil Cosma

98

Range("A3").Select
ActiveCell.FormulaR1C1
Range("A4").Select
ActiveCell.FormulaR1C1
Range("C1").Select
ActiveCell.FormulaR1C1
Range("C2").Select
ActiveCell.FormulaR1C1
Range("C3").Select
ActiveCell.FormulaR1C1
Range("C4").Select
ActiveCell.FormulaR1C1
End Sub

Documente Office active

= "Plata"
= "Valoare FV"
= "0.1"
= "2"
= "100"
= "=FV(R[-3]C,R[-2]C,R[-1]C)"

Principala deficien a acestei macroinstruciuni este faptul c, de cte ori se


dorete executarea ei, derularea calculelor are loc doar pe domeniul de celule A1:C4 o
zon fix din foaia electronic de calcul. Dac se dorete repetarea calcului n alte zone
ale foii de calcul electronic instruciunile generate n modul Recording pot fi nlocuite:
Sub functiaFV()
'
'functiaFV Macro
'
'Keyboard Shortcut: Ctrl+f
'
l = ActiveCell.Row
c = ActiveCell.Column
'
Cells(l, c).Value = "Rata dobanzii"
Cells(l + 1, c).Value = "Numar de plati"
Cells(l + 2, c).Value = "Plata"
Cells(l + 3, c).Value = "Valoare FV"
'
Cells(l, c + 2).Value = 0
Cells(l, c + 2).Activate
a1 = ActiveCell.Address
'
Cells(l + 1, c + 2).Value = 0
Cells(l + 1, c + 2).Activate
a2 = ActiveCell.Address
'
Cells(l + 2, c + 2).Value = 0
Cells(l + 2, c + 2).Activate
a3 = ActiveCell.Address
'
Cells(l + 3, c + 2).Value =
"=FV(" + a1 + "," + a2 + "," + a3 + ")"
'
Cells(l, c + 2).Activate
'
End Sub
______________________________________________________________________________________________Exemplu

Prof. univ. Emil Cosma

99

Documente Office active

Modificrile efectuate permit desfurarea calculului n orice zon a foii de calcul.


Valorile necesare calculului pot fi introduse (reintroduse) n noul domeniu de celule,
funcia de calcul returnnd valoarea rezultat:

Cteva precizri:
Variabilele l i c rein adresa (colul stnga sus al noului domeniu de celule);
Cu Cells(, ...).Value se afieaz valorile textuale i numerice (datele de intrare
sunt iniializate cu zero);
Cu Cells(, ...).Activate sunt activate celule de calcul pentru a reine adresele
lor;
a1, a2, a3 sunt adresele celulelor ce conin datele necesare calculului;
Funcia FV este scris textual i rezult prin concatenarea unor iruri de
caractere.
Macroinstruciunea definit anterior se lanseaz prin shortcut-ul Ctrl+f, dar
poate fi asociat i unui control (ActiveX sau Form).
Se pot aduga controale, la caiete sau foi de calcul, lng datele pe care le
controleaz, astfel nct operarea n foaia de calcul s se efectueze ct mai cursiv i mai
pe neles.
n Excel, controalele din grupul Controls al tab-ului Developer,
sunt de dou tipuri:
Form Controls sunt controale crora li se asociaz
macrocomenzi;
ActiveX Controls sunt controale de tipul celor tratate
anterior.

Form Controls devin active imediat dup ce au fost introduse, acionarea lor
ducnd la rularea macroinstruciunii asociate. Butoanele Design Mode i Properties nu
vizeaz acest grup de controale, ci doar controalele ActiveX.

100

Prof. univ. Emil Cosma

Documente Office active

Exemplu______________________________________________________________________________________________
ntr-un document Excel se introduce un Button (Form Control).

Butonului i se poate asocia o macroinstruciune:


Sub Button1_Click()
MsgBox ("S-a acionat un Button (Form Control)")
End Sub
La acionarea butonului se v-a executa procedura Button1_Click.
Pentru editarea textului nscris pe buton sau a procedurii
(macrocomenzii) asociate se va apela la butonul drept al mouse-ului:

______________________________________________________________________________________________Exemplu

ActiveX Controls sunt definite la fel ca n Word.


Cuvntul cheie Me, dintr-o procedur eveniment a unui control ActiveX de
pe o foaie de calcul, se refer la foaia de calcul i nu la control.
Dac se definesc mai multe Sheet-uri numele controlului trebuie calificat cu
numele Sheet-ului:

101

Prof. univ. Emil Cosma

Documente Office active

'
Sheet2.CommandButton1.Caption = "Run"
'

Aplicaii

1. S se editeze, pe layer-ul de text al unui document Office, interfeele grafice necesare


pentru efectuarea calculelor aritmetice i a calculelor financiare (a se revedea aplicaiile
de la capitolul Formulare VBA).
2. S se implementeze coul de cumprturi conform exemplificrilor folosite la tratarea
controalelor ActiveX.
3. S se creeze un formular (de completat) conform precizrilor efectuate la tratarea
controalelor Content.
4. S se exerseze posibilitatea de efectuare a calculelor financiare (dar i a altor calcule)
n domenii diferite ale foii de calcul electronic.

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