Sunteți pe pagina 1din 25

Motto

Isi uita nevoile vechi pentru a mplini lipsuri noi


Grigore Moisil

Lectia 2 Concepte din Programarea Orientata Pe Obiecte aplicate Documentelor Word, Foilor De Calcul Excel si diapozitevelor Power Point Scopul utilizarii limbajului de programare VBA este acela de a: scrie programe cu care : a ) sa controlam comportarea obiectelor Excel b) sa realizam aplicatii complexe in diverse domenii de activitate. Programul instructiuni. este o multime ordonata de

Instructiunea defineste o actiune ; conform regulilor de sintaxa al limbajului de programare se comanda sistemului de calcul sa execute o instructiune. Algorimul este un sistem de reguli care conduce de la informatia initiala la o solutie cu ajutorul unor Operatii: succesive ordonate unic determinate. Algorimul are ca forma de reprezentare : limbajul pesudocod schema logica

Obiectul este o entitate din lumea reala avand limite precise si un sens prcis in contextul 1 problemei studiate . Entitatea Un program (aplicatie) reprezinta o secventa de actiuni (operatii) care se executa asupra unor entitati (valori sau obiecte). Altfel spus un program (aplicatie in vba) consta intr-un set de instructiuni prin intermediul carora se transmite calcultorului : ce operatii sa efectueze in ce ordine si asupra caror obiecte trebuie sa actioneze. Limbajul de programare VBA imbina utilizarea obiectelor cu posibilitatile folosirii tehnicii avansate de programare ( modularizare, structurare, folosirea instructiunilor de control a secventei de executie). Limbajul de programare stabileste ce entitati pot fi prelucrate si in ce fel anume, dar si modul in care trebuie sa fie descrise atat entitatile, cat si actiunile. Din punctul de vedere al programatorilor un obiect este o multime de date plus o serie de operatii (metode) care manipuleaza datele2. 5.1.Obiecte si colectii Obiect este orice entitate pe care o putem controla cu ajutorul limbajului Visual Basic. Obiecte sunt elementele constitutive ale Excel, dar si ceea ce putem construi cu ajutorul sau. Visual Basic defineste aceste proceduri.
1 2

Popa Gheorghe, Iliescu Matei- Visual Basic-Editura Cison-2002 Anton Cerchizan

Obiectul de baza cu care opereaza Excel se numeste Application, acesta contine valorile parametrilor si optiunilor de lucru (stabilite prin intermediul comenzii Options din meniul Tools). Exemplu : ActiveCell, ActiveSheet, ActiveDialog.ActiveWorkbook, etc. Obiectele foii de lucru : randuri, coloane, domenii de celule, celule, obiecte grafice. 5.2. Utilizarea obiectelor Obiectele au anumite trasaturi specifice care le caracterizeaza si pe care le numim proprietati. Proprietatile reprezinta atribute ale obiectelor, care descriu aspectul, starea sau comportarea acestora. Pentru obiectul Workbookcele mai semnificative sunt : Name, PrecisionAsDisplayed, ReadOnly, Saved sau pentru obiectul Worksheet sunt: Name, Next, Previous, Type, Visible etc. Obiectele sunt caracterizate si prin actiunile pe care pot sa le efectueze, actiuni numite metode. Cand programam in Visual Basic avem posibilitatea sa manevram obiectele care ne intereseaza in trei feluri : sa stabilim valoarea unei proprietati a obiectului si, in acest fel, sa-i modificam starea sa citim valoarea curenta a unei proprietati si, deci, sa-i determinam starea sa cerem ca un obiect sa efectueze una dintre actiunile (metodele ) care-l caracterizeaza. Proprietatile fiecarui obiect au valori implicite specifice fiecarui obiect. Modificarea acestor valori
4

se poate face in faza de proiectare prin modificarea valorilor implicite cu caseta Properties. Modificarea valorilor se poate face in faza de executie se face prin cod. Pentru ca sa punem proprietatea la o anumita valoare, folosim urmatoarea sintaxa :
Obiect.proprietate = expresie unde : obiect - este o referinta la un obiect (eventual incluzand recipientii sai) proprietate -este numele unei proprietati a obiectului expresie - este enuntul care va genera valoarea pe care dorim sa o atribuim proprietatii

