Sunteți pe pagina 1din 64

Limbajul Visual Basic

Rezumat- se prezinta limbajul de programare Visual Basic sub Excel, si un exemplu de


realizare a unei aplicatii Windows pentru calculul salariilor personalului angajat al unei
firme.
3.1. Programarea aplicatiilor Windows
Pentru realizarea unei aplicatii pot fi avute n vedere doua tehnologii de programare si anume:

- programare procedurala

- programare orientata spre obiecte si dirijata de evenimente.


n programarea procedurala, o aplicatie este constituita din unul sau mai multe
programe care se vor executa ntr-o anumita ordine, fiecare program fiind constituit dintro secventa de instructuni scrise ntr-un limbaj de programare.
Acesta era modul clasic de realizare a aplicatiilor si sistemelor informatice si are o
serie de dezavantaje printre care: productivitate scazuta n realizarea programelor, efort
mare pentru realizarea programelor si mai ales a interfetelor etc.
Aparitia tehnologiei orientate obiect, a mediilor visuale de programare si a
sistemului de operare Windows a condus la aparitia si dezvoltarea unei noi tehnologii de
programare a aplicatiilor windows si anume programarea orientata pe obiecte si dirijata
de evenimente, tehnologie ce va fi prezentata n cele ce urmeaza n cadrul limbajului
Visual Basic.
O aplicatie Windows afiseaza unul sau mai multe ecrane care contin obiecte cu
care va interactiona utilizatorul pentru a controla evolutia programului. ntr-un mediu de
programare vizual, obiectele principale sunt formele si controalele desenate n forme
(forma = o fereastra) Aceste obiecte pot fi create prin selectie si depunere folosind barele
de instrumente ale mediului respectiv.
Spre exemplu, bara cu instrumente Visual Basic permite crearea unei varietati de
obiecte printre care: forme, butoane, casete cu lista, casete derulante combinate, casete de
validare, butoane radio (butoane de optiune), etc. Fiecare din aceste obiecte are un
comportament predefinit. Spre exemplu cnd se ex 212d37c ecuta click pe un buton
acesta trece n pozitia apasat si apoi revine n pozitia normala. Pentru a schimba
comportamentul obiectului acestuia trebuie sa-i atasati cod de program (instructiuni)
corespunzator, cod ce se va executa atunci cnd are loc un anumit eveniment (spre
exemplu n cazul butonului evenimentul este click).

Evenimentele se produc ca urmare a unei actiuni a utilizatorului (ex. evenimentul


click corespunde apasarii butonului stng al mouse-ului pe obiectul respectiv), sau n
urma executiei codului programului, sau pot fi declansate de catre sistem.
Majoritatea obiectelor vor raspunde unui anumit numar de evenimente generate
de catre utilizator printre care click-uri, dublu click-uri, apasari de taste sau trageri si
eliberari ale obiectului. Limbajul Visual Basic pune la dispozitia utilizatorului un mediu
de dezvoltare care permite crearea de programe orientate spre obiecte si conduse de
evenimente. Pentru lucrul cu obiecte conduse de evenimente se parcurg urmatoarele
etape:
-

se creeaza o noua forma careia i se da un nume;

se deseneaza si se denumesc obiectele ce urmeaza a fi afisate n forma respectiva;

se ataseaza fiecarui obiect codul ce va fi executat ca raspuns la evenimente generate


de utilizator sau de sistem.

Va rezulta o interfata grafica cu care interactioneaza utilizatorul pentru a controla


evolutia programului. Rezumnd putem spune ca n programarea orientata spre obiecte si
dirijata de evenimente, obiectele au un comportament predefinit care poate fi modificat
de utilizator prin atasare de cod corespunzator si aceste obiecte raspund la evenimente
declansate fie ca urmare a actiunii utilizatorului asupra obiectelor, fie ca urmare a
executiei codului atasat, fie declansate de sistem.
3.2. Proprietati si metode
Un obiect este definit de un set de proprietati cum ar fi: dimensiune,
pozitie pe ecran, comportament (ex. daca un buton radio este activ sau nu la un
dat etc.). O metoda este o procedura (succesiune de instructiuni) asociata unei
actiuni a unui obiect. Spre exemplu n Visual Basic exista o metoda Move
majoritatii obiectelor (permite mutarea obiectelor).

culoare,
moment
anumite
asociata

Deci proprietatile descriu obiectele iar metodele definesc actiunile obiectelor, iar
pe de alta parte proprietatile reprezinta date iar metodele reprezinta cod (instructiuni).
Astfel n gramatica programarii orientate spre obiecte :
-

obiectele sunt substantive;

proprietatile sunt adjective;

metodele sunt verbe.

Utilizarea notatiei cu punct pentru referirea proprietatilor si metodelor

Referirea unei proprietati se face astfel:


Obiect . Proprietate = Valoare
Exemplu - fie forma frmForma1 si variabila dColor n care memoram culoarea de
fond a formei
dColor = frmForma1.BackColor (citeste culoarea curenta si o depune n dColor)
frmForma1.BackColor = QBColor (Blue) - stabileste noua culoare de fond a
formei la valoarea Blue.
Referirea metodelor se face asemanator cu referirea proprietatilor, nsa n plus
metodele pot necesita precizarea unor informatii suplimentare.
Exemplu - pentru mutarea obiectului Buton1 n coltul din stnga sus al formei
curente se apeleaza metoda Move si se precizeaza coordonatele coltului din stnga sus:
Buton1.Move 0,0
Stabilire proprietati si executare metode
Proprietatile unui obiect pot fi setate n faza de proiectare (atunci cnd se
deseneaza sau se modifica formele) utiliznd fisa Properties a formei sau obiectului din
forma (fisa este automat vizualizata la selectia obiectului respectiv: forma, buton, etc.).
De asemenea fisa Properties poate fi vizualizata prin click dreapta si selectie Properties.
Proprietatile pot fi modificate si prin program n momentul executiei formei, daca
codul de program asociat contine instructiuni care refera si seteaza proprietati (ca n
exemplul de mai sus n care schimbam culoarea fondului formei).
Spre deosebire de proprietati, metodele pot fi executate numai n momentul
executiei programului (eventual n momentul depanarii programului utiliznd facilitatea
Debugger a programului Visual Basic).
Denumirea obiectelor
Orice obiect are proprietatile:

Name - numele utilizat n scrierea codului


Capture - numele dat obiectului pentru a putea fi identificat de utilizator.
Visal Basic da nume implicite obiectelor. Este indicat ca utilizatorul sa dea nume
obiectelor (Name) utiliznd urmatoarea conventie:

un prefix format din 3 litere mici (ex. frm pentru forma, cmd pentru buton de
comanda, etc.)

un sir de caractere care identifica obiectul (ex. Forma1, Ecran1, Buton1, etc.).
n tabelul urmator sunt prezentate conventiile de denumire a obiectelor din Visual

Basic:

Obiect

Prefix

Forma

frm

frmForma1

Buton de comanda

cmd, btn

cmdButon, btnOK

Caseta de text

txt

txtCaseta1

Bare de derulare

hsb

orizontala

vsb

verticala

Meniu

mnu

Caseta de validare

chk

Caseta cu lista

lst

Cadru

fra

Imagine

img

Buton de optiune (radio)

opt

Exemplu

mnuMeniuPrinc

optBO1

3.3. Utilizare Visual Basic din Excel


Lansare editor Visual Basic:
Tools Macro Visual Basic Editor

Creare forma:

InsertUserForm
stergere forma:
File Remove UserForm
(pentru forma selectata = ultima activata)
No (fara export = fara salvare)

Dupa creare forma se pot desena obiecte n forma utiliznd bara de instrumente
Toolbox Controls prin selectare obiect, antrenare pe suprafata formei si depunere obiect
ca n exemplul de mai jos:

