Documente Academic
Documente Profesional
Documente Cultură
VBA (Visual Basic for Applications) este un limbaj de programare creat de Microsoft pentru
automatizarea aplicaiilor. Utiliznd Visual Basic Editor (VBE) se poate crea, edita, depana i
executa un program/aplicaie asociat unui documente Microsoft Office.
Proiectul VBA se poate executa doar dintr-o aplicaie Microsoft Office (deci deschiznd, chiar
formal, o foaie Excel sau un fiier Access etc.), dar multitudinea de componente disponibile n
dezvoltarea proiectului compenseaz acest neajuns.
Pentru a deschide editorul VB, mai nti se va pornete aplicaia Access din Microsoft Office,
apoi se poate aciona combinatia Alt+F11 (dac nu a fost atribuit altei operaiuni), sau butonul
Visual Basic din grupul Code din panglica Developer vizualizata ntr-o aplicaie Access.
Interfaa grafic VBE este suficient de complex. Pe lnga obiectele grafice uzuale (Menu Bar,
bare de unelte) sunt disponibile ferestre specializate pentru lucrul cu anumite categorii de
obiecte:
Properties Window pentru vizualizarea i fixarea proprietilor n momentul
proiectrii (design-time)
Project Explorer care permite navigarea, vizualizarea i modificarea proiectelor
deschise la un moment dat
Code Window unde este se scrie i este vizibil codul sursa al proiectului activ
Locals Window care permite vizualizarea variabilelor locale cu valorile lor
Immediate Window care permite executarea imediata a unei linii de cod
1
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Watch Window unde se afieaz valorile unor expresii specificate
Obiectele i prelucrrile necesare realizarii unei aplicatii VBA sunt gestionate sub forma unui
proiect. Un proiect conine, pe lnga documentele aplicaiei suport (Excel, Access etc.)
componente specifice aciunilor programatice: module de cod, module clasa, forme.
Module standard (module de cod) conin declaratii i proceduri. Ele pot fi salvate ca
fisiere .bas.
Module de clas conin definirea obiectelor (clase) utilizator. Pot fi salvate ca fisiere
.cls
Forme conin definirea interfetei utilizator i tratarea evenimentelor asociate. Pot fi
salvate ca fisiere .frm.
Referinte pentru a avea acces la entiti din alte proiecte, acestea se vor indica drept
referinte ale proiectului curent.
Problema 1. S se atribuie unei variabile valoarea 10.
Variabilele se definesc explicit prin instruciuni Dim, Private, Public, ReDim sau Static.
Tipul se declara explicit sau este implicit Variant. Dac modulul conine declaraia Option
Explicit n zona de declaratii, atunci toate variabilele trebuie s se declare explicit. n lipsa
declaraiei, aparitia unui nou identificator produce definirea unei noi variabile (de tip Variant).
Definirea unei variabile se face n forma
Dim nume_variabil[([subscripts])] [As [New] type]
Instruciunea de atribuire are forma:
<variabil>=<expresie>
Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
Problema 2.
S se afieze pe ecaran urmtorul text: Lucrm n VBA!.
Se va folosi funcia MsgBox. La apelul funciei MsgBox se afiseaz un mesaj ntr-o cutie de
dialog i se ateapt ca utilizatorul s acioneze unul dintre butoanele existente.
2
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
Orice instructiune executabil trebuie s aparin unei proceduri. Declaraiile pot sa apar i n
afara procedurilor, la nivel de modul. Se observ c funcia MsgBox este precedat de rndul
Sub Afisare(). Astfel este folosit o procedur de tip Sub. Procedura de tip Sub este nchis cu
instruciunea End Sub.
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5. Se
alege opiunea dorit. n cazul n care nu este salvat, acesta se salveaz cu un numele Afiare2.
Problema 3.
S se verfice, dac o valoare ataat unei variabile este numr pozitiv sau negativ.
3
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Pentru rezolvarea problemei se va folosi instruciunea If. Acesta are urmtoarea sintax:
If <conditie> Then
<instructiuni1>
Else <instructiuni2>
End If
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Rezultatul va fi cel de mai jos.
Problema 4.
Se citesc dou numere de la tastatur. S se compare cele dou numere i s se afieze care este
mai mare.
Pentru a citi numerele de la tastatur se va folosi cutie de dialog. La apelul funciei InputBox
afieaz o cutie de dialog care contine un mesaj, dou butoane (OK i Cancel) i o zon text n
care se poate tasta un rspuns. Rspunsul tastat, n cazul de fa numrul va fi de tip String,
adic ir de caractere, chiar dac se trasmite o valoare numeric. Pentru a transforma textul n
numr se va utiliza funcia Val.
4
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Apare cutia de dialog unde introducem primul numr.
5
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Problema 5.
S se elaboreze un program, care calculeaz valoarea funciei de mai jos.
x, x 3
y 2
x , x 3
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Apare cutia de dialog unde introduce valoare lui x.
3. Rezultatul va fi cel de mai jos, dac se introduce valoarea 2.
6
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Problema 6.
S se elaboreze un program, care citete de la tastatur un numr. Dac este mai mic dect
cinci, afieaz ziua din sptmn care este, altfel urmtorul text: Sfrit de sptmn!
Pentru rezolvarea problemei se va folosi instruciunea Select Case. Acesta are urmtoarea
sintax:
Select Case <exp>
Case <val1>
<instr1>
Case <val2>
<instr2>
Case <valn>
<instrn>
Case Else
<instr>
End Select
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
7
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Apare cutia de dialog unde introduce o valoare.
Problema 7.
Se citetete un numr natural n de la tastatur. S se calculeze n!
Pentru rezolvarea problemei se va folosi instruciunea For. Acesta are urmtoarea sintax:
For <contor>=<exp1> To <exp2> [Step <pas>]
<instructiuni>
Next <contor>
Cum se afl valoarea factorialului unui numr natural? Se nmulete numrul respectiv cu toate
numerele naturale mai mici dect el (mai puin cu 0). Astfel, 4! = 4*3*2*1 = 24, 6! =
6*5*4*3*2*1, dup regula: n!=n*(n-1)*(n-2)*...*3*2*1. Din aceast regul se poate extrage
formula:
n!=n*(n-1)!
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
8
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Apare cutia de dialog unde introduce o valoare.
3. Rezultatul va fi cel de mai jos, dac valoare introdus este 6.
Problema 8.
S se elaboreze un program, care calculeaz suma de mai jos.
1 1 1
1 ...
2 3 n
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
9
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Problema 9.
S se elaboreze un program, care transform numerele dintr-un tablou n ir de caractere
pstrnd cte un spaiu ntre fiecare liter.
Pentru rezolvarea problemei se va folosi instruciunea For Each. Acesta are urmtoarea
sintax:
For Each <element> In <grup>
<instructiuni>
Next <element>
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
10
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Rezultatul va fi cel de mai jos.
Problema 10.
S se afieze cu ajutorul unui program primele 20 de numere naturale.
Pentru rezolvarea problemei se va folosi instruciunea While. Acesta are urmtoarea sintax:
While <condiie>
<instrunciuni>
WEnd
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
11
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Dup rulare fiecare numr va fi afiat ntr-un MsgBox. Dac se dorete afiarea ntr-un singur
MsgBox, se poate construi un ir de caracter din numere. n acest caz codul surs poate fi
urmtorul.
Sub Afiseaza2()
Dim i As Integer
Dim sir As String
sir = ""
i = 1
While i <= 5
sir = sir + " " + Str(i)
i = i + 1
Wend
MsgBox sir, , "Primele cinci numere naturale!"
End Sub
Problema 11.
Se citete un numr de la tastatur. Se cere s se tipreasc, n ordine invers, cifrele sale (123
321).
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
12
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Atenie la mprirea ntreag, care este realizat cu operatorul \ i nu /!
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Rezultatul va fi cel de mai jos, dac se introduce 123.
Problema 12.
Se citete un numr n de la tastatur. Se cere s se calculeze suma primelor n numere.
Pentru rezolvarea problemei se va folosi instruciunea Do Until. Acesta are urmtoarea sintax:
Do Until <condiie>
<instrunciuni>
Loop
1. Pentru rezolvarea problemei, se va selecta opiunea Module de pe bara de instrumente i se
tasteaz codul de mai jos.
2. Pentru a rula secvena de mai sus, se alege butonul Run din bara de instrumente, sau F5.
Rezultatul va fi cel de mai jos, dac se introduce numrul 3.
13
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
Dup salvarea modulelor, acestea vor fi vizible n partea stng a ferestrei din Access, unde
pot fi accesate i celelalte obiecte existente n fiierul .accdb.
Probleme propuse
Problema 1. Sa se verifice dac un numr n citit de la tastatur este mai mare dect 100.
Problema 2. Se citete un numr n de la tastatur. S se afieze textul PAR sau IMPAR, n
funcie de valoarea lui n.
Problema 3. Se citete a i b, care sunt capetele unui interval. S se stabileasc, dac o
valoare x aparine intervalului [a, b].
14
Universitatea BabeBolyai din Cluj-Napoca Lucrri de laborator
Facultatea de tiine Economice i Gestiunea Afacerilor Baze de date i programei
Departamentul de Informatic Economic de
15