De exemplu, pentru afisarea primei foi si pentru ascunderea foii de lucru Sheet13, din mapa activa, folosim urmatoarele enunturi :
Sub VizInviz () ActiveWorkbook.Worksheets(1).Visible = True ActiveWorkbook.Worksheets(Sheet3).Visible = False End Sub

Pentru ca sa preluam valoarea unei proprietati folosim urmatoarea sintaxa :


variabila = obiect.proprietate unde : variabila - este variabila in care se va pastra valoarea citita din proprietate obiect - este o referinta la un obiect (eventual incluzand recipientii sai) proprietate - este numele unei proprietati a obiectului.

Pentru ca sa preluam, de exemplu, numele unei foi de lucru, ca un sir de caractere si pentru ca sa-l afisam intr-o caseta pentru dialog predefinita folosim proprietatea Name si functia MsgBox() :
Sub AfiseazaNume() Dim NumeFoaie As String NumeFoaie = ActiveSheet.Name MsgBox Numele foii de lucru este & NumeFoaie End Sub

Valoarea unei proprietati o putem folosi in expresii complexe, in mod asemanator folosirii variabilelor sau functiilor. Cum punem obiectele la lucru ? Pe langa proprietati , obiectele au metode. Acestea stabilesc actiunile pe care le poate executa obiectul si care pot sa afecteze starea unor proprietati ale acestuia. Argumentul, spre deosebire de proprietati care primesc sau returneaza o singura valoare, pot sa primeasca si mai multe valori de lucru. Pentru folosirea metodelor intr-o procedura exista trei situatii posibile: a) daca metoda apelata nu primeste argumente, folosim sintaxa urmatoare: obiect.metoda
Exemplu: Sub EliminaFoaie() ActiveWorkbook.Worksheets(Sheet3).Delete End Sub Sub CopiazaButon() ActiveSheet.Buttons(1).Copy End Sub

b) daca metoda primeste o lista cu argumente, dar nu dorim sa salvam valoarea returnata de metoda, separam numele metodei de lista de argumente cu spatiu, iar argumentele prin separatorul de lista : obiect.metoda lista_argumente Exemplu : Se foloseste metoda Move pentru mutarea foii Sheet3 din mapa activa inaintea foii Sheet1 din mapa CP1.XLS si metoda Copy, pentru copierea foii Sheet1 dupa foaia Sheet9 din mapa CP2.XLS.Se foloseste numele argumentelor before si after si separarea lor de argumentul propriu-zis prin operatorul :=
Sub MutaFoaie() ActiveWorkbook.Worksheets(Sheet3).Move_ before := Workbooks(CP1). Worksheets(Sheet1) End Sub

c) daca folosim valoarea returnata de metoda, este obligatorie introducerea listei de argumente intre paranteze : variabila = obiect.metoda(lista_argumente) unde : obiect -este o referinta la un obiect (eventual incluzand numele recipientilor sai) metoda -numele metodei folosite lista_argumente lista argumentelor despartite intre ele prin separatorul de lista Argumentele pot sa fie precizate in doua feluri :
7

ca argumente conventionale, caz in care este importanta ordinea din lista, iar Visual Basic le interpreteaza in functie de aceasta) sau ca argumente cu nume (cand ordinea nu este importanta, iar identificarea numelui se face pe baza numelui indicat)

Variabila numele variabilei in care se salveaza valoarea returnata de metoda


Sub CopiazaFoaie() Application.Worksheets(Sheet1).Copy_ Workbooks(Buget).Worksheets(Balanta) End Sub After :=

Exemplu: Metoda Characters returneaza un sir de caractere cu lungimea ceruta, din obiectul prelucrat, apoi transforma in indice un caracter al textului originar
Sub IaCaractere() Dim Sir As String Sir = ActiveCell.Characters(3, 5) ActiveCell.Characters(3, 1).Font.Subscript = True End Sub