n partea stnga a ecranului este afisata lista proprietatilor obiectului selectat (care
pot fi eventual modificate - setate).

Cu click dreapta pe obiect se pot vizualiza:


-

proprietatile obiectului

codul asociat

si eventual se pot efectua si alte operatii (Cut, Copy, Paste, Delete).

Vizualizare forme
View Project Explorer
din lista Project ce apare se alege forma dorita (care poate fi editata cu click
dreapta, sau executata din Run Sub / UserForm).
sau selectie obiect din lista Project si apoi
View Object (pentru afisare obiect n modul Design)
Code (pentru afisare cod pentru obiectul selectat)

Executie forma:

Run Run Sub / UserForm (pentru forma curenta)


Pentru revenire n ecranul anterior (editorul Visual Basic) se nchide forma (se apasa butonul Close al formei)

3.4. Variabile
O variabila este o zona temporara de memorie careia i se da un nume, si care poate memora (stoca) un anumit tip de
data care poate fi modificata pe parcursul executiei programului. n Visual Basic numele unei variabile poate avea max. 256
caractere, trebuie sa nceapa cu un caracter alfanumeric (litere, cifre) si nu poate fi un cuvnt rezervat al limbajului Visual
Basic (cum ar fi Sub, Function, etc.).

Tipuri de variabile n Visual Basic

Tip

Sufix

Dimensiune

Domeniu de valori

(octeti)
Byte

0-255

Boolean

Adevarat, Fals
(True, False)

Integer - ntreg

-32768, + 32768

Long integer - ntreg lung

-2.147.483.648,
2.147.483.647

Simpla precizie

-3.40E38 ; 3.40E38

Dubla precizie

-1.80E308 , 1.80E308

Currency - valuta

-9.22E14 , 9.22E14

Date - data calendaristica

ian 1, 100 ; dec 31 ,9999

Object - obiect

Adresa unui obiect

String - sir

1/caracter

65500 octeti

Variant - nedefinit

dupa caz

n functie de tip

User-Defined

dupa caz

n functie
elementelor

(definit de utilizator)

de

tipul

Declaratii implicite si explicite de variabile


Declararea implicita se face utiliznd sufixul (ca n tabelul de mai sus).
Exemplu:

Vrsta% = 42 (variabila vrsta este de tip ntreg)


Daca ultimul caracter nu este unul din caracterele de declarare a tipului:
%, , , , @, $ atunci tipul prestablit este variant.
Declararea explicita a unei variabile se face utiliznd instructiunea Dim la
nceputul unei proceduri.
Exemplu:
Dim Varsta As Integer
Dim X As Double
Dim sir1, sir2 As String (sir1 este de tip variant, sir2 este de tip string)
Dim sir As String 10 (de tip sir ce poate contine max. 10 caractere)

Domeniul unei variabile


Domeniul unei variabile este zona programului n care variabila este vizibila.
ntruct o variabila poate fi declarata la 4 nivele diferite exista corespunzator 4 nivele
diferite de domenii de vizibilitate si anume:
1. nivel procedura
2. variabile statice n interiorul procedurilor

3. nivel forma
4. nivel modul standard
1. Nivelul procedura este primul nivel la care poate fi declarata o variabila fie implicit
fie cu instructiunea Dim. Exista doua tipuri de procedura n Visual Basic si anume:
-

proceduri Sub

proceduri Function.

Variabilele declarate n proceduri vor fi variabile locale ale procedurilor respective,


fiind valabile (accesibile) numai n procedurile n care au fost declarate.
Deci aceste variabile au cea mai redusa vizibilitate si cel mai restrns domeniu.
Cnd executia unei proceduri se ncheie, toate variabilele locale ale acesteia sunt
eliminate din memorie.
Deci variabilele locale ale unei proceduri sunt reinitializate la fiecare apel al procedurii.
2. Variabile statice - n interiorul procedurilor
O variabila locala poate fi facuta permanenta daca n locul instructiunii Dim se
foloseste instructiunea Static. Astfel o variabila statica si conserva valoarea ntre
apelurile succesive ale procedurii n care a fost declarata (deci nu va fi reinitializata la
fiecare apel al procedurii), nsa este vizibila numai n cadrul procedurii n care a fost
declarata.
3. Variabile la nivel forma
O variabila declarata la nivelul unei forme, va fi accesibila la nivelul tuturor
procedurilor acelei forme.

4. Variabile la nivelul modul standard


Modulele de cod sunt module utilizate pentru a pastra procedurile si functiile
generale neinfluentate de evenimente si variabilele si constantele globale. Aceste module
se creeaza prin selectarea optiunii Module din meniul Insert al programului Visual Basic,
sau prin click pe butonul module din bara cu instrumente.

Declararea unei variabile la nivelul unui astfel de modul se face prin plasarea
acesteia n zona de declaratii a obiectului General, zona accesibila prin intermediul
ferestrei de cod. Cel mai nalt domeniu de vizibilitate este nivelul global. Orice variabila
declarata la acest nivel este vizibila din orice procedura a aplicatiei (proiectului).
Declararea unei variabile globale se face utiliznd cuvntul cheie Global n sectiunea
General / Declaration a modulului de cod.
Exemplu: Global NumePrenume As String
Constante
O constanta poate fi privita ca o variabila a carei valoare nu se modifica niciodata
ramnnd aceeasi pe parcursul ntregii vieti a programului.
Utilizarea constantelor duce la cresterea calitatii programelor. Ca si n cazul unei
variabile, domeniul unei constante este determinat de locul unde este declarata.
Constantele se declara cu cuvntul cheie Const. Este indicat ca numele constantelor sa fie
scrise cu litere mari pentru a fi usor reperabile.
Exemplu de utilizare InputBox( ), MsgBox
Const IB_TITLU = "Titlu InputBox"
Dim sNume As String

'variabila locala

Dim sPrompt as string

Static ixPos As Integer, iyPos As Integer

'valoare pastrata ntre apeluri

SPrompt = "Introduceti numele dumneavoastra:"


ixPos = Iif(ixPos 0, 0, 1440)

' schimba pozitia ferestrei

iyPos = Iif (iyPos 0, 0, 1440)


sNume = InputBox$ (sPrompt, IB-TITLU, ixPos, iyPos)
If sNume = " " Then
MsgBox "Nu s-a introdus nimic!"

Tipuri de date definite de utilizator

n afara de tipurile de date predefinite n cadrul limbajului Visual Basic,


utilizatorul poate sa-si defineasca propriile sale tipuri de date, care pot contine unul sau
mai multe tipuri de date predefinite. Tipurile de date definit de utilizator pot fi declarate
numai n sectiunea General / Declaration a modulului de cod cu ajutorul cuvintelor cheie
Type si End Type (deci tipurile definite de utilizator sunt vizibile din orice punct al
aplicatiei, proiectului respectiv).
Exemplu:
Type t_pers
Nr As Integer
Nume As String 30
DataNasterii As Date
End Type
Dupa definirea unu astfel de tip de data acesta poate fi utilizat pentru declararea
unei variabile de acest tip. Pentru variabila se poate utiliza Dim, Static, Global pentru a
defini domeniul de vizibilitate al acestei variabile.
Exemplu:
Dim Persoane As t_pers
Persoane.Nr = 15
Pesoane.Nume = "Ionescu Ion"

Persoane.DataNasteri = december 20 ,1983


Astfel de tipuri de variabile sunt utilizate n programele de baze de date.
Prefixele variabilelor
De obicei fiecare programator si defineste variabilele utiliznd un prefix scris cu
litere mici pentru a identifica tipul variabilei dupa cum urmeaza:
i - Integer
s - String

