Sunteți pe pagina 1din 15

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

Lucrarea de laborator 7. Programare structurat n VBA

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.

3. Rezultatul rulrii este urmtoarea.

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.

Se asteapt ca utilizatorul s introduc un text n zona rezervat i s acioneze un buton. Textul


introdus este transmis ca valoare a funciei la acionarea butonului OK (sau Enter), iar
acionarea butonului Cancel (ca i nchiderea dialogului ca fereastra) transmite un ir de
lungime zero.
3. Dup ce este introdus primul numr se va introduce i al doilea n urmtoare cutie de dialog.

4. Rezultatul va fi cel de mai jos.

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.

3. Rezultatul va fi cel de mai jos.

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

3. Rezultatul va fi cel de mai jos, dac valoare introdus este 2.

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].

Problema 4. Se citete Fie a i b dou valori ntregi. S se calculeze x, soluia ecuaiei


a*x+b=0.
Problema 5. S se determine maximul pentru trei numere date.
Problema 6. S se calculeze i s se afieze suma primelor n numere naturale, n fiind un
numr citit de la tastatur.

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

Problema 7. S se elaboreze un program care afieaz tote numerele care se impart la 5 i


dau restul 3 din intervalul de la 1 la 20.
Problema 8. S se elaboreze un program care calculeaz suma primelor 5 numere, adic de
la 1 la 15.
Problema 9. S se elaboreze un program care calculeaz produsul numerelor pare de la 1 la
n, unde n se introduce de la tastatur.
Problema 10. S se elaboreze un program care calculeaz x la puterea n, unde n i x se
introduc de la tastatur.
Problema 11. Se dau dou numere naturale. S se determine c.m.m.d.c. (cel mai mare
divizor comun) al acestora.
Problema 12. Se d un numr n natural. S se determine suma crifrelor i numrul de cifre.
Problema 13. S se verifice dac un numr natural n dat face parte din irul lui Fibonacci.
(Un termen al irului se obine din suma ultimilor 2 termin dinaintea lui. Pe primele 2 poziii
se afl cifra 1. Exemplu: 1, 1, 2, 3, 5, 8, 13, 21...)
Problema 14. Se consider un numr natural n. S se formeze doua noi numere, unul format
din cifrele pare ale lui n, celalalt format din cifrele impare.

15

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