Nota : Separatorul din lista este stabilit in fila cu eticheta Module General, din caseta pentru dialog a comenzii Option, din meniul Tools Constantele introduc valori care nu se modifica in timpul executiei unui program sau intre doua executii ale acestuia.
8

Variabilele permit memorarea unor date care pot fi modificate. In Visual Basic declararea unei variabile se face prin intermediul instructiunilor Public.Private.Static sau Dim: {Public|Private|Static|Dim} tip_date}[.] nume_variabila [As

Variabilele de tip Variant este o variabila de tip special care se aseamana din punctul de vedere al memorarii datelor unei celule dintr-o foaie de lucru. Ambele pot sa contina numere, siruri, date calendaristice, referinte, etc.
Sub DeterminTip() Dim Var X(10) As Integer Dim Cod As Integer, Tip As String Var = #11-11-1995# Cod = VarType(Var) Returneaza: 7 Tip = TypeName(Var) Returneaza : Date Cod = VarType (X) Returneaza: 8194=8192(tablou)+2(de intregi) Tip = TypeName(X) Returneaza: Integer End Sub

Intr-o variabila Variant putem sa memoram si alte tipuri de informatii ca: -valoarea Empty- este interpretata ca zero sau sir nul in functie de context -valoarea Null- indica valori necunoscute sau lipsa. Valoarea Null se propaga in expresii -valoarea Error reprezinta coduri de eroare definite de utilizator Proceduri. Se declara explicit o constanta si o variabila locala de tip Integer, respectiv Single intr-o procedura :
9

Sub Calcul() Const LIMITA_MAX As Integer = 16 Dim SumaTotala As Single ... End Sub

Aceste constante /variabile poarta numele de constante sau variabile de modul. Prin combinarea mai multor variabile putem obtine un tip de date definite de utilizator (exemplu : inregistrarea atributelor entitatii Angajati :
Type Angajati Marca As Integer Nume As String * 15 Prenume As String * 10 DataNasterii As Date SalariuBaza As Integer DataAngajarii As Date Casatorit As Boolean Copii As Integer End Type Function CalculSalariu(ProcentIndexare As Single) As Single Dim Angajat1 As Angajati Dim MarcaAngajat As Integer, SalBaza As Single MarcaAngajat = Angajat1.Marca SalBaza = Angajat1.SalariuBaza SalBaza = SalBaza * (1 + ProcentIndexare / 100) Angajat1.SalariuBaza = SalBaza If Angajat1.Copii<>0 Then . End If End Function

Operatori pentru siruri de caractere: & concatenare (adauga al doilea sir la sfarsitul primului) Like similitudine (verifica daca sirul al doilea se gaseste in cadrul primului)

10

5.3. Enunturile VBA Un enunt Visual Basic este o constructie care introduce o declaratie, o definitie sau o actiune. Enunturile trebuie sa respecte, in intregime, o anumita sintaxa ceruta de limbaj. Declaratiile sunt enunturi care anunta intentia de a folosi variabile cu anumite caracteristici (nume, tip de date, valori initiale). Definitiile permit introducerea constantelor simbolice sau a unor elemente de structurare si de modularizare a programelor care se numesc proceduri. Enunturile care descriu o actiune poarta numele de instructiuni. Dintre instructiunile Visual Basic prezentam urmatoarele: a) instructiunea de atribuire prin care valoarea unei expresii este memorata intr-o variabila. Sintaxa unei instructiuni de atribuire este urmatoarea:

[Let] variabila = expresie

b) in legatura cu stabilirea valorii unei proprietati sau cu executia unei metode a unui obiect se prezinta instructiunea With :

With obiect [secventa_instructiuni] End With


11

unde:
o obiect