l - Long
-------Exista o lista standard de prefixe de variabile numita notatie ungara (Hungarian
Notation) - inventata de un programator de nationalitate ungara de la firma Microsoft
pentru limbajul C.

3.5. Operatii de intrare /iesire realizate cu functiile InputBox ( ) si MsgBox ( )


Limbajul Visual Basic dispune de functiile InputBox ( ) si MsgBox ( ) pentru
realizarea de operatii simple de intrare/iesire prin utilizarea unor casete de dialog
predefinite. n cadrul unui program utilizatorul trebuie sa poata introduce date si sa poata
afisa sau extrage rezultate.
Functia InputBox ( ) - afiseaza o caseta de dialog si asteapta ca utilizatorul
sa introduca text, apoi returneaza continutul casetei de text. Valoarea returnata este fie de
tip variant fie de tip String n functie de varianta utilizata:
Valret = InputBox (prompt, title, default, xpos, ypos, helpfile, context)
-

ntoarce Variant

Valret$ = InputBox$ (prompt, title, default. xpos, ypos, helpfile, context)


-

ntoarce String

Argumentul prompt este singurul argument obligatoriu, care va fi un mesaj (de tip
String) care invita utilizatorul sa introduca text n caseta de text afisata. Pentru a
introduce text pe mai multe linii se va introduce CR. LF, (chr(13), chr(10)) sau
constanta predefinita vbcrlf, ntre fiecare doua rnduri succesive).

Title este un sir de caractere ca va fi afisat n bara de titlu a casetei de dialog.

Default - se poate completa pentru acest argument un sir de caractere care sa fie
considerat raspunsul predefinit (va apare afisat n caseta de text), iar daca nu se
completeaza, caseta de text (n care utilizatorul va introduce textul) va fi afisata
goala.

xpos, ypos - sunt expresii numerice care specifica distanta pe orizontala, verticala a
coltului din stnga sus al casetei de dialog fata de coltul din stnga al ecranului
(formei). Daca sunt omise, caseta de dialog va fi centrata pe orizontala la o treime din

naltimea ecranului. Daca se omite title sau default sau ambele si vrem sa precizam
xpos, ypos atunci n locul argumentelor omise se va folosi cte o virgula pentru
fiecare argument omis.
-

Pentru ambele functii InputBox( ) si MsgBox( ), argumentele helpfile (sir) si context


(nr. ntreg) sunt utilizate pentru a pune la dispozitie asistenta soft dependenta de
context, caz n care utilizatorul poate apasa tasta F1 pentru a vedea articolul Help
creat pentru respectiva caseta de dialog.

Daca se selecteaza butonul OK sau se apasa Enter, functia InputBox( ) returneaza


continutul casetei de text. Daca nu se introduce text sau se selecteaza butonul Cancel,
functia returneaza un sir de lungime 0 (" ").
Variabila Valret va memora continutul casetei de text (textul introdus).

Functia MsgBox ( ), procedura MsgBox


Functia MsgBox( ) si procedura MsgBox afiseaza un mesaj ntr-o caseta de dialog
si asteapta ca utilizatorul sa selecteze un buton. Functia MsgBox ( ) returneaza o valoare
ntreaga care indica numarul butonului selectat. Procedura MsgBox nu returneaza nici o
valoare ( se utilizeaza atunci cnd nu intereseaza cum este nchisa caseta de dialog
corespunzatoare).

Sintaxa functiei MsgBox ( ) este:


Valret % = MsgBox(msg, type, title, helpfile, context)
Sintaxa procedurii MsgBox este:
MsgBox msg, type, title, helpfile, context
-msg = expresie sir afisata ca mesaj n caseta de dialog
-type = expresie numerica ce precizeaza numarul si tipul butoanelor si a altor
elemente ce vor fi afisate n caseta de dialog corespunzator tabelului de mai jos.
n tabelul de mai jos sunt date grupele de valori care descriu:
1. numarul si tipul butoanelor casetei de dialog

2. tipul pictogramei
3. butonul prestabilit
4. modalitatea casetei de dialog.
Valoare

Semnificatie

Afiseaza numai butonul OK

vbOKOnly

Afiseaza butoanele OK si Cancel

vbOKCancel

Afiseaza butoanele Abort,Retry,Ignore

vbAbortRetryIgnore

Afiseaza butoanele Yes, No, Cancel

vbYesNoCancel

Afiseaza butoanele Yes, No

vbYesNo

Afiseaza butoanele Retry, Cancel

vbRetryCancel

16

Afiseaza pictograma Critical

vbCritical

32

Afiseaza un semn de ntrebare

vbQuestion

48

Afiseaza un semn de exclamare

vbExclamation

64

Afiseaza pictograma Information

vbInformation

Primul buton este prestabilit

vbDefaultButton1

256

Al doilea buton este prestabilit

vbDefaultButton2

Constanta simbolica recomandata

512

Al treilea buton este prestabilit

vbDefaultButton3

Caseta modala aplicatiei

vbApplicationModal

4096

Caseta modala sistemului

vbSystemModal

Pentru a obtine valoarea argumentului type se va nsuma cte un numar din fiecare grup. Daca argumentul
type este omis se considera implicit valoarea 0.
Modalitatea implicita a unei casete de dialog este ApplicationModal.
n modalitatea aplicatie utilizatorul trebuie sa raspunda casetei de dialog nainte de a putea sa lucreze n aplicatia
curenta. n modalitatea System toate aplicatiile sunt suspendate pna cnd utilizatorul raspunde casetei de dialog.

Att pentru functia MsgBox( ) ct si pentru procedura MsgBox argumentul msg


este obligatoriu, celelalte fiind facultative. Valoarea returnata de functia MsgBox( ) indica
butonul care a fost selectat, conform tabelului de mai jos:
Valoare

Semnificatie

Constanta simbolica recomandata

Butonul OK selectat

vbOK

Butonul Cancel selectat

vbCancel

Butonul Abort selectat

vbAbort

Butonul Retry selectat

vbRetry

Butonul Ignore selectat

vbIgnore

Butonul Yes selectat

vbYes

Butonul No selectat

vbNo

Este indicat a se utiliza constante simbolice n locul numerelor deoarece n acest


fel creste claritatea programului (semnificatia constantei vbAbort este evidenta, pe cnd
nr. 3 nu spune nimic).
3.6. Structuri de ramificare si ciclare (luare decizii)
Pentru luarea deciziilor n cadrul unui program Visual Basic se pot utiliza doua
categorii de instructiuni cu ajutorul carora se dirijeaza executia instructiunilor
programului n functie de ndeplinirea anumitor conditii.
Cele doua categorii de instructiuni sunt:
-

instructiuni de ramificare - permit executia selectiva a anumitor secvente de


instructiuni functie de ndeplinirea unor conditii

instructiuni de ciclare - permit executia repetata a unor secvente de instructiuni.

3.6.1.Structuri de ramificare
1) Structura If..EndIf - are sintaxa
If conditie then
instructiuni 1
Else
instructiuni 2
EndIf
Daca conditie este
adevarata
se
executa
secventa
de
instructiuni instructiuni1 si se continua programul cu instructiunile care urmeaza dupa
EndIf.
Daca conditie este falsa se executa secventa de instructiuni instructiuni 2 si
se continua programul cu instructiunile care urmeaza dupa EndIf.
Exemplu:
If

Culoare 15 Then

Culoare = Culoare + 1
Else
Culoare = 1
EndIf
Se pot construi structuri If imbricate (incluse), nsa pentru aceasta se poate utiliza
simplu structura If..ElseIf...EndIf, sau n cazul mai multor actiuni se poate utiliza
structura Select Case.
Exemplu:
If iValRet = vbYes Then
sMsg = "A-ti selectat Yes"
Elseif iValRet = vbNo Then
sMsg = "A-ti selectat No"
Else If iValRet = vbCancel then
SMsg = "A-ti selectat Cancel"
EndIf
Structura If..ElseIf..EndIf poate fi condensata ntr-o singura linie de cod utiliznd functia IIF ( ) ca n exemplul de mai jos:

Culoare = IIF (Culoare 15, Culoare, 1)

'(testeaza sa nu se depaseasca codul


14 pentru culoare)

2) Structura Select..EndSelect - pentru realizarea unei actiuni din mai multe


posibile.
Exemplu: fie iVarsta o variabila numerica n care este memorata vrsta.
Select Case iVarsta
Case 5

sGrupa = "de cinci ani" = 5 ani


Case 13 To 19
sGrupa = "Adolescent"
Case 20 To 35, 50, 60 to 65
sGrupa = "adult"
Case Is 65
sGrupa = "vrstnic"
Case Else
sGrupa ="ceilalti"
EndSselect
n functie de conditia (prima ndeplinita ) se executa secventa de instructiuni
corespunzatoare, apoi se continua cu instructiunile care urmeaza dupa EndSelect. Daca
nici una din conditiile anterioare nu este ndeplinita se executa instructiunile care
urmeaza dupa CaseElse.

3.6.2. Structuri de ciclare


1) While...Wend are sintaxa:
While conditie

instructiuni
Wend
Se executa secventa de instructiuni instructiuni atta
conditia conditie este ndeplinita (adevarata).
2) Do..Loop are sintaxa:
Do Until conditie

timp

ct

instructiuni
Loop

sau
Do
......
If conditie Then
Exit Do
Else
instructiuni
Loop Until conditie
Structura Do.Loop repeta un bloc de instructiuni atta timp ct o anumita conditie
este adevarata sau pna n momentul n care o anumita conditie devine adevarata.
Instructiunea Exit Do poate fi folosita numai ntr-o structura Do..Loop ca o
conditie de a parasi ciclul.
3) For.Next - repeta o secventa de instructiuni de un numar precizat de ori dupa
urmatoarea sintaxa:
For icontor = valoare initiala To valoare finala Step pas
instructiuni
Next
Executia ciclului For.Next se poate termina fortat cu instructiunea Exit For.
Exemplu: (calculeaza suma numerelor pare pna la 100).
For iNr = 0 TO 100 step 2
isuma = isuma + iNr
Next

3.7. Module si proceduri


n Visual Basic 4.0, exista trei tipuri de module:
-

module ale formei

module de cod

module clasa

Fiecare tip de modul contine proceduri care pot fi partajate pe diverse nivele ale
domeniului de vizibilitate n cadrul aplicatiei. Toate exemplele date pna n prezent cu
exceptia variabilelor globale vor fi stocate n module asociate unor forme.

Exemplu - daca se scrie cod asociat evenimentului click al unui buton va rezulta o
procedura de eveniment (spre deosebire de o procedura generala) care va fi parte a formei
n care se afla butonul. Cu exceptia cazului cnd se elimina cuvntul cheie Private din
antetul procedurii de eveniment a formei, acest cod nu va fi vizibil n afara formei.
O clasa este un sablon n baza caruia pot fi create obiecte. Clasa defineste
proprietatile obiectelor ce apartin clasei si metodele utilizate pentru controlul
comportamentului obiectelor. Modulele clasa contin o definitie formala a unei clase care
va fi instantiata ca obiect OLE automatic.
Un modul de cod contine cod public, declaratii, proceduri subrutina si functii care
pot fi partajate ntre toate modulele unui proiect. Modulul de cod este numit si modul
standard pentru a putea fi diferentiat de modulele formei si modulele clasa.

Proceduri generale si proceduri eveniment


O procedura generala comunica aplicatiei cum sa efectueze o anumita actiune.
Pentru a efectua actiunea, procedura trebuie apelata explicit n cadrul aplicatiei. O
procedura generala poate fi plasata n oricare din cele 3 tipuri de module. O procedura
eveniment ramne inactiva pna cnd este apelata pentru a raspunde unor evenimente
provocate de utilizator (ex. click cu mouse-ul) sau declansate de sistem (ex. evenimente
de ceas, evenimente de ncarcare n memorie).

3.7.1. Proceduri subrutine


O procedura subrutina (sau simplu procedura) este o secventa de instructiuni care are un nume si ale carei
instructiuni sunt executate ca un tot. O procedura subrutina efectueaza o anumita actiune nsa nu returneaza nici o valoare.
O procedura subrutina ncepe cu instructiunea Sub si se termina cu instructiunea End Sub (exemplu procedura asociata
evenimentului click al unui buton).

Limbajul Visual Basic are o serie de proceduri ncorporate ca de exemplu:


Descriere

Exemplu de utilizare

MsgBox

Afiseaza un mesaj ntr-o caseta

MsgBox "mesaj",..

Print

Tipareste

Print iProcent "%"

FileCopy

Copiaza un fisier

FileCopy "Fis1.doc", "Fis2.doc"

Name

Redenumeste un fisier

Name "Fisier1" As "Fisier2"

Kill

sterge un fisier

Kill "Fis1.doc"

Beep

Emite un sunet

Beep

Date

Stabileste data sistemului

Date December 18, 2002

Procedura

Utilizatorul si poate defini propriile proceduri pentru a efectua diverse actiuni.


Exemplu:
Sub StergeFisiere( )
Kill " *.Tmp"
Kill " *. Dat"

Beep
MsgBox "S-au sters fisierele *.Tmp, *.Dat"

End Sub

Pentru apelarea procedurii stergeFisiere din orice punct al aplicatiei se va specifica


numele procedurii ca instructiune n cadrul programului. (desi parantezele apar n
definitia procedurii, la apelul procedurii se va specifica doar numele fara paranteze !).
Procedura de mai sus nu necesita argumente, nsa daca o procedura urmeaza sa
primeasca argumente acestea se vor specifica ca n exemplul:
Sub Produs(iNr1 As Integer, iNr2 As Integer)
iVarGlobal = iNr1*iNr2
End Sub
Apelul procedurii este ilustrat n exemplul de mai jos:

Dim iV1 As Integer, iV2 As Integer


iV1 = 560
iV2 = 829
Produs iV1, iV2
.......
3.7.2. Proceduri functii
O procedura functie (sau simplu o functie) este o secventa de instructiuni care
efectueaza o anumita operatie ntr-un program si returneaza o valoare. O functie ncepe
cu instructiunea Function si se termina cu instructiunea End Function.

n Visual Basic exista o serie de functii predefinite printre care:


Functia

Descriere

Exemplu de utilizare

Valoare returnata

Len( )

Returneaza lungime sir

iLung=Len("Limbaje de programare")

iLung = 21

Mid( )

Returneaza un subsir din sSubsir=Mid("ABCDE", 1,2)


sir

sSubsir = "AB"

Chr( )

Returneaza
caracterul
corespunzator codului

sCar = "A"

Asc( )

Returneaza
corespunzator
caracterului

UCase( )

Converteste
mari

LCase( )

Converteste
mici

InStr( )

Returneaza pozitia unui iPozitie = Instr("ABCDE", "BCD")


subsir n sir

sCar = Chr(65)

codul iCod = Asc ("A")

iCod = 65

litere sMari = Ucase("Ionescu")

sMari
"IONESCU"

litere sMici = Lcase("LIMBAJE")

sMici = "limbaje"

iPozitie = 2

Pe lnga functiile predefinite fiecare utilizator si poate crea propriile functii

Exemplu - definirea unei functii utilizator pentru criptarea unui sir de


caractere
Function Criptare(sSirTastat As String ) As String
Dim iLen As Integer
Dim sSirCriptat As String, sCar As String, sCript As String
iLen = Len(sSirTastat)

depune n iLen lungimea sirului tastat

For x = 1 To iLen

pentru fiecare caracter din sirul tastat

sCar = Mid$(sSirtastat, x, 1)

extrage caracterul

sCript = Chr$(Asc(sCar) +1)

cripteaza caracterul prin incrementare cu 1

sSirCriptat = sSirCriptatsCript adauga caracterul criptat sirului criptat


Next
Criptare = sSirCriptat
End Function
Apelul functiei Criptare:
Private Sub frmApel
Dim sRezultat As String
sSirTastat$ = InputBox$("Tasteaza sirul de criptat")
Srezultat = Criptare(SirTastat$)
MsgBox Srezultat
End Sub
Daca vrem sa descriptam sirul criptat vom scrie o functie care este aproape
identica cu cea de criptare si anume:

Function Decriptare(sSirIntrare As string) As


string
nume diferit
Dim iLen As Integer
Dim sSirIesire As string, sCarIntrare As string, sCarIesire as string
iLen = Len(sSirIntrare)
For x = 1 To iLen
sCarIntrare = Mid$(sSirIntrare, x, 1)
sCarIesire = Chr$(Asc(ScarIntrare)-1)
sSirIesire = sSirIesire sCarIesire
Next

minus n loc de plus

Decriptare = sSirIesire

Decriptare n loc de criptare

End Function
Se constata ca cele doua functii pot fi scrise ca o singura functie de doua
argumente si anume:
Function CriptDecript (sSirIntrare As String, iOperatie As Integer) As String
Dim iLen As Integer
Dim sSirIesire As string, sCarIntrare As String, sCarIesire As String
iLen = Len(sSirIntrare)
For x = 1 To iLen
sCarIntrare = Mid$(sSirIntrare, x, 1)
sCarIesire = Chr$(Asc(sCarIntrare) + iOperatie)
sSirIesire = sSirIesire sCarIesire
Next
CriptDecript = sSirIesire
End Function
iar la apelarea functiei iOperatie va fi:
+1 pentru criptare
-1 pentru decriptare
Exemplu de apel:
Dim V1 As String, V2 As String
V1 = InputBox$("Introduceti sirul de criptat")
V2 = CriptDecript(V1, 1)
MsgBox V2

Pentru crearea procedurilor si functiilor se deschide fereastra de cod a modulului


de cod standard.
Lista Object contine cuvntul General iar lista Proc contine cuvntul Declarations.
n sectiunea General Declaration a modului se vor declara variabilele si constantele la
nivel de modul (globale) si apoi se definesc (introduc) procedurile si functiile modulului
(codul sursa prezentat mai sus).
Observatii
Fiecare din functiile si procedurile aplicatiei pot fi atasate unor obiecte grafice
(butoane), deci n acest caz textul sursa corespunzator se va atasa butoanelor respective.
Indiferent daca o functie are sau nu argumente, att la definire ct si la apelare,
parantezele sunt obligatorii !!

3.8. Obiecte n Visual Basic


Bare cu instrumente
- Butoane de comanda - sunt utilizate pentru a ncepe, a ntrerupe sau a ncheia un
anumit proces.
Cnd se executa click cu mouse-ul arata ca si cum ar fi apasat, de unde si
denumirea sa n engleza Push button. Pentru a afisa text pe buton trebuie definita
proprietatea Caption. Prezenta unui caracter n textul proprietatii Caption face ca ceea
ce urmeaza dupa sa fie tasta de acces n combinatie cu tasta Alt. Selectia unui buton de
comanda se face prin click cu mouse-ul sau cu tasta Tab pentru a ajunge pe buton si apoi
se apasa tasta Enter. Daca proprietatea Default a unui buton are valoarea True, atunci
acest buton poate fi selectat n orice moment prin apasarea tastei Enter indiferent ce
control este curent n acel moment.
Daca proprietatea Cancel a unui buton este stabilita pe valoarea True atunci acel
buton poate fi selectat prin tasta Esc.

Proprietati uzuale ale unui buton de comanda


Proprietate

Descriere

Exemple de valori

Appearance

Selecteaza aspectul 3D sau plat

1= 3D, 0 = plat

Cancel

Permite selectarea cu ESC

True, False

Caption

sirul de caractere afisate pe buton

caractere

Default

Permite selectarea cu tasta Enter

True, False

Font

Stabileste corpul, stilul si dimensiunea MS Sans Serif, Bold, 12


caracterelor

- Etichete - sunt controale grafice folosite pentru a afisa text pe care utilizatorul nu
lpoate modifica direct ci doar cu ajutorul instructiunilor (codului). Pentru ca eticheta sa
afiseze corect linii multiple de diverse lungimi se vor stabili proprietatile AutoSize si
WordWrap la valoarea True.

- Casete de text sau TextBox-uri sau casete de editare, sunt utilizate pentru a afisa

informatii introduse de utilizator la rulare sau asociate controlului prin program. Accesul
la textul afisat se obtine prin stabilirea sau citirea proprietatii Text a controlului, ceea ce
poate face fie direct n faza de proiectare, fie prin cod utiliznd notatia cu punct.
Exemplu de citire:
sTextCaseta1= txtCaseta1.Text
txtCaseta1).