- este numele obiectului sau al variabilei de un tip de date definit de utilizator asupra caruia (careia) se va actiona in secventa de instructiuni din interiorul instructiunii With o secventa_instructiuni este secventa de instructiuni prin care se va actiona asupra obiectului sau a variabilei de un tip de date definit de utilizator, fara sa mai fie necesara nominalizarea repetata a acestuia (acesteia).
Function FormatCelula() With Application.Cells(1, 1) Font.Name = Verdana Font.Bold = True Font.Size = 12 Value = 0,23 End With End Function Function Imbricare() Dim obj As Object Set obj = Asociem variabila cu un obiect With obj Height = 100 Identic cu obj.Height = 100 Caption = BilantIdentic cu obj.Caption = Bilant With. Font Color = RE Identic cu obj.Font.Color = Red Bold = True Identic cu obj.Font.Bold = True End With End With End Function

c) daca un enunt nu incape intr-o linie putem sa-l continuam pe linia urmatoare prin plasarea caracterului de continuare, pe ultima pozitie a liniei curente. Aceste se compune dintr 12

un caracter spatiu ( ), urmat de caracterul subliniere (_). Procedurile sunt elemente folosite in Visual Basic pentru modularizarea programelor. Visual Basic accepta doua tipuri de proceduri: Sub si Function; diferenta dintre le fiind faptul ca procedurile Function pot sa returneze o valoare. Procedurile sunt constituite din urmatoarele parti: marcajele de inceput si sfarsit sunt realizate cu instructiunile Sub si End Sub respectiv Function si End Function parametrii formali sunt separati prin virgula. Rolul acestora este de a receptiona, la apelul procedurii, valorile de lucru(argumente) corpul procedurii care este alcatuit din instructiunile care determina actiunile efectuate de procedura Definirea procedurilor Private este plasat inaintea instructiunii Sub, daca dorim ca procedura sa fie accesibila numai celorlalte proceduri din modulul in care a fost definita. Public- este plasat inaintea instructiunii Sub, daca dorim ca procedura sa fie accesibila tuturor procedurilor din toate modulele Static- este folosit in cazul in care dorim sa pastram valorile tuturor variabilelor locale intre cele doua apeluri ale procedurii. El trebuie plasat inaintea instructiunii Sub.
13

Sub CalculSuprafata (ByVal Raza As Single) Dim Suprafata As Double Variabila locala If Raza < 0 Then Test argument Exit Sub Abandon daca este incorect End If Suprafata = 3,14 * Raza ^ 2 Calcul suprafata cerc Debug.Print Suprafata Afisarea rezultatului End Sub

Organizarea si accesarea foilor pentru module In Excel procedurile le pastram sunt pastrate in foi speciale, numite foi pentru module sau pe scurt module. Acestea sunt create si introduse in mapa activa prin executia subcomenzii Module a comenzii Macro, din meniul Insert. Un modul este alcatuit din : tipuri de date definite de utilizator, din structuri de date (constante, variabile, tablouri) si din proceduri. Organizarea sistematica a unui modul este importanta pentru ca usureaza intelegerea intentiilor proiectantului si simplifica munca de intretinere. De aceea, este bine sa grupam procedurile, care contribuie la rezolvarea fiecarei sarcini mai complexe, in module separate. In cadrul unui modul, recomandam urmatoarea organizare : la inceput o explicatie globala asupra scopului modulului continuam cu declaratii pentru : optiuni Visual Basic, constante, variabile si tipuri de datedefinite de utilizator
14

definim procedurile, precedate de comentarii care sa prezinte interfata (parametrii si valoare returnata) si sa explice actiunile efectuate Folosind mecanismul de apel al procedurilor putem sa executam proceduri din acelasi modul cu apelantul din aceeasi mapa sau din alte mape. In cazul in care apelam o procedura dintr-un alt modul, va trebui sa indicam numele modulului (intre paranteze drepte) si numele procedurii, separate printr-un punct. Daca dorim sa folosim procedura Prelucrare() de tip Function, din modulul Modul_Calcul, folosim o constructie de felul urmator :
Sub Calcule() Var = [Modul_Calcul].Prelucrare(Arg1, Arg2) End Sub