(daca a fost creata o caseta de text numita

Pentru a afisa mai multe linii de text ntr-o caseta de text, proprietatea MultiLine
trebuie sa fie selectata pe valoarea True.
Daca o caseta de text multilinie nu contine o bara de derulare orizontala, textul va
fi mpartit automat pe rnduri chiar daca caseta este redimensionata. Barele de derulare se
stabilesc cu proprietatea ScrollBars: Horizontal, Vertical, Both, None.
Daca proprietatea MultiLine este True, se poate utiliza proprietatea Alignment
pentru a alinia textul la stnga, la dreapta, sau n centrul zonei, iar daca MultiLine este
False, Alignment nu are efect.
Implicit textul este aliniat la stnga
Proprietati uzuale ale unei casete Text Box

Proprietate

Descriere

Exemplu de valori

Appearance

Selecteaza aspectul 3D sau plat

1= 3D, 0 = plat

Border Style

Precizeaza tipul chenarului

0 - fara chenar,
1 - chenar simplu

Font

Stabileste corpul, stilul si dimensiunea MS Sans Serif, Bold, 12


caracterelor

PasswordChar

Ascunde textul cu un singur caracter

SelStart

Pozitia initiala
textului

SelLength

Precizeaza lungimea textului selectat

numai la rulare

Tag

Memoreaza informatii suplimentare

orice expresie sir

pentru

Ex. * sau

selectarea numai la rulare

Proprietatile SelStart si SelLength sunt disponibile numai la rulare si deci nu vor fi


afisate n fereastra Properties a casetei de text. Proprietatea Tag poate stoca informatii
suplimentare, ca de exemplu parola sistemului n faza de proiectare.

- Butoane de optiune (butoane radio) (Option Button) - afiseaza o optiune care


poate fi activata s-au dezactivata (,o), functie de valoarea True sau False a proprietatii
Value a butonului. n general butoanele de optiune se utilizeaza n grupuri (mai multe
butoane) afisate ntr-un cadru - ca lista de optiuni ce se exclud reciproc. Toate butoanele
de optiune afisate ntr-un recipient (cadru) se comporta ca un grup, deci numai unul
singur poate fi activ la un moment dat (nti se deseneaza cadrul si apoi se depun
butoanele n cadru - desenarea ulterioara a cadrului nu are nici un efect asupra grupului).
Prin intermediul proprietatii Caption fiecarui buton i se poate atasa un text ce va fi
afisat imediat n dreapta butonului. Fiecarui buton i se poate atasa cod ca de exemplu:
If optButon1.Value = True Then
MsgBox "Buton selectat"

Testeaza starea curenta a butonului


optButon1

Else

MsgBox "Buton neselectat"


End if

- Casete de validare - afiseaza o caseta care poate fi activata sau dezactivata


(,).
Se pot grupa mai multe casete de validare ntr-un cadru, nsa spre deosebire de
butoanele de optiune, pot fi active mai multe casete din grup la un moment dat.
Prin proprietatea Caption se poate afisa text explicativ n dreapta casetei ca mai
jos:
Select Case chkCv1
Case 0
VMsg = "Nebifata"
Case 1
VMsg = "Bifata"
Case 2
VMsg = "Indisponibila"
End select
MsgBox VMsg
- Cadre - ofera posibilitatea de a grupa controale nrudite (butoane de optiune,
casete de validare). nti se deseneaza cadrul si apoi controalele.
- Caseta cu lista (list box) afiseaza o lista de articole din care utilizatorul poate
selecta unul sau mai multe. Pentru a prelucra articolele selectate se utilizeaza evenimentul
Click sau Double Click ale casetei cu lista.
Exemplu:

Private Sub lstLista1_Dblclick( )

Afiseaza articolul selectat din caseta cu lista

txtSelectie = lstLista1

n caseta de text txtselectie

End Sub
Proprietatea ListCount a unei casete cu lista returneaza numarul de articole din lista, iar
proprietatea ListIndex determina articolul curent selectat astfel:
ListIndex = 0

pentru primul articol din lista

= ListCount -1

pentru ultimul articol din lista

= -1

daca nu a fost selectat nici un articol din lista

Pentru a selecta mai multe articole din lista se utilizeaza proprietatea Multiselect astfel:
MultiSelect =

0 - nu sunt admise selectii multiple (implicita)


1 - selectie simpla (executare click cu mouse sau apasare tasta
spatiu duce la selectarea sau deselectarea unui articol din
lista;
se pot utiliza sageti pentru mutarea selectiei de la un articol
la altul.
2 - selectie multipla (se apasa shift si apoi click cu mouse sau
utilizare sageti pentru a selecta articolul urmator adaugat la
elementul selectat anterior.Pentru selectii multiple de articole
neadiacente se utilizeaza tasta Ctrl si Click cu mouse pe
articol.

Proprietatea Selected pe valoarea True sau False specifica daca un articol din lista este
selectat sau nu.
Exemplu de cod atasat:
iNr = lstlista1.ListCount - 1

afiseaza toate articolele selectate din

lista (caseta cu lisa) lstLista1


For x = 0 To iNr
If lstLista1.Selected(x) = True Then
MsgBox lstLista1.List(x)
End If
Next
Pentru a adauga articole listei se utilizeaza metoda AddItem
- Casete combinate (ComboBox) - combina facilitatile unui TextBox cu cele ale
unui ListBox (contine o caseta cu lista si o caseta text).
Proprietati si metode comune ale casetelor cu lista si casetelor combinate.
Proprietate

Semnificatie

Exemplu de utilizare

ListCount

Nr. articole ale listei

iOptiune
lstLista1.ListCount - 1

ListIndex

Indexul numeric al articolului curent

lstLista1.ListIndex = 3

List

Asociata cu indexul returneaza articolul sArt3 = lstLista1.List(3)


curent din lista

Selected

Are valoarea True daca este selectat If lstLista1.Selected(3) Then


articolul
.

Sorted

Lista va fi sortata daca


proprietatii sorted este True

Metode

Semnificatie

valoarea lstLista1.Sorted = True

Exemplu de utilizare

AddItem

Adauga listei un articol de tip sir

lstLista1.AddItem = "Ionescu
Ion"

Clear

Elimina toate articolele din lista

lstLista1.Clear

RemoveItem

Elimina un singur articol din lista

lstLista1.RemoveItem 5

Utilizarea matricelor - variabile multidimensionale

Dim sStudenti(15) As String


sStudenti(0) = "Ionescu Ion"
.............
sStudenti(14) = "Popescu Vasile"
For iIndex = 0 To 14
MsgBox sStudenti(iIndex)
Next
Functia UBound(sStudenti) returneaza numarul de elemente ale matricii
(tabloului) Studenti.
Exemplu de utilizare casete cu lista:
Private Sub frmForma1Click( )
Dim sStudenti(15) As String

Declara matricea sStudenti de 15


elemente

sStudenti(0) = "Ionescu"
sStudenti(1) = "Florescu"

' Initializeaza elementele matricii

...........
For iC = 0 To Ubound(sStudenti) - 1
lstLista1.AddItem (sStudenti(iC))
Next
numarul

Adauga fiecare element al matricii ca


articol n caseta cu lista lstLista1
Functia

Ubound

returneaza

de elemente ale matricii


lstLista1.ListIndex = 0

Selecteaza primul articol din lista

- Bare de derulare (orizontale si verticale) permit parcurgerea unor liste mari. Ori
de cte ori se efectueaza click pe o bara de derulare se executa procedura evenimentului
Change. Cnd se trage bara de derulare se declanseaza evenimentul Scrool, iar la
eliberarea de pe bara de derulare se executa evenimentul Change.
- Spinner (SpinButton) - permite incrementare sau decrementare numere, prin
atasare si activarea unui buton spinner unei etichete sau unei casete de text.
- Controale cu imagini - permit afisarea de imagini pe suprafata unei forme,
putnd utilza pentru aceasta doua tipuri de controale si anume: PictureBox si Image.
Controalele Image pot fi create din bara de instrumente Toolbox Controls, aceste
controale prezentnd si avantajul ca imaginile plasate n ele pot fi redimensionate prin
stabilirea proprietatii Stretch a controlului la valoarea True. Controalele Image nu accepta
grafica desenata n timpul rularii si nu pot fi utilizate ca recipiente pentru alte controale.
Controalele PictureBox accepta grafica desenata n timpul rularii programului
utiliznd metodele Line, Circle si Pset. Daca grafica ncarcata dintr-un fisier depaseste
suprafata controlului PictureBox, grafica va fi trunchiata exceptnd situatia n care
proprietatea AutoSize are valoarea True.
Fisierele imagine pot fi importate n controale Image sau PictureBox fie prin
setarea proprietatii Picture a controlulu, fie cu ajutorul functiei LoadPicture() n timpul
rularii programului.
Exemplu. Pentru a incarca fisierul imagine Poza.jpg din directorul C:\Imagini, n
controlul Image care are numele (Name) imag1 se va scrie instructiunea:

imag1.Picture = LoadPicture("C:\Imagini\Poza.jpg")
Pentru a elimina imaginea dintr-un control imagine se va folosi functia
LoadPicture fara nici un argument ca n exemplul de mai jos:
imag1.Picture = LoadPicture()
- Controale lista de fisiere, de unitati de disc si de directoare
-

DriveListBox - permite selectarea, la rularea programului, a unei unitati de disc

DirListBox - afiseaza o lista ordonata a directoarelor si subdirectoarelor de pe


disc si prin click cu mouse permite utilizatorului sa navigheze prin directoare

FileListBox - afiseaza fisierele din directorul specificat de proprietatea Path la


rularea programului.

3.9. Referire celule dintr-o foaie de calcul tabelar n Visual Basic


Se face astfel:
Sheets(n).Cells(nr.rnd, nr.coloana)
Exemplu. Instructiunea
Sheets(3).Cells (1,2) = "Ionescu"
depune sirul 'Ionescu' n celula B1 (rnd 1 coloana 2) din a treia foaie de calcul a
registrului de calcul Excel curent. Pentru precizarea celulei (nr.rnd, nr.coloana) se pot
utiliza variabile n bucle For.
Exemplu:
For irand = 1 To 5
lstLista1.AddItem (Sheets(3).Cells(irand,2))
Next
adauga n caseta cu lista lstLista1 cinci nregistrari din a treia foaie de calcul, coloana 2 (B) rndurile de la 1 la 5 din registrul
de calcul curent.
3.10. Gestionarea unui proiect
Resursele unui proiect sunt memorate ntr-un fisier al proiectului care n Visual Basic este un fisier cu extensia .RES.

n cazul n care limbajul Visual Basic este utilizat din Excel, fisierul proiect este un fisier cu extensia .XLS.
Componentele proiectului pot fi vizualizate selectnd din meniul View optiunea Project Explorer astfel:

n fereastra din stnga ecranului vor fi afisate componentele proiectului si anume:


-

componente Excel

componente Visual Basic (Forms, etc.)

dupa cum este ilustrat n ecranul care urmeaza:

3.11. Crearea si extinderea meniurilor


Limbajul Visual Basic permite crearea de meniuri personale pentru o aplicatie cu ajutorul editorului de meniuri.
Unei forme i se poate asocia o pictograma prin stabilirea proprietatii Icon a formei n faza de proiectare atribuind
proprietatii Icon un fisier cu formatul .ICO. Daca nu se specifica o pictograma, se va utiliza pictograma Visual Basic
prestabilita pentru forme.
Aceasta pictograma va aparea n coltul din stnga sus al formei.
Aceste elemente ale limbajului nu pot fi create si utilizate n Visual Basic sub Excel.
3.12. Realizarea programului executabil pentru aplicatie (proiect)
Programul executabil pentru o aplicatie Windows (proiect) este un fisier executabil cu extensia .EXE care poate fi
rulat n afara mediului de dezvoltare Visual Basic. Acest fisier mpreuna cu alte fisiere auxiliare necesare programului va fi
livrat viitorilor utilizatori ai aplicatiei si va putea fi instalat si executat sub sistemul de operare Windows.
Crearea programului executabil poate fi realizata pentru un proiect creat sub Visual Basic (si nu sub Excel ca n
cazul de mai sus).
3.13. Baze de date, Gestionarul de date, controlul Data, obiecte Set de nregistrari,
SQL pentru interogarea bazelor de date

Gestionarea datelor n Visual Basic se realizeaza cu componenta Data Manager care este o extensie a
programului Visual Basic ce permite crearea de baze de date Microsoft Jet (Access).
O baza de date creata cu gestionarul de date Visual Basic poate fi manipulata cu programul Access si o baza de
date creata cu programul Access poate fi gestionata cu gestionarul de date al programului Visual Basic.
De asemenea programul Visual Basic poate accesa n citire o baza de date de urmatoarele tipuri:
Btrieve
dBase III, IV
FoxPro 2.0, 2.5
Paradox 3.X, 4.X
O baza de date creata sub Visual Basic consta din unul sau mai multe tabele si relatiile dintre tabele memorate
ntr-un fisier baza de date.
Pentru crearea unei baze de date se selecteaza optiunea New Database din meniul File al gestionarului de date.
Dupa crearea si salvarea fisierului ce va contine baza de date se deschide fereastra Database ce contine
urmatoarele bitoane de comanda:
-

Open - deschide o baza de date existenta si afiseaza datele acesteia

New - creaza un nou tabel n baza de date curenta

Delete - elimina un tabel din baza de date curenta

Design - afiseaza si eventual modifica structura unui tabel existent

Attach - ataseaza tabele la distanta

Relations - defineste relatii ntre date din tabele diferite.

Controlul Data este un control predefinit ce poate fi utilizat pentru conectarea unei aplicatii Visual Basic la sursa de
date selectata si pentru legarea altor controale (casete de text, casete cu imagini, etc.) cu cmpuri din tabele ale bazei de
date.astfel nct orice modificari efectuate n continutul acestor controale sunt automat nregistrate n cmpurile
corespunzatoare din baza de date. Spre exemplu daca un control caseta de text este legat de un cmp al bazei de date,
atunci orice modificare a continutului casetei de text va fi automat efectuata n cmpul asociat din baza de date.
Un obiect set de inregistrari Recordset este un set logic de nregistrari din baza de date cu ajutorul caruia pot fi
accesate datele din baze de date multiple prin cod Visual Basic deci fara a utiliza controlul Data sau controale legate.
O alta modalitate pentru interogarea, actualizarea si gestionarea bazelor de date relationale o constituie limbajul
SQL (Structured Query Language) ale carui instructiuni pot fi utilizate n programe Visual Basic pentru accesarea si
gestionarea datelor din baze de date relationale.

Probleme rezolvate
Se creaza un registru de calcul Excel care contine urmatoarele foi de calcul:
- Sheet1 (Personal) - Lista personalului angajat, cu urmatoarele cmpuri:
Marca
Nume si prenume
Functia

Salar tarifar orar

- Sheet2 (Pontaj) - Orele lucrate n luna., cu urmatoarele cmpuri:


Marca
Nume si prenume
Total ore lucrate ( SUM(Ziua : Ziua31) )
Ziua 1 (ore lucrate)
Ziua 2 (ore lucrate)
.
Ziua 31 (ore lucrate)

-Sheet3 (Retineri) - Lista retineri n luna., cu urmatoarele cmpuri:


Marca
Nume si prenume
Avans

CAR
Rate

- Sheet4 (Salarii) - Lista salariilor pentru luna., ce contine urmatoarele cmpuri:


Marca
Nume si prenume
Functia
Tarif orar
Ore pontate
Salar realizat
Retineri
Salar net

n foile de calcul Pontaj, Retineri, Salarii, cmpurile Marca, Nume si prenume sunt preluate prin referire din foaia de calcul
Personal.

De asemenea , cmpurile Functia, Ore pontate sunt preluate prin referire n foaia de calcul Salarii din foile de calcul
Personal respectiv Pontaj, iar cmpul Retineri n foaia Salarii se obtine prin sumarea cmpurilor Avans, CAR, Rate din foaia
de calcul Retineri.
n acest mod orice modificare asupra datelor n foile de calcul Personal, Pontaj, Retineri, se vor reflecta automat si n foaia
de calcul Salarii.
Din editorul Visual Basic, sa se creeze n foaia de calcul Salarii, un formular care sa contina butonul de comanda Calcul
Salarii caruia sa i se ataseze codul Visual Basic care identifica ultimul rnd completat n foile de calcul, calculeaza si depune
rezultatele obtinute n cmpurile Salar Realizat, Salar Net din foaia de calcul Salarii utiliznd formulele:
Salar Realizat = Tarif Orar * Ore Pontate
Salar Net = Salar Realizat - Retineri
La executia formei prin click cu mouse-ul pe butonul Calcul Salarii se vor realiza operatiile mentionate mai sus.
Creare forma:

Codul Visual Basic atasat butonului Calcul Salarii:

Executie forma:

Rezultatul obtinut dupa executia formei:


n continuare se extinde problema cu alte tipuri de controale astfel:
n formularul Form1 se creaza o caseta cu lista ListBox1 ce va contine numele si prenumele angajatilor si un control imagine
Image1 n care se va incarca un fisier imagine. Codul Visual Basic pentru completarea casetei cu lista si ncarcarea imaginii
va fi atasat butonului de comanda Command Button1. n ecranele ce urmeaza sunt ilustrate noile obiecte create , codul
visual basic si rezultatul executiei formei.

Formularul Form1

Codul Visual Basic

Rezultatul executiei formei

Rezultatul executiei formei dupa setarea proprietatilor BackColor si Font ale casetei cu lista pe alte valori

Probleme propuse spre rezolvare


1. Sa se scrie codul Visual Basic care sa realizeze completarea tuturor cmpurilor n foaia de calcul Salarii (se pleaca de la o
foaie de calcul Salarii vida), utiliznd foile de calcul Personal, Pontaj, Retineri si formulele de calcul mentionate mai sus.
2. Sa se scrie codul Visual Basic pentru crearea foilor de calcul Pontaj, Retineri plecnd de la foaia de calcul Personal
(valorile efective pentru orele pontate si retineri urmnd a fi preluate ulterior de la tastatura).
Teste de verificare

1. ntr-un mediu de programare Visual obiectele principale sunt:


a) aplicatiile
b) formele si controalele desenate n forme
c) procedurile
2. n Visual Basic obiectele pot fi create:
a) cu comanda Object din meniul Insert a programului Excel
b) folosind barele cu instrumente
c) din meniul Edit al editorului Visual Basic
3. n programarea orientata obiect si dirijata de evenimente, majoritatea obiectelor
raspund la:
a) evenimente
b) controale
c) proprietati
4. Comportamentul unui obiect:
a) este predefinit
b) nu poate fi modificat de utilizator
c) poate fi modificat de utilizator prin atasare de cod corespunzator
5. Un obiect este definit de:

a) un set de proprietati
b) comportament
6. Proprietatile descriu:
a) actiunile obiectelor
b) obiectele prin intermediul datelor
c) metodele prin intermediul codului asociat
7. n gramatica programarii orientate spre obiecte:
a) obiectele sunt verbe
b) proprietatile sunt adjective
c) metodele sunt substantive
d) obiectele sunt substantive
e) metodele sunt verbe
8. Referirea proprietatilor sau metodelor n cadrul codului scris n Visual Basic se poate
face prin:
a) numele proprietatilor sau metodelor
b) utilizarea notatiei cu punct (nume obiect. Nume proprietate / metoda)
9. Proprietatile unui obiect pot fi setate:
a) numai n faza de proiectare utiliznd fisa Properties
b) numai prin program utiliznd notatia cu punct
c) att n faza de proiectare ct si prin program
10. Metodele pot fi executate:
a) att n faza de proiectare ct si n momentul executiei programului
b) numai n momentul executiei programului

c) numai n faza de proiectare


11. Pentru referirea unui obiect n scrierea codului se poate utiliza:
a) numele dat obiectului n proprietatea Capture
b) numele dat obiectului n proprietatea Name
c) numele obiectului dat n proprietatea Capture, fie cel dat n proprietatea Name
12. O variabila n Visual basic poate fi declarata:
a) implicit utiliznd sufixul
b) explicit utiliznd instructiunea Dim
c) cu instructiunea Declare
d) cu instructiunea Static
13. O variabila locala poate fi facuta permanenta n interiorul unei proceduri daca:
a) este declarata cu instructiunea Dim
b) este declarata cu instructiunea Static
14. O variabila declarata cu instructiunea Static
a) este vizibila din orice punct al aplicatiei
b) si conserva valoarea nsa este vizibila numai n cadrul procedurii n care a fost
declarata
15. Cel mai nalt domeniu de vizibilitate a unei variabile se defineste cu instructiunea:
a) Static
b) Dim
c) Global
16. Tipurile de date definite de utilizator pot fi declarate:
a) la nivelul oricarei proceduri

b) la nivel de forma
c) numai n sectiunea General / Declaration a modului de cod
17. Functia InputBox este:
a) o functie definita de utilizator pentru preluare date de la tastatura
b) o functie a limbajului Visual Basic pentru preluare date ntr-o caseta de text
predefinita
c) o functie Visual Basic pentru afisarea valorii unei variabile
18. n limbajul Visual Basic structurile de ramificare pot fi descrise:
a) cu instructiunea If..End If
b) cu instructiunea Do..Loop
c) cu instructiunea Select..End Select
d) cu instructiunea For...Next
e) cu functia Iif(.)
f) cu instructiunea If.Else If.EndIf
19. n limbajul Visual Basic structurile de ciclare pot fi descrise cu instructiunile:
a) Select.End Select
b) While.Wend
c) For..Next
d) If..ElseIf..EndIf
e) Do.Loop
20. n Visual Basic pot fi definite urmatoarele tipuri de proceduri:
a) macro - definitii
b) proceduri - subrutine

c) macro- functii
d) proceduri - functii
21. O procedura subrutina poate realiza:
a) returneaza o valoare
b) efectueaza o actiune dar nu returneaza nici o valoarea
c) efectueaza o actiune si poate returna o valoare
22. n definirea unei proceduri subrutina trebuie respectate conditiile
a) ncepe cu instructiunea Sub
b) ncepe cu prima instructiune din corpul procedurii
c) Continua cu instructiunile din corpul procedurii
d) Se poate termina cu instructiunea End Sub
e) Se termina cu instructiunea End Sub
f) n instructiunea Sub trebuie precizat numele procedurii
g) Numele procedurii se va termina cu ( )
23. n definirea unei proceduri functii trebuie respectate conditiile:
a) ncepe cu instructiunea Sub
b) ncepe cu prima instructiune din corpul functiei
c) ncepe cu instructiunea Function
d) Se poate termina cu instructiunea End Function
e) Continua cu instructiunile din corpul functiei
f) n instructiunea Function trebuie precizat numele functiei si argumentele
ncadrate ntre paranteze
g) Se termina cu instructiunea End Function

24. O procedura de tip functie poate realiza:


a) Efectueaza o anumita operatie
b) Poate returna o valoare
c) Efectueaza o operatie dar nu returneaza nici o valoare
d) Returneaza o valoare
e) Att la definire ct si la apelare parantezele sunt obligatorii
25. O procedura de orice tip (Sub sau Function):
a) poate fi atasata unui obiect grafic
b) nu poate fi atasata unui obiect grafic
c) numai procedurile subrutina pot fi atasate unor obiecte grafice
d) numai procedurile de tip functie pot fi atasate unor obiecte grafice
26. Se creeaza o caseta text (Text Box) numita txtCaseta1. Pentru a memora textul
introdus n aceasta caseta n variabila sv1 se scrie instructiunea:
a) sv1 = txtCaseta1.Name
b) sv1 = txtCaseta1.Text
c) sv1 = Text
d) sv1 = txtCaseta1.Capture
27. Pentru crearea unui grup de butoane de optiune ntr-un cadru se procedeaza astfel:
a) Se deseneaza mai nti butoanele de optiune
b) Se deseneaza cadrul astfel nct sa contina butoanele de optiune
c) Se deseneaza cadrul si apoi butoanele de optiune n interiorul cadrului
28. ntr-un grup de butoane de optiune pot fi active la un moment dat:
a) mai multe butoane din grup

b) un singur buton din grup


c) toate butoanele din grup
d) nici un buton din grup
29. ntr-un grup de casete de validare pot fi active la un moment dat:
a) mai multe casete de validare din grup
b) nici o caseta de validare din grup
c) numai o singura caseta de validare din grup (restrictie impusa)
d) toate casetele de validare din grup
30. Obiectele care pot constitui containere de controale (alte obiecte) pot fi:
a) Formele
b) Butoanele de comanda
c) Cadrele (frame)
d) Casetele cu lista (ListBox)
e) Casetele combinate (ComboBox)
31. Adaugarea de articole unei casete cu lista (ListBox) se poate realiza:
a) prin tastare text n interiorul casetei
b) utiliznd metoda AddItem
c) prin setarea proprietati Text a casetei
d) prin setarea proprietatii Value a casetei
32. Referirea celulei C1, din a patra foaie de calcul a registrului de calcul Excel curent, n
Visual Basic se face astfel:
a) C1
b) Sheets(4).Cells(C1)

c) Sheets(4).Cells(1,3)