Executia unei proceduri definite intr-o alta mapa este posibila numai dupa ce stabilim o referinta din Visual Basic la mapa respectiva. Dupa stabilirea referintei, modulele si procedurile mapei sunt puse la dispozitia Visual Basic si deci vor fi accesibile. Pentru stabilirea unei referinta la o alta mapa :
1. Salvam mapa cu care dorim sa stabilim referinta, daca nu a fost salvata deja (mapa tinta) 2. Selectam mapa sursa a referintei

3. Selectam un modul Visual Basic si execum


comanda References, din meniul Tools

15

4. In caseta pentru dialog References, selectam

numele mapei tinta in caseta Available References, iar daca numele nu apare in lista, actionam butonul Browse, pentru a-l cauta si include in lista 5. Selectam caseta de control din dreptul numelui mapei tinta , daca nu a fost deja selectata. 6. Actionam butonul OK

5.4 . Apelarea functiilor Excel din VBA Aplicaiile din suita Office au ca limbaj de programare (sau de scripting) nativ Visual Basic for Applications (VBA). Acesta este un dialect specializat al limbajului Visual Basic de la Microsoft. VBA pune la dispoziia programatorului un set de obiecte, metode, proprieti i funcii care permit efectuarea unor prelucrri complexe asupra documentelor Office. De asemenea, cu ajutorul lui VBA se pot crea forme (cu majoritatea elementelor de interactivitate disponibile n Visual Basic) pentru automatizarea generrii sau prelucrrii documentelor, dar i pentru realizarea schimbului de informaii cu alte aplicaii. Functiile Excel sunt in marea lor parte disponibile si la scrierea codurilor VBA. Unele dintre acestea nu-si gasesc utilitatea in V.B.A. deoarece Visual Basic ofera operatori specifici ce au acelasi efect ca functiile Excel. Obiectul WorksheetFunction este utilizat ca element intermediar in apelarea functiilor Microsoft Excel specifice foii de lucru care pot fi apelate de Visual Basic. Functiile predefinite din VBA nu se utilizeaza alaturi de WorksheetFunction chiar daca au aceeasi denumire cu functii din Microsoft Excel.
16

De exemplu Application.WorksheetFunction.Log va returna alta valoare decat Log. Exemplul urmator prezinta modul de apelare a functiei Max dintr-o macroinstructiune:
Sub Maximum() Dim K As Range Set K = Worksheets(sheet1).Range(C1:C23) Maxim =Application.WorksheetFunction.Max(K) MsBox (Maximul este & maxim) End Sub

5.5. Obiecte Excel 5.5.1.Obiectul Application VBA foloseste obiectul Application pentru a face referire la programul Excel. Fiind elementul din topul ierarhiei de obiecte, prin intermediul obiectului Application, folosind notatia cu punct se pot accesa toate obiectele situate pe trepte inferioare. Obiectul Application are o multitudine de proprietati si metode. Cele mai utilizate proprietati si metode ale obiectului sunt explicate in tabelele urmatoare :
Tabel1 Proprietatile obiectului Aplication Proprietate
ActiveCell ActiveSheet ActiveWindow Active WorkBook

Descriere
Permite referirea la celula activa Permite referirea la foaia de calcul activa Permite referirea la fereastra activa Permite referirea la fisierul Excel deschis (in cazul in care sunt deschise mai multe fisiere simultan referirea se face la fisierul la care se lucreaza) Stabileste textul afisat in bara de comanda a ferestrei Excel Stabileste textul ce va fi afisat in bara de

Caption StatusBar

17

WorkBooks

stare a aplicatiei Permite referirea la colectia registrelor de calcul deschse intr-un anumit moment

Tabel 2 Metodele obiectului Aplication

Metoda
ActivateMicrosoftApp FindFile Quit Undo Run

Actiune
Lanseaza in executie o alta aplicatie Office Afiseaza caseta Open in scopul deschiderii unui fisier Are acelasi efect ca apelarea meniului FileExit Are acelasi efect ca apelarea meniului FileUndo Executa o comanda macro

5.5.2. Obiectul WorkBook Obiectele WorkBook sunt grupate in colectia Workbooks si reprezinta registrele de calcul deschise in Excel. Pentru a face referire la un obiect din colectia Workbooks putem folosi una dintre formele:
Workbooks(nume fisier) sau Workbooks(indice numeric)3

De exemplu comandaWorkbooks(Evidenta studenti).Save are ca efect salvarea modificarilor din registrul de clacul respectiv. Daca se doreste referirea la registrul de calcul activ comanda anterioara se poate scrie si astfel: Activeworkbook.Save. Obiectul raspunde la un set complex de evenimente (Open, Close, BeforeClose, SheetCalculate) permitand realizarea unor secvente
3

Indicele numeric este alocat in colectie in ordinea in care fisierele au fost create

18

de cod extrem de utile. Tabelul urmator prezinta cateva din proprietatile disponibile :
Tabel 3 Proprietatile obiectului WorkBook Proprietate
ActiveSheet Path Sheets Names Run

Descriere
Permite referirea la foaia de calcul activa Returneaza calea completa spre fisierul Excel Permite referirea la intrega colectie de foi de calcul a fisierului Returneaza colectia de nume definite in registrul de calcul Executa o comanda macro

Private Sub Workbook_Open() Urmatoarea procedura are ca efect afisarea lunii curente intr-o caseta de tip MsgBox in momentul deschiderii fisierului MsgBox Suntem in ziua luna& Month (Now()) End Sub

5.5.3. Colectia WorkSheets Un fisier Excel poate contine mai multe foi de calcul. Un obiect Worksheet reprezinta o anumita foaie de calcul din cadrul colectiei WorkSheets4 cuprinde toate foile registrului. Cateva dintre proprietatile disponibile sunt prezentate in tabelul 4
(Tabel 4 Proprietatile colectiei WorkSheets).

Obiectul dispune de cateva metode des utilizate precum cele exemplificate mai jos :
Sub Exemplu() listarea la imprimanta a foii de calcul Application.Worksheets (Balanta de verificare).PrintOut stergerea unei foi de calcul Application.Worksheets(Balanta provizorie).Delete
4

Alaturi de colectia WorkSheets exista si colectia Sheets. Diferenta consta in faptul ca prima este incorporata in cea de-a doua care mai contine si graficele (colectia Charts)

19

End Sub

Tabel 4 Proprietatile colectiei WorkSheets


Proprietate Cells Columns Range Rows Visible Descriere Face referire la toate celulele foii de calcul Face referire la colectia coloanelor foii de calcul Returneaza un obiect de tip Range (un camp de celule al foii de calcul) Face referire la colectia liniilor din foaia de calcul Stabileste vizibilitatea sau ascunderea foii de calcul respective

5.5.4.Obiectul Range Refera o celula sau o plaja de celule. Pozitia acestui obiect n ierarhia de obiecte Excel : Modul de utilizare al obiectului este Range ( Adresa / Plaja adrese) . Daca nu se indica o anumita foaie de calcul se considera foaia de calcul curenta. Exemplu : Range(1)refera celual A1, Range(A2 :B2) refera plaja de celule A2 :B2, Worksheets (Sheet2).Range(A28) refera celula A28 de pe foaia de calculSheet2 etc.
Tabel 5 Proprietatile obiectului Range
Proprietate Adress Column Row Descriere Returneaza adresa celulei sau a plajei de celule referite de un obiect Range Numarul primei coloane din adresa /plaja de adrese referite de un obiect Range Numarul de celule din adresa/plaja de adrese referite de un obiect Range

20

Formula MegeCells Value WrapText

Stabileste formula continuta de o celula/plaja de celule de un obiect Range Uneste mai multe celule (True) intr-una singura sau anuleaza unirea acestora (False) Stabileste valoarea continuta de celula sau plaja de celule referita de un obiect Range Continutul unei celule/plaje de celule va fi scris pe mai multe randuri

Tabel 6 Metodele obiectului Range Metoda


Union Clear Copy Delete Select UnMerge

Descriere
Uneste mai multe zone referite de mai multe obiecte Range intr-unul singur Goleste continutul celulelor referite de un obiect Range Copiaza in ClipBoard continutul celulelor referite de un obiect Range Sterge celulele referite de un obiect Range Selecteaza celulele referite de un obiect Range Anuleaza unirea mai multor celule intr-una singura

Exemplu de utilizare a obiectului Range :


Sub Exemplu_Range() Dim Zona As Range, Z1 As Range, Z2 As Range, Z3 As Range Set Zona = Range(A1 :B10) Afisare adresa plajei de celule MsgBox Adresa: & Zona.Address Prima coloana din plaja de celule MsgBox Prima coloana: & Zona.Column Afisare numar celule MsgBox Numar celule: & Zona.Count Unire celule intr-una singura Range(A20:A40).MergeCells =True Scriere pe mai multe randuri Range(C20:D40).WrapText =True Stabilirea unei valori Range (D10 :E20).Value = 10000 Introducerea unei formule Range (F10:G20).Formula = = d10+d11 Anularea unirii zonei a20:a40 Range (A20:a40).UnMerge Set Z1 =Range (A1:B40)

21

Set Z2 =Range (A100:B400) Unire zona Z1 cu Z2 in Z3 Set Z3 = Union (Z1,Z2) Afisare adresa Z3 MsgBox Z3.Address End Sub

5.6. Evenimente Evenimentul Click Se produce in momentul in care se actioneaza o singura data butonul mouse-ului intr-un obiect sau dupa selectarea unei valori din mai multe posibile acolo unde este cazul (exemplu selectarea unei valori dintr-o lista derulanta de valoriComboBox-va genera producerea evenimentului Click). Pentru controlul CodFurnizor a fost atasata evenimentului Click procedura de mai jos :
Private Sub CodFurnizor_Click() Dim T T = Me.CodFurnizor.Column() Me.DenumireFurnizor.Value = Me.CodFurnizor.Column(1) Me.Adresa.Value = Me.CodFurnizor.Column(2) Cells(ActiveCell.Row, 2).Value = Me.CodFurnizor.Column(1) ActiveCell.Value = T

End Sub

5.7. Exemplu de aplicatie VBA.5 Sa se construiasca un formular pentru calculul si afisarea rezultatelor costului pentru plata chiriilor in lei grei pentru apartamente cu doua si trei camere.

Probleme si teste rezolvate se gasesc in Birotica aplicata-autor Gramada Argentina Editura Renaissance , 2005

22

Programul preia date cu InputBox si afiseaza informatii prelucrate cu casete text ; se folosesc dea semenea butoanele de optiune utilizand proprietatea Enabled.

Preluarea datelor (a chiriei percepute pe luna si a numarului de luni) se face prin casete InputBox.
Dimensionarea variabilelor 23

Dim LUNI As Long Dim SUMA As Long Dim VENIT As Long Private Sub OpT_2CAM_Click() OPT_3CAM.Enabled = False TEXT2.Text = 0 TEXT4.Text = 0 TEXT6.Text = 0 SUMA = InputBox("CHIRIE PERCEPUTA PE LUNA") TEXT1.Text = SUMA LUNI = InputBox("PERIOADA DE INCHIRIERE ( NR. LUNI )") TEXT3.Text = LUNI VENIT = TEXT1.Text * TEXT3.Text Afisarea rezultatelor in casete text cu folosirea functiei Format si Cstr TEXT5.Text = CStr(Format(VENIT, "STANDARD")) OPT_3CAM.Enabled = True End Sub Private Sub OPT_3CAM_Click() OPT_2CAM.Enabled = False TEXT1.Text = 0 TEXT3.Text = 0 TEXT5.Text = 0 SUMA = InputBox("CHIRIE PERCEPUTA PE LUNA") TEXT2.Text = SUMA LUNI = InputBox("PERIOADA DE INCHIRIERE ( NR. LUNI )") TEXT4.Text = LUNI VENIT = TEXT2.Text * TEXT4.Text TEXT6.Text = CStr(Format(VENIT, "STANDARD"))

24

OPT_2CAM.Enabled = True End Sub

25