Bazele Informaticii

  • Uploaded by: Andelis Cojocaru
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Bazele Informaticii as PDF for free.

More details

  • Words: 26,095
  • Pages: 166
Loading documents preview...
Universitatea OVIDIUS Constanţa Departamentul ID-IFR Facultatea de Știinţe Economice Specializarea Economia Comerţului, Turismului şi Serviciilor Forma de învăţământ ID Anul de studiu I Semestrul 1 Valabil începând cu anul universitar 2009-2010

Caiet de Studiu Individual pentru

Bazele informaticii

Coordonator disciplină: Prof. univ. Cosma Emil

Cuprins

Bazele informaticii CUPRINS Unitate Titlul de învăţare INTRODUCERE 1

2

3 şi 4

Pagina 1 3

O introducere în calculul tabelar Obiectivele Unităţii de învăţare Nr. 1 1.1. Programul de calcul tabelar Excel 1.2. Editarea documentelor Excel 1.3. Funcţii Excel 1.4. Rezumat Lucrare de verificare Unitate de învăţare Nr. 1

4 5 6 8 9 10

Editarea foilor electronice de calcul

11

Obiectivele Unităţii de învăţare Nr. 2 2.1. Inserare şi ştergere pentru linii şi coloane 2.2. Ajustarea dimensiunilor liniilor şi a coloanelor 2.3. Referinţe absolute şi relative de celulă 2.4. Copiere, tăiere, alipire de celule 2.5. Formatarea conţinutului celulelor 2.6. Rezumat Lucrare de verificare Unitate de învăţare Nr. 2

12 14 15 15 16 17 20 21

Calcule financiare. Tabele de decizie

24 25 25 26 26 27 27 28 28 30 31

Obiectivele Unităţii de învăţare Nr. 3 şi 4 3.1. Despre funcţii financiare 3.1.1. Funcţia FV 3.1.2. Funcţia PV 3.1.3. Funcţia NPER 3.1.4. Funcţia PMT 3.1.5. Funcţia IPMT 3.2. Tabele de decizie 3.3. Rezumat Lucrare de verificare Unitate de învăţare Nr. 3 şi 4

Bazele informaticii

I

Cuprins

5 şi 6

7

8

9

Tabele de date. Grafice

34

Obiectivele Unităţii de învăţare Nr. 5 şi 6 5.1. Tabele de date 5.1.1. Ştergere (Delete) şi inserare (Insert) 5.1.2. Sortare şi filtrare (Sort & Filter) 5.2. Grafice (diagrame) 5.3. Rezumat Lucrare de verificare Unitate de învăţare Nr. 5 şi 6

35 35 36 38 42 44 45

Macrocomenzi

47

Obiectivele Unităţii de învăţare Nr. 7 7.1. Înregistrarea unei macrocomenzi VBA 7.2. Rezumat Lucrare de verificare Unitate de învăţare Nr. 7

48 48 55 55

Editorul VBA

56

Obiectivele Unităţii de învăţare Nr. 8 8.1. Lansarea editorului VBA 8.2. Mediul de editare VBA 8.3. Module VBA 8.3.1. Identificarea modulelor 8.3.2. Rularea modulelor 8.3.3. Save şi Open pentru aplicaţiile Office şi modulele asociate 8.3.4. Sistemul de asistenţă la scrierea codului 8.3.5. Proceduri 8.3.5.1. Proceduri Sub 8.3.5.2. Proceduri Function 8.4. Formulare VBA 8.4.1. Crearea unui formular 8.4.2. Rularea unui formular 8.4.3. Controale OLE 8.5. Documente Office active 8.5.1. Controale ActiveX 8.5.2. Proceduri eveniment 8.6. Rezumat Lucrare de verificare Unitate de învăţare Nr. 8

57 57 57 59 59 59

Secvenţe de cod VBA

74

60 60 61 61 63 64 65 66 66 68 69 70 72 73

75 75 76 76 79 79

Obiectivele Unităţii de învăţare Nr. 9 9.1. Cuvintele 9.2. Comentariile 9.3. Tipuri de date 9.4. Expresiile 9.4.1. Operanzi Bazele informaticii

II

Cuprins

10

11

12

9.4.2. Operatori 9.4.3. Ordinea de evaluare a expresiilor 9.5. Constante şi variabile 9.5.1. Constante 9.5.2. Variabile 9.6. Instrucţiunea de atribuire 9.7. Liste (arrays) de variabile 9.7.1. Liste dinamice Lucrare de verificare Unitate de învăţare Nr. 9

79 80 81 81 82 83 84 85 86

Funcţii VBA predefinite

89

Obiectivele Unităţii de învăţare Nr. 10 10.1. Funcţia Format 10.2. Funcţii matematice 10.3. Funcţii financiare 10.4. Funcţii pe şiruri de caractere 10.5. Funcţii pentru dată calendaristică şi timp 10.6. Funcţii pentru conversii 10.7. Funcţii pentru testarea tipului de date Lucrare de verificare Unitate de învăţare Nr. 10

90 90 91 91 93 93 94 94 95

Structuri de control VBA

100

Obiectivele Unităţii de învăţare Nr. 11 11.1. Structurile de control 11.1.1. Instrucţiunea de selecţie simplă 11.1.2. Instrucţiunea de selecţie multiplă 11.1.3. Structurile repetitive 11.1.3.1. Ciclul Do While (cu test iniţial) 11.1.3.2. Ciclul Do Until (cu test iniţial) 11.1.3.3. Ciclurile Do While şi Do Until cu test final 11.1.3.4. Ciclul For … Next, cu număr finit de paşi 11.2. Lucrare de verificare Unitate de învăţare Nr. 11

101 102 102 103 107 107 108 110 110 111

Module VBA

112

Obiectivele Unităţii de învăţare Nr. 12 12.1. Variabile locale (private) 12.2. Variabile publice (globale) 12.3. Variabile private 12.4. Transmiterea argumentelor prin valoare şi prin referinţă 12.5. Funcţii recursive Lucrare de verificare Unitate de învăţare Nr. 12

113 113 113 114 117 118 119

Bazele informaticii

III

Cuprins

13 şi 14

Formulare VBA

121

Obiectivele Unităţii de învăţare Nr. 13 şi 14 13.1. Formulare (form-uri) 13.2. Proprietăţi şi proceduri eveniment 13.3. Proprietatea Caption 13.4. Proprietatea StartUpPosition 13.5. Proprietatea Height şi Width 13.6. Proprietăţile ForeColor şi BackColor 13.7. Utilizarea controalelor 13.7.1. CommandButton 13.7.2. Label 13.7.3. TextBox 13.7.4. CheckBox 13.7.5. Frame 13.7.6. OptionButton 13.7.7. ListBox 13.7.8. ComboBox 13.7.9. Image 13.7.10. SpinButton 13.8. Modificarea proprietăţilor din cod Lucrare de verificare Unitate de învăţare Nr. 13 şi 14

122 124 125 126 128 128 129 130 131 131 134 137 139 140 142 145 148 149 150 155

BIBLIOGRAFIE

161

Bazele informaticii

IV

Introducere

Bazele informaticii INTRODUCERE

 

Stimate cursant,

încă de la început doresc să îţi urez bun venit în domeniul informaticii. Acest curs se adresează atât cursanţilor cu un grad mai mare de familiarizare cu universul calculatoarelor cât şi cursanţilor începători. Există totuşi anumite cunoştinţe specifice necesare parcurgerii acestui curs şi anume: Cunoaşterea modalităţii de organizare şi manipulare a informaţiei în format electronic (sistem de fişiere, directoare, copierea, mutarea şi deschiderea fişierelor). Operaţii de bază utilizând sistemul de operare Microsoft Windows (pornirea unei sesiuni de lucru, deschiderea unei aplicaţii, comutarea între mai multe aplicaţii ce rulează simultan, noţiunea de desktop şi noţiunea de shortcut, închiderea în mod corespunzător a sistemului), Utilizarea tastaturii PC standard şi a mouse-ului (combinaţii de taste, utilizarea tastelor speciale, right şi left click pentru mouse) Manualul de faţă este organizat în două părţi (programare tabelară - Excel şi programare în limbajul Basic - VBA) cu 14 unităţi de învăţare, fiecare dintre aceste unităţi conţinând o parte de prezentare a subiectului tratat, o parte de exerciţii practice şi rezolvările acestora.  

Exerciţiile practice sunt marcate cu simbolul

.

Spor la învăţat şi succes!

Bazele informaticii 

 



Introducere

Programele de calcul tabelar („foi electronice de calcul”) se adresează utilizatorilor neprogramatori ce prelucrează date statistice, financiare, ştiinţifice, fiind, datorită funcţiilor predefinite puse la dispoziţie, un instrument flexibil şi uşor de învăţat. Foile electronice de calcul permit cele mai diverse operaţii asupra informaţiilor de piaţă, preiau datele colectate şi păstrate în fişiere sau date captate prin intermediul reţelelor de transmisie. Cele mai multe studii de piaţă care se comercializează la ora actuală în lume, se livrează în fişiere tip foaie electronică de calcul. Un program de calculator este o listă de instrucţiuni care spun unui calculator ce sarcini are de îndeplinit. Calculatorul rulează instrucţiunile până când ajunge la sfârşitul programului. Fiecare linie dintr-un program este, de obicei, o singură comandă pe care calculatorul trebuie să o execute, cum ar fi adunarea a două numere. Cu o succesiune de comenzi calculatorul poate realiza mai multe: bilanţul unui carnet de cecuri, tipărirea unui document, desenarea de imagini. Programul de calculator (program sursă) poate fi scris în limbaje diferite. Calculatoarele înţeleg numai limbajul maşină (program obiect) – un şir de biţi. Limbajele de programare ca BASIC (limbaj procedural simplu, creat în 1964) permit oamenilor să scrie programe într-un limbaj asemănător limbii engleze. În orice caz, toate programele pot să fie citite de oameni şi trebuie să fie convertite în limbaj maşină, pentru a putea fi interpretate de calculator. Adesea, numele limbajului BASIC este ortografiat cu litere mici (Basic). Cu toate acestea, BASIC şi-a făcut de fapt debutul ca un acronim, reprezentând prescurtarea de la Beginner's All-purpose Symbolic Instruction Code (codul de instrucţiuni simbolice generale pentru începători). Pentru a uşura lectura, materialul didactic prezentat în continuare include particularităţi şi elemente convenţionale:  Simboluri explicative: Simbol Semnificaţie Atenţie



↓ Exemplu_





 

Bazele informaticii 

Exemplu Indicaţii, menţiuni Aplicaţii

 Simboluri pentru descrierea sintaxei instrucţiunilor VBA: elementul este opţional [] variantă | tip de dată valoarea unei constante, a unei variabile sau a unei expresii <expresie> expresie oarecare condiţie (expresie logică)

 



O introducere în calculul tabelar

Unitatea de învăţare Nr. 1 O introducere în calculul tabelar Cuprins Obiectivele Unităţii de învăţare Nr. 1 1.1. Programul de calcul tabelar Excel 1.2. Editarea documentelor Excel 1.3. Funcţii Excel 1.4. Rezumat Lucrare de verificare Unitate de învăţare Nr. 1

Bazele informaticii 

Pagina 4 5 6 8 9 10

 



O introducere în calculul tabelar

 

Un program de calcul tabelar (Spreadsheets), numit şi "foaie electronică de calcul" este un produs ce cuprinde facilităţi de lucru cu tabele, baze de date şi posibilităţi de reprezentare grafică a foilor de calcul. Programele de calcul tabelar se adresează utilizatorilor neprogramatori ce prelucrează date statistice, financiare, ştiinţifice, fiind, datorită funcţiilor predefinite puse la dispoziţie, un instrument flexibil şi uşor de învăţat. De asemenea foile electronice de calcul permit cele mai diverse operaţii asupra informaţiilor de piaţă, preiau datele colectate şi păstrate în fişiere sau date captate prin intermediul reţelelor de transmisie. Cele mai multe studii de piaţă care se comercializează la ora actuală în lume, se livrează în fişiere tip foaie electronică de calcul. Foaia electronică de calcul este împărţită în linii şi coloane şi este prevăzută cu un sistem de coordonate. Coloanele sunt notate cu litere, iar liniile cu cifre arabe (“tablă de şah”), intersecţiile liniilor şi coloanelor numindu-se celule (de exemplu celula G3 este pe coloana G linia 3). Cu ajutorul acestui sistem de coordonate o celulă este determinată în mod unic. Fiecare celulă poate conţine unul din următoarele trei tipuri de date : un text, un număr sau o formulă. Ultimul tip este "găselniţa" problemei. Numerele aflate în celule sunt legate între ele prin formule, astfel încât dacă se modifică conţinutul unei celule, aceasta va afecta în lanţ multe altele. De exemplu, dacă celulele B1, B2, B3, B4, B5, conţin cifre, se poate aduna conţinutul lor, printr-o formulă plasată în altă celulă: B1+B2+B3+B4+B5 sau SUM(B1:B5). Un program de calcul tabelar oferă zeci de funcţii de calcul, atât matematice, cât şi financiare şi statistice. Acestea pot fi interconectate după toate regulile matematicii, fapt ce permite descrierea unui algoritm de calcul, utilitatea calculului tabelar fiind verificată ca valoare şi funcţionalitate în multe domenii de activitate. Instrumentele principale de lucru ale unui program de calcul tabelar sunt tabelul şi graficul. Prezentarea datelor în formă tabelară şi în formă grafică contribuie la redarea concentrată a informaţiilor.

Bazele informaticii 

 



O introducere în calculul tabelar

Tabelele de date trebuie să fie astfel constituite încât: să asigure o prezentare compactă a datelor numerice; să nu fie supraîncărcate cu detalii (deseori două tabele scurte sunt preferabile unui tabel lung); să includă un titlu complet şi clar pentru identificarea imediată a conţinutului lor; să precizeze, dacă este cazul, unităţile de măsură; să indice tipul de preţ (curent sau constant); să prezinte datele sub formă procentuală sau ca indici, atunci când este necesar un plus de claritate.

Programul de calcul tabelar Excel Excel este un program de calcul tabelar, care face parte din familia de utilitare Microsoft Office. Faţă de Microsoft Office 2003, la Microsoft Office 2007 s-au făcut schimbări majore în interfaţa acestuia (de fapt a fost refăcută complet):

Meniurile şi barele de instrumente tradiţionale au fost înlocuite de tab-uri (Home, Insert, Page Layout, Formulas…), care includ butoane (Picture, Clip Art, Shapes, SmartArt…) grupate pe secţiuni (Tables, Illustrations, Charts…). În cazul în care spaţiul de lucru nu este suficient de întins pentru a lucra eficient pe el, minimizarea tab-urilor se realizează efectuând dublu clic pe ele (la fel pentru readucerea lor înapoi). Funcţiile extinse asociate secţiunilor sau butoanelor pot fi vizualizate prin clic, cu mouse-ul, pe săgeata din dreapta acestora. Funcţiile disponibile pot fi afişate şi prin comenzi rapide, de exemplu Ctrl+Shift+F, în cazul fonturilor. Comenzile asociate opţiunii File, dintr-un meniu clasic, se obţin prin acţionarea butonului Office. A fost dezvoltat un nou format pentru salvarea fişierelor (*xlsx în loc de *xls) existând compatibilitate cu vechile formate (Save As, Excel 97-2003 Workbook). A devenit disponibilă şi exportarea fişierelor direct în formatul PDF (Save As, Adobe PDF).

Bazele informaticii 

 

Butonul Office 



O introducere în calculul tabelar

În dreapta butonului Office se situează bara de instrumente Quick Acces, personalizabilă. Se pot adăuga, pe lângă butoanele Save, Undo şi Redo, o serie de alte funcţii precum Sort Ascending, Sort Descending, Quick Print, Print Preview... prin intermediul săgeţii din dreapta acesteia.

Definirea conţinutului unei foi electronice de calcul se face cu ajutorul tastelor ordinare (litere, cifre, caractere speciale) sau prin combinaţii de taste, în pagina logică. Pagina logică este încadrată în pagina fizică (coala de hârtie, de obicei de format A4) prin margini (dreapta/stânga, sus/jos). La lansarea Excel-ului cursorul se află în poziţia Home (celula A1).

Editarea documentelor Excel Documentele Excel (Book1, Book2, … sau numele fişierelor sub care au fost salvate foile electronice de calcul) cuprind pagini (Sheet1, Sheet2, ...). Unitatea de lucru, pe foaia electronică de calcul, fiind celula, acţiunile de editare se desfăşoară la nivel de celulă şi sunt vizualizate în linia de editare. Conţinutul curent al celulei poate fi validat dacă se acţionează tasta Enter sau dacă se iniţiază deplasarea cursorului într-o altă celulă. Adresa celulei active

Linia de editare

Poziţia Home 

Editarea celulelor are ca scop introducerea celor trei tipuri de informaţie: text, numere, formule. Introducerea textului presupune tastarea oricărui şir de caractere. Alinierea textului se face la stânga celulei. Este posibil ca lungimea textului introdus într-o celulă să depăşească capacitatea celulei, în acest caz textul aflat în exces fiind afişat peste celulele următoare dacă acestea nu sunt vide

Bazele informaticii 

 



O introducere în calculul tabelar

(în caz contrar se afişează conţinutul acestora). Introducerea numerelor se face cu ajutorul cifrelor, semnelor + şi - (plus şi minus) , virgulei zecimale (,) şi eventual a exponentului (E). Numerele sunt implicit aliniate la dreapta. Dacă un număr trebuie să fie tratat ca text, este necesar ca mai întâi să fie tastat un apostrof (exemplu: '20765). Introducerea formulelor trebuie să înceapă prin tastarea semnului =(egal). Expresiile de calcul pot să conţină: operatori, constante, identificatori de celule, nume de funcţii pentru calcul şi sunt alcătuite conform regulilor algebrice.  Constantele conţin valori sub formă de numere întregi (ex: 1, -23), numere reale în format fix (ex: 22,31, -12,234), numere reale în format exponenţial (ex: 12,76E3) sau date procentuale (ex: 125%).  Identificatorii de celule permit referirea acestora (ex: A1, D10, A1:E8).  Funcţiile de calcul pot fi : - financiare - statistice - matematice şi trigonometrice - logice Operatorii, împreună cu ordinea lor de evaluare sunt descrişi în următoarea tabelă : Operator

Nivel

^ (exponenţial)

1

+ (pozitiv),

2

- (negativ)

* (înmulţire), / (împărţire)

3

+ (adunare), - (scădere)

4

= (egal), <> (diferit)

5

< (strict mai mic) > (strict mai mare) <= (mai mic sau egal cu)

Tastele utilizate cel mai frecvent pentru deplasarea cursorului sunt: Tasta

 sau   sau  Home

Bazele informaticii 

Mişcarea cursorului cu o celulă, la stânga sau la dreapta cu o linie, mai sus sau mai jos pe prima celulă din linie

 



O introducere în calculul tabelar

PgUp PgDn Ctrl+Home Ctrl+End

la începutul ferestrei precedente

Ctrl+G sau F5

la celula specificată

la începutul ferestrei următoare în colţul din stânga sus al foii de calcul în colţul din dreapta jos al foii de calcul

Funcţii Excel Funcţiile Excel (de 0, 1 sau mai multe argumente) pot fi introduse textual, dar este de preferat a se utiliza casetele de editare a lor (se apasă butonul ):

Implicit sunt afişate cele mai recent utilizate funcţii (Most Recently Used) dar se pot selecta şi funcţii din categoria dorită (All, Financial, Date & Time …) ↓ Exemplu____________________________________________________________________________________ Caseta de introducere a argumentelor funcţiei IF (dacă):

___________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 



O introducere în calculul tabelar

       

Comenzile mediului de editare Excel. Conceptul de “foaie electronică de calcul”. Editarea textului. Editarea informaţiei numerice. Editarea formulelor de calcul. Introducerea funcţiilor. Definirea domeniilor de celule.

1. Lansaţi programul de calcul tabelar Excel. 2. Consultaţi conţinutul tab-urilor. 3. Familiarizaţi-vă cu folosirea Help-ului (tasta F1 sau butonul din colţul dreapta sus al ecranului). 4. Să se editeze următorul document, să se salveze şi să se previzualizeze:

 În celula F5, pentru calculul mediei aritmetice, se va introduce formula: =AVERAGE(A4:F4)

Bazele informaticii 

 



O introducere în calculul tabelar

5. Să se editeze următoarea foaie electronică de calcul a rădăcinilor ecuaţiei de gradul 2, pentru diferite valori ale coeficienţilor a, b, c.

 

În celula E3, pentru calculul valorii delta, se va înscrie formula: =B4^2-4*B3*B5 (b2 - 4·a·c)



În celulele E4, E5 pentru determinarea rădăcinilor x1, x2 se vor înscrie formulele de calcul, conţinând funcţiile IF (“dacă”) şi SQRT (radical). Funcţia IF aparţine categoriei de funcţii Logical (sau All).

=IF(E3>=0;(-B4+SQRT(E3))/(2*B3);F2) =IF(E3>=0;(-B4-SQRT(E3))/(2*B3);F2) având semnificaţia: “dacă delta ≥ 0 atunci afişează rezultatul real, în caz contrar afişează mesaj de rezultat complex”

Bazele informaticii 

 

10 

Editarea foilor electronice de calcul

Unitatea de învăţare Nr. 2 Editarea foilor electronice de calcul Cuprins Obiectivele Unităţii de învăţare Nr. 2 2.1. Inserare şi ştergere pentru linii şi coloane 2.2. Ajustarea dimensiunilor liniilor şi a coloanelor 2.3. Referinţe absolute şi relative de celulă 2.4. Copiere, tăiere, alipire de celule 2.5. Formatarea conţinutului celulelor 2.6. Rezumat Lucrare de verificare Unitate de învăţare Nr. 2  

Bazele informaticii 

 

Pagina 12 14 15 15 16 17 20 21

11 

Editarea foilor electronice de calcul

 

Editarea conţinutului unei celule selectate, se poate realiza prin apăsarea tastei F2 sau prin poziţionare directă, cu ajutorul mouse-ului, în linia de editare numită şi formula bar, folosind următoarele taste: Tasta  sau 

Acţiune salt cu un caracter, la stânga sau la dreapta

Home End Backspace Delete

salt la începutul liniei de editare

Shift +  sau 

selecţie unul sau mai multe caractere

salt la sfârşitul liniei de editare şterge caracterul din stânga cursorului şterge caracterul de pe poziţia cursorului

Conţinutul curent al celulei poate fi validat dacă se acţionează tasta Enter sau dacă se iniţiază deplasarea cursorului într-o altă celulă. Deoarece acţionarea tastei Enter determină trecerea cursorului cu o celula mai jos, pentru a introduce mai multe rânduri în aceeaşi celulă este utilizată combinaţia de taste Alt+Enter . Tasta ESC are rolul, ca şi în alte medii de editare, de anulare a operaţiei curente. Punerea în evidenţă (highlighting) a unui bloc (domeniu) de celule se face în vederea executării de către Excel a unei acţiuni ulterioare asupra acestuia (copiere, ştergere, construirea graficelor, etc). Selecţia unui bloc se realizează folosind tastele săgeţi sau cu ajutorul mouse-ului. Un bloc de celule poate fi alcătuit dintr-o singură celulă, dintr-o linie de celule, dintr-o coloană de celule sau oricare altă porţiune dreptunghiulară a foii de calcul. Specificarea unui bloc de celule se poate face prin precizarea primei şi ultimei celule din bloc (Ex. B3:B7, D2:E7). ↓ Exemplu____________________________________________________________________________________ Selectarea domeniului B2:D3

___________________________________________________________________________________Exemplu ↑ Bazele informaticii 

 

12 

Editarea foilor electronice de calcul

Celule vecine pot fi contopite în una singură utilizând butonul din tab-ul Home, secţiunea Alignment (Merge/Unmerge):

↓ Exemplu____________________________________________________________________________________

       

       

____________________________________________________________________________________Exemplu ↑ Principalul scop al editării foilor electronice fiind acela al efectuării unor calcule, trebuie respectate regulile sintactice de scriere a relaţiilor de calcul. În foarte multe relaţii de calcul sunt incluse şi funcţii. Excel oferă posibilitatea efectuării unor calcule diverse prin funcţii de calcul (financiare, statistice, matematice şi trigonometrice, pentru baze de date, etc). Caseta de introducere a argumentelor unei funcţii este afişată prin acţionarea butonului asociat liniei de editare. Funcţiile de calcul financiar dau posibilitatea efectuării unor calcule privind rata dobânzii, valoarea viitoare sau prezentă a unei investiţii raportate la un număr de perioade de timp. Valorile monetare sunt introduse din postura de debit/credit, prin convenţie cu +/- (de menţionat că toate valorile cu semnificaţie de plăţi sunt valori negative). Argumentele marcate cu bold (în caseta de specificare a argumentelor) sunt obligatorii a fi introduse, celelalte fiind opţionale. Valorile argumentelor pot rezulta şi prin editarea unor relaţii de calcul. ↓ Exemplu____________________________________________________________________________________  Funcţia NPER (Rate  rata dobânzii; Pmt  plata periodică; Pv  valoarea prezentă - sold), returnează numărul de perioade necesare pentru a obţine un anumit sold cu rata şi dobânda specificate. Valoarea returnată este de tip real, de aceea, aceasta trebuie, eventual, rotunjită la o valoare întreagă (cu funcţia Round). Se poate observa prezenţa unor valori negative (-B1, -B3) dar şi a relaţiei B2/12 în postură de argument:

Bazele informaticii 

 

13 

Editarea foilor electronice de calcul



Funcţia FV (rata dobânzii; numărul de plăţi; plata periodică), calculează valoarea de viitor a unei investiţii, cu plăţi periodice egale, pentru perioade egale de timp, la o valoare dată a ratei dobânzii. Argumentele Rate, Nper, Pmt ale acestei funcţii sunt obligatorii (în caseta funcţiei sunt marcate bold), iar argumentele Pv, Type sunt opţionale.

____________________________________________________________________________________Exemplu ↑

Insert (inserare), Delete (ştergere) pentru linii şi coloane

Inserarea liniilor sau a coloanelor se face întotdeauna before (înaite) de linia curentă sau coloana curentă: din tab-ul Home, secţiunea Cells:

cu mouse-ul, prin clic dreapta pe linia de marcaj a liniilor (coloanelor):

Bazele informaticii 

 

14 

Editarea foilor electronice de calcul

Ajustarea dimensiunilor liniilor şi a coloanelor Prin lăţimea coloanei se precizează numărul de caractere conţinute de o celulă aparţinând acesteia. Lăţimea implicită a unei coloane este de 8,43 caractere normale. Dacă o celulă conţine text în exces acesta este afişat peste celulele următoare, cu condiţia ca acestea să nu fie vide.

 Datele numerice care depăşesc ca număr de caractere lăţimea celulei sunt afişate în format exponenţial iar dacă şi acest mod de afişare nu este posibil se tipăreşte şirul de caractere ###### (depăşire de format !). Schimbarea dimensiunii unei coloane/linii se poate realiza utilizând mouse-ul, prin culisarea liniilor grilă pentru coloane şi rânduri (se ţine apăsat butonul stâng al mouse-ului). ↓ Exemplu____________________________________________________________________________________ Schimbarea dimensiunii unei coloane:

   _____________________________________________________________________________Exemplu ↑

Referinţe absolute şi relative de celulă Celulele pot fi referite în două moduri, modurile de referire rezultând din tabelul următor : Referire coloană relativă, linie relativă coloană absolută, linie absolută coloană relativă, linie absolută coloana absolută, linie relativă

Bazele informaticii 

 

Exemple

A2 $A$2 A$2 $A2

15 

Editarea foilor electronice de calcul

O referire absolută înseamnă o poziţie fixă în foaia de calcul, poziţie care nu este afectată de modificări în foaia de calcul. Modificările din foaia de calcul (ştergeri de linii şi coloane) se reflectă şi în referinţele relative.

 Copierea formulelor (procedeele de copiere vor fi tratate ulterior) dintr-o celulă de calcul în altă celulă de calcul este influenţată de modul de referire a celulelor. Toate referirile relative sunt "translatate", în timp ce referirile absolute rămân nemodificate.

Copy (copiere), Cut (tăiere), Paste (alipire) Copierea şi mutarea conţinutului celulelor se realizează în patru paşi: 1. 2. 3. 4.

Se selectează celula (sau domeniul de celule). Copy (sau Cut). Se stabileşte celula (sau domeniul de celule) receptoare. Paste.

Pentru realizarea posibilităţi:

paşilor

amintiţi

anterior

sunt

oferite

următoarele

din tab-ul Home, secţiunea Clipboard se selectează butoanele

Copy,

Cut sau

Din combinaţii de taste:

Paste: Ctrl+C Ctrl+X Ctrl+V

 Copy  Cut  Paste 

 

Prin clic dreapta pe elementul selectat, din meniul vertical, se alege Copy, Cut sau Paste:

Bazele informaticii 

 

16 

Editarea foilor electronice de calcul

Dacă, în loc de Paste se selectează Paste Special… posibilităţile de alipire sunt extinse. De exemplu, dacă sursa copiată este o formulă se poate obţine, prin copiere, doar valoarea (Values), fără a se efectua translatarea formulei.

Mouse-ul se plasează în colţul dreapta jos al zonei selectate acesteia, astfel încât cursorul îşi schimbă forma în simbolul . Ţinându-se apăsat butonul drept se face deplasarea mouse-ului în zona receptoare, la eliberarea lui obţinându-se rezultatul copierii. ↓ Exemplu____________________________________________________________________________________ 

Copierea formulei din E1 (C1*D1) în E2 determină translatarea (devine C2*D2):



Copierea formulei din E1 ($C$1*$D$1) în E2 se realizează fără translatare (rămâne $C$1*$D$1):

Bazele informaticii 

 

17 

Editarea foilor electronice de calcul



La copierea celulei E1 prin Paste Special…, Values în E2 se reproduce valoarea 56:



Copierea celulei E1, în E2, utilizând mouse-ul:



     

 

 

 

____________________________________________________________________________________Exemplu ↑

Formatarea conţinutului celulelor

Modul de afişare al conţinutului celulelor (afişarea numerelor  Number, alinierea  Alignment, fontul  Font, aspectul liniilor de bordare  Border, umplerea  Fill, …) poate fi schimbat în funcţie de tipul informaţiei pe care-l conţine:

Bazele informaticii 

 

18 

Editarea foilor electronice de calcul

Prin apăsarea butonului săgeată din dreapta secţiunilor tab-ului Home. Prin clic dreapta pe zona selectată, Format Cells… . Din combinaţie de taste Ctrl+Shift+F.

Pentru numere se poate utiliza separatorul punct (Use 1000 separator) sau numărul de zecimale cu care se face afişarea acestora (Decimal places). Un tip foarte utilizat de afişare a numerelor este cel procentual (Percentage, exemplu: 25%) sau monetar (Currency, exemplu: 23,45 lei).

 

Formatul celulelor se păstrează. Dacă modul de afişare a valorilor conţinute în celule trebuie schimbat se va acţiona în consecinţă. De exemplu dacă într-o celulă se înscrie valoarea 14% formatul celulei va fi

Percentage şi orice nouă valoare numerică înscrisă va fi afişată prin adăugarea simbolului %. 

Cele mai multe funcţii financiare calculează valori monetare, ca urmare formatul de afişare stabilit va fi Currency.

Bazele informaticii 

 

19 

Editarea foilor electronice de calcul

Atributele textului, afişat în celule, pot fi fixate şi utilizând butoane:  Font: bold, italic, subliniat

 

 bordarea (Border) celulelor



 umplere (Fill), culoarea fontului



 alinierea conţinutului  tipul fontului şi mărimea



        

Editarea conţinutului unei celule Contopirea celulelor Editarea funcţiilor de calcul financiar Inserarea liniilor şi a coloanelor Ajustarea dimensiunii liniilor şi a coloanelor Referinţe relative şi absolute de celule Copiere şi mutare Formatarea celulelor

Bazele informaticii 

 

20 

Editarea foilor electronice de calcul

1. Pentru comercializarea mărfurilor se folosesc documente justificative cum ar fi factura. Să se editeze următoarea factură folosind posibilităţile de calcul oferite de Excel:

    

 

Celulele D1:E1, B12:C13, D12:E13 sunt contopite. Denumirile din capul de tabel sunt scrise pe două rânduri (Alt+Enter pentru rând nou în interiorul celulei). În celula E4 este introdusă funcţia TODAY. Valoare (Pret Unitar * Cantitate) şi Valoare TVA (Valoare * 19%) se vor calcula doar pentru primul produs (=E8*F8, =G8*19%), pentru restul produselor formulele se pot copia (de exemplu utilizând mouse-ul). Sumele totale se vor calcula prin acţionarea butonului din tab-ul Home. Se vor respecta modalităţile de bordare (Border) şi umplere (Fill).

Bazele informaticii 

 

21 

Editarea foilor electronice de calcul

2. Ştiind suma lunară care se poate investi şi rata dobânzii oferită de o bancă oarecare să se calculeze câte depuneri sunt necesare pentru a se atinge soldul propus:

 



Singurele valori care se introduc de la tastatură (datele de intrare) sunt cele din celulele B1 (format Currency), B2 (format Percentage), B3 (format Currency), restul valorilor se calculează. Numărul de perioade necesar atingerii soldului propus de 1.500 lei prin depuneri de 100 lei, cu dobânda 13% se calculează în celula E1 cu funcţia NPER. Rezultatul, rotunjit în E2 (14 depuneri), intră în calculul soldului final (E3), prin funcţia FV.



Formule:

E1 E2 E3 A6 B6 C6 D6 E6 A7

Bazele informaticii 

: : : : : : : : :

=-NPER(B2/12;-B1;-B3) =ROUND(E1;0) =FV(B2/12;E2;-B1) =1 =D6 =0 =$B$1 =D6 =A6+1

 

22 

Editarea foilor electronice de calcul

B7 C7 D7 E7  

: : : :

=B6+C7+D7 =B6*$B$2/12 =$B$1 =E6+D7

Conţinutul celulelor din domeniul A8:E19 se va obţine prin copierea (cu mouse-ul) domeniului A7:E7 (calculele din linia cu numărul 2 din tabel se repetă). Valorile din interiorul tabelului sunt afişate cu două zecimale şi cu separatorul punct (Decimal places, Use 1000 separator).

Bazele informaticii 

 

23 

Calcule financiare. Tabele de decizie

Unitatea de învăţare Nr. 3 şi 4 Calcule financiare. Tabele de decizie Cuprins Obiectivele Unităţii de învăţare Nr. 3 şi 4 3.1. Despre funcţii financiare 3.1.1. Funcţia FV 3.1.2. Funcţia PV 3.1.3. Funcţia NPER 3.1.4. Funcţia PMT 3.1.5. Funcţia IPMT 3.2. Tabele de decizie 3.3. Rezumat Lucrare de verificare Unitate de învăţare Nr. 3 şi 4

Bazele informaticii 

 

Pagina 25 25 26 26 27 27 28 28 30 31

24 

Calcule financiare. Tabele de decizie

 

Despre funcţii financiare Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de pildă determinarea plăţii pentru un împrumut, valoarea viitoare sau valoarea netă actualizată a unei investiţii şi valorile obligaţiunilor sau cupoanelor. Argumentele comune pentru funcţiile financiare includ:    

 

Valoarea viitoare (Fv) – valoarea investiţiei sau împrumutului după ce s-au efectuat toate plăţile. Numărul de perioade (Nper) – numărul total de plăţi sau perioade ale unei investiţii. Plată (Pmt) – suma plătită periodic pentru o investiţie sau împrumut. Valoarea actualizată (Pv) – valoarea unei investiţii sau a unui împrumut la începutul perioadei de investiţie. De exemplu, valoarea actualizată a unui împrumut este capitalul de bază care este împrumutat. Rata (Rate) – rata dobânzii sau rata de actualizare pentru un împrumut sau o investiţie. Tip (Type) – intervalul la care sunt efectuate plăţile în timpul perioadei de plată, ca de pildă la începutul unei luni sau la sfârşitul acesteia.

 Unele funcţii financiare se folosesc pentru anuităţi. O anuitate constă dintr-o serie de plăţi constante efectuate pe o perioadă continuă (de exemplu,

un

împrumut

pentru

un

autoturism

sau un

împrumut

ipotecar).

În funcţiile de anuităţi, sumele plătite, cum ar fi depozitele pentru economii, sunt reprezentate de numere negative; sumele primite, cum ar fi un cec de dividente, sunt reprezentate prin numere pozitive.

Bazele informaticii 

 

25 

Calcule financiare. Tabele de decizie

Se recomandă consecvenţă în legătură cu unităţile utilizate pentru specificarea argumentelor Rate şi Nper (de exemplu, pentru plăţi lunare la un împrumut pe un număr de ani, rata dobânzii va fi împărţită întotdeauna cu 12, iar Nper va fi înmulţit cu 12 şi cu numărul de ani).

Funcţia FV Funcţia FV întoarce valoarea viitoare a unei investiţii bazate pe plăţi periodice şi constante şi o rată a dobânzii constantă.

     

Rate - rata dobânzii pe o perioadă; Nper - numărul total de perioade de plată dintr-o anuitate; Pmt - plata efectuată periodic, neschimbată pe durata anuităţii (în mod tipic, argumentul Pmt conţine capital şi dobândă, dar nu şi alte taxe şi datorii); Pv - valoarea actualizată, sau suma globală pe care o serie de plăţi viitoare o reprezintă în momentul actual (dacă argumentul Pv este omis, se consideră zero); Type - este 0 sau 1 şi indică momentul când sunt datorate plăţile (dacă Type este omis, se consideră 0). argumentele Pv şi Type sunt opţionale. Funcţia PV

PV întoarce valoarea actualizată a unei investiţii. Valoarea actualizată este suma totală pe care o reprezintă în prezent o serie de plăţi viitoare. De exemplu, pentru împrumut, suma împrumutată este valoarea actualizată pentru creditor.

  

Rate - rata dobânzii pe perioadă; Nper - numărul total de perioade de plată dintr-o anuitate; Pmt - plata efectuată periodic, neschimbată pentru toată durata anuităţii (în mod tipic, argumentul Pmt include capital de bază şi dobândă, dar nu

Bazele informaticii 

 

26 

Calcule financiare. Tabele de decizie

  

şi alte onorarii sau taxe); Fv - este valoarea viitoare, sau balanţa în numerar la care se ajunge după efectuarea ultimei plăţi (dacă Fv este omis, se presupune a fi 0 valoarea viitoare a unui împrumut, de exemplu, este 0); Type - este 0 sau 1 şi indică momentul când sunt datorate plăţile. argumentele Pv şi Type sunt opţionale. Funcţia NPER

Funcţia NPER furnizează numărul de perioade pentru o investiţie bazată pe plăţi periodice constante şi o rată constantă a dobânzii.

    

Rate - rata dobânzii pe o perioadă; Pmt - plata făcută în fiecare perioadă, neschimbată pe parcursul anuităţii (tipic, Pmt conţine capital şi investiţii, dar nu şi alte onorarii sau taxe); Pv - valoarea actualizată, sau valoarea globală pe care ar reprezenta-o în acest moment o serie de plăţi viitoare; Fv - este valoarea viitoare, sau o balanţă în numerar, obţinută după efectuarea ultimei plăţi (dacă Fv este omisă, se presupune a fi egală cu 0 - valoarea viitoare a unui împrumut, de exemplu, este 0). argumentele Fv şi Type sunt opţionale. Funcţia PMT

PMT calculează plata pentru un împrumut bazat pe plăţi constante şi o rată constantă a dobânzii.

   

Rate - rata dobânzii pentru împrumut; Nper - numărul total de plăţi pentru împrumut; Pv - valoarea actualizată, sau suma totală pe care valorează în prezent o serie de plăţi viitoare, denumită şi capital de bază; Fv - valoarea viitoare, sau balanţa în numerar la care se ajunge după

Bazele informaticii 

 

27 

Calcule financiare. Tabele de decizie

 

efectuarea ultimei plăţi (dacă Fv este omis, se presupune a fi zero, ceea ce înseamnă că valoarea viitoare a împrumutului este zero; Type - este 0 sau 1 şi indică momentul când sunt datorate plăţile. argumentele Fv şi Type sunt opţionale. Funcţia IPMT

IPMT întoarce plata dobânzii pentru o perioadă dată, pentru o investiţie bazată pe plăţi periodice constante şi o rată constantă a dobânzii.

     

Rate - rata dobânzii pentru împrumut; Per - perioada pentru care se calculează dobânda cuprinsă în intervalul [1, Nper]; Nper - numărul total de perioade de plată dintr-o anuitate; Pv - valoarea actualizată, sau valoarea globală pe care ar reprezenta-o în acest moment o serie de plăţi viitoare; Fv - valoarea viitoare, sau balanţa în numerar obţinută după efectuarea ultimei plăţi (dacă Fv este omis, se presupune a fi egală cu 0 - valoarea viitoare a unui împrumut, de exemplu, este 0); argumentul Fv este opţional.

 În casetele de introducere a argumentelor funcţiilor nu este permisă folosirea separatorului punct sau a simbolului monetar (de exemplu, nu se poate introduce 1.000, 1.000 lei sau 1000 lei, corect este: 1000).

Tabele de decizie

Un tabel de decizie este o zonă de celule care arată modul în care modificările anumitor valori referite în formule afectează rezultatele formulelor. Tabelele de decizie oferă facilitatea de a calcula variante multiple ale unei operaţii şi un mod de a vizualiza şi compara rezultatele (prognozarea valorilor cu ajutorul analizei: “ce se întâmplă dacă - What If”) - tab-ul Data, secţiunea Data Tools, butonul What-if Analysis, opţiunea Data Table… : Bazele informaticii 

 

28 

Calcule financiare. Tabele de decizie

Aceste tabele de date se construiesc pe baza unei formule având ca date de intrare una sau două valori numite celule de intrare.

Tabelele de decizie cu două variabile (doi factori de influenţă) preiau date dispuse pe linii şi coloane, le trec prin formula de calcul şi le afişează tabelar. Logica constituirii lor constă în definirea unei relaţii de calcul care se scrie o singură dată dar se aplică de mai multe ori. Pentru afişarea rezultatelor se selectează domeniul corespunzător al intrărilor şi al rezultatelor (inclusiv formula) după care se completează casetele Row input cell şi Column input cell cu adresele celulelor de intrare pentru linii şi coloane. ↓ Exemplu____________________________________________________________________________________  

Se consideră relaţia : a+2*b (variabilele sunt a şi b). În celula aflată în colţul stânga sus al tabelului de lucru se defineşte relaţia de calcul, pe date din afara tabelului (care pot fi chiar fictive), în dreapta şi sub aceasta se scriu datele pentru care se vor face calculele:



Se selectează tabelul (inclusiv formula) şi se stabilesc celule de intrare:

Bazele informaticii 

 

29 

Calcule financiare. Tabele de decizie



În interiorul tabelului se obţin valorile calculate conform formulei –

{Table(D1;C1)}:

____________________________________________________________________________________Exemplu ↑

Tabelele de decizie cu o variabilă (un singur factor de influenţă) reprezintă un caz particular al celor prezentate anterior.

  

Funcţiile de calcul financiar FV, PV, NPER, PMT, IPMT. Tabele de decizie.

Bazele informaticii 

 

30 

Calcule financiare. Tabele de decizie

1. Exerciţii a. O persoană fizică depune 500 lei, într-un cont de economii, cu o dobândă anuală de 11% şi îşi planifică să mai depună câte 50 lei timp de 2 ani. Câţi bani va avea în cont la sfârşitul celor 24 luni (atenţie, argumentul Type este 1)? Răspuns: 1970,08 lei

b. Ca urmare a depunerii cu o dobândă anuală de 15% a unei sume, o bancă returnează lunar 400 de lei timp de şase ani. Care este valoarea acestei sume?

Răspuns: -18.917 lei

c. După câte luni se va atinge un sold propus de 3 mii lei pentru depuneri lunare de 150 lei şi la o rată a dobânzii anuale de 14% ? Răspuns: 22,907… ≈ 23 luni

d. Cât trebuie să economisiţi lunar ca, după 10 ani, contul în bancă să fie de 1.500 lei la o dobândă lunară de 1% ? Răspuns: -6,52 lei

e. Care este dobânda datorată după al doilea an pentru un împrumut de 1.000 de lei, pe trei ani, la o dobândă anuală de 12% ? Răspuns: -84,438 lei

2. Returnarea unui împrumut bancar se poate realiza în plăţi constante (care se determină cu funcţia PMT) sau în plăţi variabile (valoarea împrumutului/numărul de perioade + dobânda calculată prin IPMT). Suma plăţilor constante este egală cu suma plăţilor variabile. Să se verifice această situaţie pentru un împrumut de 4.000 lei returnabil în 4 luni, cu o dobândă lunară de 2%.

Bazele informaticii 

 

31 

Calcule financiare. Tabele de decizie

Dobânda (calculată cu IPMT) scade – argumentul Per ia valorile 1, 2, 3, 4. Plăţile constante se calculează cu funcţia PMT.

3. Pentru un împrumut de 32.500 de lei, se rambursează lunar anumite sume. Ştiind că valoarea la zi a ratei dobânzii anuale este de 10% şi că valoarea maximă estimată a acesteia pentru următorii ani este 17% să se calculeze: a) Plăţile lunare pentru diverse valori ale ratei dobânzii în situaţia în care plăţile pot fi eşalonate pe un număr de 6, 7 sau 8 ani:

Se va construi un tabel de decizie cu două variabile. Celula de intrare

pentru coloană este D5 iar pentru linie este D4. Formula de calcul va conţine funcţia PMT - PMT(D5/12;D4*12;D3).

b) Plăţile lunare, împreuna cu dobânzile aferente, pentru valori ale ratei dobânzii mai mari de 10%:

Bazele informaticii 

 

32 

Calcule financiare. Tabele de decizie

Ca

formă de calcul se poate utiliza un tabel de decizie cu o singură

variabilă. Celula de intrare (pe coloană) este D5. Pentru coloana de plăţi se va utiliza funcţia PMT - PMT(D5/12;D4*12;D3), iar pentru dobânzi IPMT IPMT(D5/12;D4*12;D4*12;D3).

Bazele informaticii 

 

33 

Tabele de date. Grafice

Unitatea de învăţare Nr. 5 şi 6 Tabele de date. Grafice Cuprins Obiectivele Unităţii de învăţare Nr. 5 şi 6 5.1. Tabele de date 5.1.1. Ştergere (Delete) şi inserare (Insert) 5.1.2. Sortare şi filtrare (Sort & Filter) 5.2. Grafice (diagrame) 5.3. Rezumat Lucrare de verificare Unitate de învăţare Nr. 5 şi 6

Bazele informaticii 

 

Pagina 35 35 36 38 42 44 45

34 

Tabele de date. Grafice

 

Tabele de date Tabelele de date reprezintă un grup de date organizate tabelar, pe linii (Rows) şi pe coloane (Columns), astfel încât, principalele elemente care definesc un tabel de date sunt:   

Înregistrările (articole, records), entitatea de lucru a tabelului de date.

Câmpurile

(fields), informaţiile distincte din cadrul unei

înregistrări.

Linia

de

antet

(header

row) care permite identificarea

informaţiilor cuprinse în înregistrări. O zonă dintr-un Sheet poate fi definită ca tabel de date, devenind astfel o entitate de sine stătătoare, utilizând tab-ul Home, secţiunea Styles:

Prin acţionarea butonului Format as Table se alege stilul sub care va fi afişat tabelul (dintre stilurile predefinte). El va primi un nume (Table1, Table2, …) vizibil în tab-ul Design, Properties… :

 

Denumirile din cap de tabel prin care sunt precizate câmpurile tabelului de date trebuie să fie diferenţiate în mod corespunzător. Dacă un titlu de coloană trebuie scris pe mai multe rânduri se poate folosi combinaţia de taste Alt+Enter . Prin clic dreapta pe zona selecţionată (Format cells,

Bazele informaticii 

 

35 

Tabele de date. Grafice

Alignment) se pot face precizări legate de afişarea textului cum ar fi:  alinierea

textului

pe

orizontală

sau

pe

verticală

(Horizontal,

Vertical),  scrierea multirând (Wrap text),  adaptarea dimensiunii textului la dimensiunea celulei (Shrink to fit),  contopirea mai multor celule (Merge cells),  orientarea direcţională a textului (Orientation).   

datele de pe coloană trebuie să fie de acelaşi tip; liniile (coloanele) nu trebuie să fie goale sau întrerupte; datele de tip text nu trebuie să înceapă cu spaţiu (se pot crea probleme la căutarea sau sortarea în listă).

↓ Exemplu____________________________________________________________________________________ Un tabel este definit ca tabel de date (a se observa apariţia butoanelor săgeţi, lângă denumirile din capul de tabel, utilizate pentru prelucrarea conţinutului tabelului):

 ____________________________________________________________________________________Exemplu ↑

Ştergere (Delete) şi inserare (Insert) Actualizarea unui tabel de date se poate face la nivel de celulă, se pot introduce (Insert) linii/coloane noi sau se pot elimina cele existente (Delete). Inserarea de noi linii şi coloane depinde de poziţia cursorului în tabel şi este edificată, de obicei, prin clic dreapta, cu mouse-ul, şi alegerea opţiunii Insert:

Bazele informaticii 

 

36 

Tabele de date. Grafice

↓ Exemplu____________________________________________________________________________________ 

Inserarea unei linii (Table Rows Above):





Inserarea unei coloane (Table Columns to the Left):



____________________________________________________________________________________Exemplu ↑

Ştergerile de linii şi coloane se realizează, de asemenea, prin clic dreapta cu mouse-ul şi alegerea opţiunii Delete :

↓ Exemplu____________________________________________________________________________________ 

Ştergerea unei linii (Table Rows) – linia a doua din tabelul anterior:

Bazele informaticii 

 

37 

Tabele de date. Grafice



Ştergerea unei coloane (Table Columns) – coloana a doua:

___________________________________________________________________________________Exemplu ↑

Sortare şi filtrare (Sort & Filter)

De cele mai multe ori datele trebuie prelucrate într-o ordine diferită de cea în care au fost introduse în tabelul de date. Procedeul de ordonare a tabelelor de date (selecţie pe verticală), după diferite criterii, este realizat pe nivele (Levels). Ordonarea poate fi ascendentă sau descendentă. Nu întotdeauna trebuie prelucrate toate datele din tabel. Acest lucru implică filtrări (selecţia pe orizontală), care reprezintă posibilitatea de a introduce în prelucrare doar datele care îndeplinesc o anumită condiţie. Filtrarea se poate realiza pe o valoarea anumită cuprinsă în unul din câmpurile bazei de date şi poate fi personalizată prin criterii de filtrare particularizată (Custom), care permite precizarea condiţiilor logice: Is Greater Than (mai mare decât), Equals (egal cu), Does Not Equal (diferit de), Begins With (începe cu), etc.

Pentru efectuarea sortărilor şi a filtrărilor este utilizat butonul Sort & Filter (tab-ul Home, secţiunea Editing):

În funcţie de tipul datelor de pe coloane este afişat un meniu vertical ce permite lansarea operaţiilor de sortare sau filtrare:

Bazele informaticii 

 

38 

Tabele de date. Grafice

 Selectarea opţiunii Filter determină afişarea/ascunderea butoanelor săgeţi asociate

denumirilor

de

câmpuri,

deci,

utilizarea

sau

neutilizarea

acestora. Acţionarea butoanelor săgeţi determină apariţia, funcţie de tipul datelor din câmpul activ – textual sau numeric, unui meniu vertical, din care pot fi selectate mai multe opţiuni:

Prin procedeul de sortare se poate stabili ordinea în care liniile din tabel intră în prelucrare. ↓ Exemplu___________________________________________________________________________________ 

Sortare după câmpul Media (în ordine descrescătoare) - Sort Largest to Smallest (se acţionează butonul săgeată asociat câmpului):

Bazele informaticii 

 

39 

Tabele de date. Grafice



Sortare în ordine alfabetică - Sort A to Z (se acţionează butonul săgeată asociat câmpului Student):

____________________________________________________________________________________Exemplu ↑ Dacă se impune necesitatea ordonării unui tabel de date după mai multe criterii – sortare pe nivele, se alege opţiunea Custom Sort… din meniul vertical apărut la acţionarea butonului Sort & Filter (tab-ul Home, Editing). În fereastra Sort se pot adăuga nivele - Add Level sau se pot elimina - Delete Level. ↓ Exemplu____________________________________________________________________________________ Pentru sortarea tabelului utilizat în exemplificările anteriore, pe anul de studii (primul Level) şi în ordinea descrescătoare a mediilor (al doilea Level) fereastra Sort are următorul conţinut:

iar tabelul de date va fi afişat astfel:

___________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 

40 

Tabele de date. Grafice

Prin procedeul de filtrare, prelucrarea unui tabel este limitată doar la numite înregistrări. Pentru stabilirea unor criterii de filtrare se acţionează butoanele sub formă de săgeţi din antetul tabelului şi, funcţie de tipul de date de pe coloane - Text Filters, Number Filters, acestea se aleg din meniurile contextuale:

Opţiunea Custom Filter… permite stabilirea intervalului de valori pe care se va realiza prelucrarea tabelului.

↓ Exemplu____________________________________________________________________________________ Pentru o filtrare particularizată pe valori ale mediilor strict mai mari ca 9 şi mai mici sau egale cu 10, fereastra Custom AutoFilter va avea următorul conţinut:

Bazele informaticii 

 

41 

Tabele de date. Grafice

astfel încât tabelul va fi afişat astfel:

___________________________________________________________________________________Exemplu ↑

 Pentru invalidarea unor criterii de filtrare deja stabilite,

se alege, din

meniul contextual aferent, opţiunea Select All. Astfel tabelul de date are disponibile, spre prelucrare, toate înregistrările.

Grafice (diagrame)

Datele din tabele devin mai convingătoare atunci când sunt prezentate sub formă de histograme, diagrame circulare, grafice liniare, etc. Mediile de realizare a foilor de calcul electronic conţin facilităţi de redare grafică a tabelelor. Construirea unui grafic, pornind de la un tabel dat, presupune următoarele etape : 1) Alegerea tipului de grafic: a) linii (line) b) bare (bar) c) stivă de bare (stacked bar) d) diagrame circulare (pie) 2) Alegerea zonelor din tabel în care se găsesc seriile de date care se doresc a fi reprezentate şi seria de date care va constituii axa orizontală a graficului (de regulă date temporale - ani, zile, etc). 3) Alegerea datelor ce vor fi marcate pe axa verticală (de regulă cantităţi, preţuri, etc). 4) Alegerea titlurilor axelor şi a titlului graficului. 5) Stabilirea legendelor şi a altor detalii care contribuie la claritate reprezentării grafice.

Bazele informaticii 

 

42 

Tabele de date. Grafice

6) Alegerea datelor care vor fi marcate cu valori în clar în interiorul graficului.

  pentru a putea stabili corelaţii între diverse serii de date se recomandă reprezentare simultană pe acelaşi grafic a uneia sau a mai multor serii de date, dar nu a mai mult de şase;  marcarea axelor, scrierea titlurilor şi folosirea legendelor;  folosirea, dacă este necesară identificarea unor valori pe grafic, liniilor paralele verticale care prelungesc gradaţiile verticale;  marcarea valorilor reprezentative pe grafic; Crearea unui grafic în Excel începe cu specificarea datelor (seriilor) ce vor fi reprezentate şi presupune selectarea blocurilor de date numerice din foaia electronică de calcul. Liniile din cadrul unui bloc selectat constituie, de obicei, seriile.

Etapele realizării unui grafic :

1) Se selectează seriile; 2) Se fixează colţul stânga-sus al zonei unde va fi afişat graficul; 3) Se selectează tab-ul Insert;

Bazele informaticii 

 

43 

Tabele de date. Grafice

4) Din secţiunea Charts (tipuri de diagramă) se alege tipul de grafic. Componentele unui grafic sunt constituite din obiecte şi pot fi modificate prin instrumente de tip Chart (titlul graficului, denumirea axelor, etichetarea datelor, legende). Însuşi grafic este un obiect care, atunci când este selectat, determina apariţia tab-ului Design. Pentru a modifica un obiect din cadrul graficului se utilizează mouse-ul.

  

Crearea şi prelucrarea tabelelor de date. Grafice.

Bazele informaticii 

 

44 

Tabele de date. Grafice

1. În vederea centralizării şi prelucrării datelor privind comerţul mondial pe anul 2006 au fost înregistrate valorile privind exporturile, importurile (milioane de dolari) şi populaţia (milioane de locuitori):

Să se constituie tabelul de date corespunzător şi să se afişeze următoarele liste: a) lista ţărilor în ordine alfabetică; b) lista exporturilor şi a importurilor în ordine descendentă; c) topul ţărilor cu cele mai mari deficite comerciale;



se ataşează o nouă coloană pe care se calculează exportul – importul,

pentru o sortare ascendentă:

Bazele informaticii 

 

45 

Tabele de date. Grafice

d) topul ţărilor cu cel mai mare export pe cap de locuitor;



se ataşează o nouă coloană pe care se calculează exportul/populaţie,

pentru o sortare descendentă

e) lista ţărilor pentru care exporturile sunt cuprinse între 100 şi 300 miliarde de dolari.



2. Să se facă reprezentările grafice corespunzătoare punctelor 1b, 1c, 1d folosind diferite tipuri de diagrame .



pentru 1b

Bazele informaticii 

 

46 

Macrocomenzi

Unitatea de învăţare Nr. 7 Macrocomenzi Cuprins Obiectivele Unităţii de învăţare Nr. 7 7.1. Înregistrarea unei macrocomenzi VBA 7.2. Rezumat Lucrare de verificare Unitate de învăţare Nr. 7

Bazele informaticii 

Pagina 48 48 55 55

 

47 

Macrocomenzi

 

Limbajul Visual Basic for Applications (VBA), integrat în editoarele din familia Microsoft Office (Word, Excel, PowerPoint, Acces, Outlook), constituie un mediu de programare puternic, asemănător celui din Visual Studio (Visual Basic, C++, Java, etc.). Acest limbaj de programare poate fi utilizat pentru:  înregistrarea acţiunilor utilizatorului (de exemplu: introducerea şi formatarea unui text, rularea unor comenzi de meniu, lansarea opţiunilor din casetele de dialog etc.) prin transpunerea lor în secvenţe de instrucţiuni Basic, care definesc un script numit macrocomandă;  gestionarea conţinutului documentului Office, cu care VBA-ul poate comunica;  dezvoltarea unor programare independente de conţinutul documentului Office (este necesară deschiderea, cel puţin formal, unei aplicaţii Word, Excel, etc.). O macrocomandă (apelată printr-o comandă de meniu, apăsarea unei taste sau a unui buton dintr-o bară de instrumente) reprezintă o listă de instrucţiuni - instrucţiuni de macrocomandă (macro statements). Unele instrucţiuni execută operaţii specifice macrocomenzii, însă cele mai multe corespund acţiunilor înregistrate ale utilizatorului. Este, astfel, posibilă automatizarea activităţilor de rutină sau repetitive şi derularea lor, prin lansarea macrocomenzilor. Mediul de programare abordat este Visual Basic for Applications inclus în Microsoft Office 2007 dar, informaţiile sunt, în general, valabile şi pentru suita Office 2003. Acesta conţine un instrument complet de dezvoltare VBA, numit

Visual Basic Editor.

 Înregistrarea unei macrocomenzi VBA

Cea mai simplă metodă de creare a unei macrocomenzi este utilizarea resursei Macro Recorder. Prin această metodă, operaţiunile dorite a fi automatizate sunt înregistrate pas cu pas (editare text, comenzi de meniu, casete de dialog …). Bazele informaticii 

 

48 

Macrocomenzi

Macro Recorder-ul transformă corespunzătoare (module VBA).

toate

operaţiile

în

instrucţiuni

Basic

În Word, Excel sau PowerPoint (celelalte programe din pachetul Office nu posedă funcţii de înregistrare ale macrocomenzilor) înregistrarea unei macrocomenzi începe prin stabilirea unui nume pentru macrocomandă (cum ar fi Macro1), dar acest nume se poate schimba cu orice alt nume, în caseta de text Macro name:  numele nu pot avea mai mult de 255 de caractere, dar este recomandată specificarea unor nume scurte, uşor accesibile;  primul caracter trebuie să fie o literă sau o liniuţă de subliniere (_);  în nume nu sunt permise spaţiile sau punctele. ↓ Exemple____________________________________________________________________________________ În Word, macrocomanda poate fi asociată cu un buton (Button) de pe o bară de instrumente, sau, cu o combinaţie de taste (Keyboard) → Alt+, Ctrl+. Ea se poate stoca (Store macro in) în orice şablon deschis (devine astfel disponibilă pentru orice document care foloseşte şablonul) sau în orice document deschis (va putea fi utilizată doar în documentul respectiv). Caseta de text Description conţine, opţional, descrierea macrocomenzii. În Excel, macrocomanda va fi plasată în registrul de lucru curent, într-un registru de lucru nou sau în registrul Personal Macro Workbook (macrocomenzile vor fi disponibile în toate registrele de lucru).

____________________________________________________________________________________Exemple ↑

Bazele informaticii 

 

49 

Macrocomenzi

 

Deoarece modulul de înregistrare a macrocomenzilor memorează toate acţiunile

utilizatorului,

este

indicată

neefectuarea

unor

comenzi

neesenţiale pe parcursul înregistrării. Intrarea în starea ”Recording” este marcată în bara de stare a programului Office. Acest buton va fi acţionat în momentul terminării înregistrării:



În PowerPoint, macrocomanda se poate memora în orice prezentare

deschisă. Ea va fi creată utilizând editorul VBA.



Exemplu (Word) ____________________________________________________________________

Adăugarea unui buton de rulare a unei macrocomenzi, în Quick Access Toolbar:

Quick Access Toolbar 

 se deschide în editare un document;  se iniţiază înregistrarea unei macrocomenzi, ;  se stabileşte numele macrocomenzii (aici Antet) care va fi asociată unui buton (Assign macro to, Button);  în fereastra Word Option, Customize, , ;  noul buton va apare în lista Quick Access:

Bazele informaticii 

 

50 

Macrocomenzi

.  se acţionează butonul  din fereastra Modify Button se selectează un ): simbol (de exemplu

 în Quick Access Toolbar va apare noul buton:

 se introduce, în fereastra documentului un text (pentru dată şi oră, se selectează din tab-ul Insert,

):

 

Universitatea "Ovidius" Constanţa  Facultatea de Ştiinţe Economice    

 

Data: 11 februarie 2007 Ora: 11:24

 se încheie înregistrarea apăsând butonul

, din bara de stare;

 macrocomanda, fiind asociată documentului, poate fi utilizată oricând prin acţionarea butonului

(a se remarca actualizarea datei şi a orei):

Universitatea "Ovidius" Constanţa  Facultatea de Ştiinţe Economice    

 

Data: 13 februarie 2007 Ora: 17:16

 vizualizarea conţinutului macrocomenzii VBA:

Bazele informaticii 

 

, Edit în Editorul

51 

Macrocomenzi

În corpul macroinstrucţiunii apar instrucţiuni ale limbajului de programare Visual Basic în care sunt transformate acţiunile utilizatorului. Acest instrucţiuni au mai multă sau mai puţină semnificaţie, mai ales pentru un programator începător. Deocamdată, important este faptul de a ştii că ele pot fi modificate. ___________________________________________________________________________________Exemplu ↑

O macrocomandă obişnuită are următoarele elemente:  Cuvântul cheie Sub (prescurtare de la subrutină) - acest cuvânt cheie marchează începutul unei macrocomenzi.  Numele macrocomenzii - după cuvântul cheie Sub este plasat numele unei macrocomenzi urmat de paranteze.  Comentariile - rânduri care încep cu un apostrof ('). Comentariile nu sunt prelucrate atunci când macrocomanda este rulată.  Instrucţiunile macrocomenzii - corpul principal al macrocomenzii (liniile dintre cuvintele cheie Sub şi End Sub).

Bazele informaticii 

 

52 

Macrocomenzi

 

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

macrocomenzilor

nu

este

permisă,

din

motive

de

securitate,utilizatorul poate lua decizia adecvată acţionând butonul :



Rularea unei macrocomenzi se poate realiza şi prin shortcut-ul

Alt+F8.



Exemplu (Excel) ___________________________________________________________________  se deschide în editare un document;  se poziţionează cursorul (de exemplu în celula B2);  se iniţiază înregistrarea unei macrocomenzi, ;  se stabileşte numele macrocomenzii (aici Data) care va fi asociată cu combinaţia de taste Ctrl +d ;  în celula curentă se introduce funcţia TODAY():

 se salvează foaia electronică de calcul: Save as type, Excel MacroEnabled Workbook ;  se deschide documentul Excel, dându-se permisiunea de executare a , Enable this content ; macrocomenzilor: Bazele informaticii 

 

53 

Macrocomenzi

 se poate introduce data curentă, în orice celulă (de exemplu în D4) utilizând shortcut-ul Ctrl +d :

 vizualizarea conţinutului macrocomenzii VBA:

, Edit în Editorul

 la executarea macrocomenzii se poate constata că, este introdusă data curentă, dar cursorul se va deplasa, mereu, în celula B3 (pentru că, la înregistrarea macrocomenzii, după introducerea funcţiei de dată calendaristică a fost apăsată tasta Enter). Dacă, în editorul VBA, se şterge instrucţiunea Range(”B3”).Select, activarea celulei B3 va fi

anulată. ____________________________________________________________________________________Exemplu ↑

 Macrocomenzile sunt asociate documentelor Office. Ele pot fi salvate

împreună cu aceste documente: din lista Save as type, se selectează tipul de fişier ce conţine menţiunea Macro-Enabled.

Bazele informaticii 

 

54 

Macrocomenzi

  O macrocomandă reprezintă o listă de instrucţiuni scrise în limbajul de programare Basic, varianta VBA.

 VBA este un mediu de programare puternic, asemănător celui din Visual Studio (Visual Basic, C++, Java, etc.)

 Instrucţiunile unei macrocomenzi pot fi editate - se pot modifica, şterge instrucţiunile Basic existente, se pot adăuga altele noi.

 Macrocomenzile pot fi rulate de câte ori este nevoie.  Din motive de securitate, la lansarea aplicaţiilor

Office, se notifică existenţa macrocomenzilor, executarea lor nefiind permisă în mod implicit.

Să se înregistreze şi să se ruleze macrocomenzile din exemplele marcate cu simbolul

Bazele informaticii 

.

 

55 

Editorul VBA

Unitatea de învăţare Nr. 8 Editorul VBA Cuprins Obiectivele Unităţii de învăţare Nr. 8 8.1. Lansarea editorului VBA 8.2. Mediul de editare VBA 8.3. Module VBA 8.3.1. Identificarea modulelor 8.3.2. Rularea modulelor 8.3.3. Save şi Open pentru aplicaţiile Office şi modulele asociate 8.3.4. Sistemul de asistenţă la scrierea codului 8.3.5. Proceduri 8.3.5.1. Proceduri Sub 8.3.5.2. Proceduri Function Formulare VBA 8.4. 8.4.1. Crearea unui formular 8.4.2. Rularea unui formular 8.4.3. Controale OLE 8.5. Documente Office active 8.5.1. Controale ActiveX 8.5.2. Proceduri eveniment 8.6. Rezumat Lucrare de verificare Unitate de învăţare Nr. 8

Bazele informaticii 

 

Pagina 57 57 57 59 59 59 60 60 61 61 63 64 65 66 66 68 69 70 72 73

56 

Editorul VBA

 

Programele din suita Office au asociate un editor VBA numit VBE care facilitează scrierea şi editarea unor secvenţe program în limbajul Visual Basic (în cercurile programatorilor profesionişti, Visual Basic Editor este numit mediu integrat de dezvoltare sau IDE). VBE transpune acţiunile utilizatorului în instrucţiuni Basic sub forma macrocomenzilor, prin procedeul de înregistrare. Se pot edita însă şi macrocomenzi proprii, fie pornind de la zero, fie utilizând ca punct de plecare o macrocomandă înregistrată.

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

,

 Mediul de editare VBA Editorul de programe Basic oferă instrumente de lucru, cum ar fi:  Bara de meniuri, MenuBar, conţine o serie de meniuri, fiecare dintre acestea conţinând comenzi. De exemplu, se poate selecta comanda Run Sub/UserForm din meniul Run. Multe dintre comenzile meniurilor au aşanumitele taste rapide (hotkeys) care se pot folosi pentru a selecta Bazele informaticii 

 

57 

Editorul VBA

comanda direct din tastatură (F5 în cazul de faţă) – fără deschiderea meniului. MenuBar ToolBar

Fereastra  Project 

Fereastra  de cod  Fereastra  Properties 

 Bara de instrumente, Toolbar, furnizează acces la multe dintre comenzile cele mai des utilizate în limbajul Visual Basic. Multe dintre butoanele din bara de instrumente sunt doar modalităţi rapide de selectare a unei comenzi din meniuri. De exemplu, butonul (Save) salvează documentul din proiectul curent, având aceeaşi pictogramă şi acelaşi efect ca şi selectarea comenzii din meniul File.  Fereastra Project oferă o trecere în revistă a obiectelor din proiectul curent. De exemplu, un modul sau un formular utilizator (UserForm) va fi unul dintre aceste obiecte. De fapt, în unele proiecte pot exista mai multe obiecte. Executând un clic pe semnele plus(+) şi minus(-) de lângă dosarele din fereastra Project, se pot afişa mai multe sau mai puţine detalii.  Fereastra Properties afişează proprietăţile obiectului care este curent selectat. Proprietăţile sunt atribute ale unui obiect. De exemplu, modulul are o proprietate numită (Name) pentru identificarea acestuia.  Fereastra de cod. Chiar dacă limbajul Visual Basic permite construirea Bazele informaticii 

 

58 

Editorul VBA

unei părţi din proiect, prin procedeul „Recording”, este necesară şi scrierea codului sursă al programului. Programele conţin linii de comenzi care se introduc în fereastra de cod.

Module VBA În Visual Basic Editor, macrocomenzile sunt grupate în aşa numitele module (esenţa limbajului VBA). Modulele sunt secţiuni care grupează instrucţiuni Basic. Dacă documentul Office are asociată o macrocomandă, instrucţiunile care o compun sunt afişate în fereastra de cod. Pentru editarea propriilor module este necesară inserarea acestora (prin meniu, Insert, sau utilizând butonul

din Toolbar).

 Identificarea modulelor Atunci când se introduce un modul nou într-un proiect, VBA îi atribuie un nume generic, cum ar fi Module1, Module2, …. Practic este necesară utilizarea unor nume sugestive pentru ca, prin acestea, modulele să poată fi diferenţiate. Pentru a schimba numele unui modul:  Se selectează modulul în fereastra Project Explorer.  În fereastra Properties, proprietatea (Name), se tastează numele modulului. Numele utilizat începe cu o literă, nu conţine spaţii sau semne de punctuaţie (liniuţele de subliniere sunt acceptate) şi nu are mai mult de 31 de caractere.  Rularea modulelor Modulele includ o secvenţă de instrucţiuni Basic care trebuie să fie corecte din punct de vedere sintactic. Detectarea erorilor se poate efectua prin compilare (Debug, Compile Project). În aplicaţiile Office există mai multe metode de rulare a modulelor, însă cel mai des utilizate sunt următoarele două:  În cadrul editorului, se acţionează, de obicei, butonul ToolBar. Aceeaşi comanda se poate lansa şi prin meniu:

din ,

.  În aplicaţia Office, caseta Macros evidenţiază modulul care poate fi executat prin clic pe butonul Run. Caseta Macros este vizualizată:  prin tab-ul View, Macros ,  cu Shortcut-ul Alt+F8 (cel mai frecvent).

Bazele informaticii 

 

59 

Editorul VBA

şi

pentru aplicaţiile Office şi modulele asociate

Modulele create într-un document Office pot fi stocate în două moduri:  Împreună cu documentul. În acest caz este necesar ca, la salvare, să se facă precizarea tipului de fişier: Macro-Enabled (Save As type). Pentru un astfel de fişier, atunci când se deschide, în Message Bar va apare mesajul:

Se poate permite executarea macrocomenzilor în fereastra Security Alert – Macro (clic pe butonul Options…) :  Separat, ca fişiere cu extensia .bas (fişiere Basic). Pe această cale se exportă/importă modulul ca fişier .bas, de fapt un fişier text care cuprinde codul VBA. Exportare/importarea unui modul este realizată prin meniul editorului (File, Export File… Ctrl+E / File, Import File… Ctrl+M).  Sistemul de asistenţă la scrierea codului VBA oferă sugestii şi alternative în timpul tastării codului, prin instrumentul

IntelliSense, după ce s-a introdus un cuvânt-cheie care este recunoscut ca

având parametri. Editorul de program afişează lista valorilor posibile pentru respectivii parametrii. Parametri semnifică proprietăţile unui control (care în cod se separă de numele controlului prin punct), argumentele unei proceduri sau funcţii, tipurile de dată etc. Această facilitate se numeşte Auto Members. Poziţionarea în listele respective se face mai uşor prin tastarea primelor litere ale cuvântului dorit („Int" pentru Integer). Scrierea efectivă a cuvântului dorit are loc prin apăsarea tastei Enter, tasta „virgulă" dacă se scriu elementele unei liste.

La tastarea liniilor de cod, VBA execută mai multe operaţii:  Formatează culoarea fiecărui cuvânt din linie. În mod prestabilit, cuvintele cheie din VBA sunt afişate cu albastru, comentariile cu verde,

Bazele informaticii 

 

60 

Editorul VBA

erorile cu roşu, iar celelalte texte cu negru.  Adaugă linii şi cuvinte noi, specifice limbajului. De exemplu, dacă se introduce cuvântul cheie Sub urmat de numele procedurii, VBA adaugă automat o pereche de paranteze rotunde după nume şi introduce o linie End Sub pentru a marca sfârşitul procedurii.  Cuvintele cheie sunt schimbate în formatul potrivit (dacă se tastează end sub, VBA transformă expresia în End Sub la apăsarea tastei Enter.  Verifică erorile de sintaxă, adică erorile care apar atunci când un cuvânt este ortografiat greşit, o funcţie este introdusă incorect, etc. VBA semnalează o eroare de sintaxă, fie afişând o casetă de dialog, fie neafişând cuvântul, în formatul şi culoarea corespunzătoare. ↓ Exemplu____________________________________________________________________________________  Într-un modul se tastează

sub Salut,

 Se apasă tasta Enter,  Se apasă tasta Tab,  Se introduce textul msgbox(”Bun

venit in VBA!”),

 Modulul va fi afişat astfel:

____________________________________________________________________________________Exemplu ↑

 În exemplificările următoare, pentru afişarea unor casete de mesaj, se va utiliza funcţia MsgBox.  Proceduri Un modul este compus din una sau mai multe unităţi de bază numite proceduri. Există două tipuri de proceduri:  proceduri Sub (subrutine)  proceduri Function (funcţii) Pentru lucrul cu procedurile trebuie avută în vedere, în primul rând, definirea grupului de instrucţiuni care vor constitui corpul procedurii şi, în al doilea rând apelul lor (de câte ori este nevoie). Proceduri

Sub

O procedură Sub reprezintă un grup de instrucţiuni care primeşte, de la programul apelant un şir de parametri, realizează anumite prelucrări, după care dă controlul programului apelant.

Bazele informaticii 

 

61 

Editorul VBA

Definiţia sintactică este (Exit Sub este opţional şi reprezintă punctul de ieşire din procedură, dacă lipseşte procedura se termină la End Sub):

Sub NumeProcedură (argument1, argument2, …) [Exit Sub]

End Sub  Apelul procedurii (cuvântul Call poate să nu apară): [Call] NumeProcedură (parametru1, parametru2, …) Argumentele de apel - 0, 1 sau mai multe - sunt în corespondenţă biunivocă cu parametrii de transmis. Această corespondenţă este determinată de ordinea şi tipul argumentelor aflate în listă.



Exemple______________________________________________________________________________

Procedura apelantă este ex1(), iar cea apelată este ex2() – nu au argumente:

Procedura apelantă este ex1(), iar cea apelată este ex2() – are 2 argumente:

____________________________________________________________________________________Exemple ↑

Bazele informaticii 

 

62 

Editorul VBA

Proceduri

Function

O funcţie definită de utilizator reprezintă un grup de instrucţiuni care primeşte un set de parametrii (argumentele funcţiei) de la programul apelant şi îi returnează acestuia valoarea. Numele unei funcţii poate intra în componenţa expresiilor de calcul ca operand. Definiţia sintactică este:

Function NumeFuncţie (argument1, argument2, …) [As ] [Exit Function]

End Function  Apelul funcţiei se realizează prin parametrilor, pusă între paranteze.

numele

funcţiei

urmat de lista

 

Între lista parametrilor de apel şi lista argumentelor funcţiei trebuie să existe o

corespondenţă

biunivocă, determinată de ordinea

argumentelor în listă. 

Exit Function este opţional şi reprezintă punctul de ieşire din procedură - dacă lipseşte procedura se termină la End Function.



Argumentul

As,

opţional,

impune

tipul

valorii

returnate

la

terminarea funcţiei. ↓

Exemple______________________________________________________________________________ Din procedura Sub ex1() este apelată procedura Function ex2() – funcţie fără nici un argument:

Bazele informaticii 

 

63 

Editorul VBA

O funcţie ValoareTva, pentru calculul valorii TVA, poate fi definită într-un modul:

____________________________________________________________________________________Exemple ↑

 Tratarea mai pe larg a acestor secţiuni de program va fi făcută în capitolul Module VBA.

Formulare VBA Cu ajutorul formularelor (se poate utiliza şi termenul form) se defineşte interfaţa grafică, asemănătoare cu cea editată în mediile de programare Visual Studio, astfel că practica în VBA poate fi considerată introductivă către acestea. În formular se pot introduce controale OLE (numite şi controale ActiveX), situate în caseta cu instrumente ToolBox, care permit interacţiunea cu utilizatorul. Un control are atribute (proprietăţi) ajustabile şi sesizează evenimente (este „viu”). Controalelor li se asociază secvenţe de cod, sub forma unor proceduri, numite proceduri eveniment.

Bazele informaticii 

 

64 

Editorul VBA

Design 

Project 

Properties 

Formular 

Toolbox

Caseta cu  instrumente 

Crearea unui dialog utilizator (termenul utilizator este adăugat pentru diferenţierea de dialogurile încorporate mediului) necesită parcurgerea mai multor etape:  crearea unui formular (UserForm), care constituie suportul pe care sunt adăugate controalele;  plasarea controalelor pe formular;  stabilirea proprietăţilor pentru controale;  scrierea procedurilor asociate controalelor, de răspuns la evenimentele declanşate prin acţionarea lor.  Crearea unui formular În Visual Basic Editor crearea unui formular (prin meniu, Insert, sau utilizând butonul proiectare (design mode).

Bazele informaticii 

din Toolbar) se realizează în modul de

 

65 

Editorul VBA

 Rularea unui formular În modul de execuţie (run mode) controalele răspund evenimentelor. Pentru rularea unui formular se acţionează, de obicei, butonul din ToolBar (aceeaşi comanda se poate lansa şi prin meniu: Run, Run Sub/UseForm). Se pot rula doar proiectele corecte sintactic (verificare prin compilare: Debug, Compile Project).

 Controale OLE Fereastra UserForm include obiectul care are UserForm1 în bara de titlu. Pe formular se pot introduce, din Toolbox, controalele care definesc interfaţa cu utilizatorul, cum ar fi:  

Buton

 

Etichetă

   

Casetă de text

 

Buton radio (opţiune)

 

 

Casetă cu listă

 

Listă derulantă

 

Casetă de imagine

Numele proiectului apare în fereastra Project Explorer, iar proprietăţile controalelor (dar şi ale formularului) sunt afişate în fereastra Properties. Aceste proprietăţi pot fi stabilite manual (din fereastra Properties) sau prin instrucţiuni program. Pentru a adăuga un control în formular se execută clic pe pictograma corespunzătoare din Toolbox şi se trasează în fereastra formularului (o linie punctată gri şi punctele de dimensionare înconjoară controlul). Mărimea controlului se poate stabili utilizând punctele de dimensionare. Când se plasează indicatorul mouse-ului deasupra unui punct de dimensionare, acesta îşi modifică înfăţişarea pentru a indica direcţiile în care se poate trage acesta, ţinând apăsat butonul stâng al mouse-ului. Pentru a muta controlul, se plasează indicatorul mouse-ului deasupra sa, cursorul acestuia transformându-se într-o pictogramă cu patru săgeţi. Butonul mouse-ului se ţine apăsat şi se deplasează cursorul. Bazele informaticii 

 

66 

Editorul VBA

 Se pot redimensiona majoritatea controalelor, trăgând de punctele lor de dimensionare. De asemenea se poate realiza deplasarea lor. ↓

Exemplu_____________________________________________________________________________ Adăugarea unui buton în formular:  se execută clic pe controlul CommandButton şi se trasează în fereastra formularului;  Textul înscris în antetul formularului (UserForm1) se poate modifica stabilind, de exemplu, proprietatea Caption la valoarea Fereastra mea;  Pentru buton, proprietăţile Caption şi Name se modifică la valoarea Start:

 Atunci când se execută dublu clic pe control, limbajul VBA afişează fereastra de cod în care sunt incluse şi liniile de cod implicite (procedură). Procedura Private Sub Start_Click() se va executa ori de câte ori utilizatorul, în faza de execuţie, acţionează butonul (procedura este un eveniment pe care Windows îl transmite programului spre a fi administrată). Programatorul poate adăuga propriul lui cod sursă. De exemplu instrucţiunea MsgBox (”Bun venit in VBA”) spune limbajului VBA să afişeze o casetă de mesaj: Sub Start_Click() MsgBox („Bun venit in VBA”) End Sub   La rularea programului ( ) va apare caseta de mesaj conţinând textul ”Bun venit in VBA”:

Bazele informaticii 

 

67 

Editorul VBA

___________________________________________________________________________________Exemplu ↑



Tratarea mai pe larg a controalelor care definesc interfaţa grafică cu

utilizatorul va fi făcută în capitolul Formulare VBA.

Documente Office active Controalele ActiveX (în cazul formularelor mai sunt denumite şi controale OLE, pentru a face diferenţierea) pot fi plasate şi direct în documentele aplicaţiilor: documente Word, foi de calcul Excel, diapozitive PowerPoint. În Word controalele se introduc pe stratul de text și sunt selectate din grupul Controls, tab-ul Developer:

Aceste controale au atribute cu proprietăţi ajustabile, recunosc evenimente. Prin scrierea procedurilor eveniment, interfaţa cu utilizatorul poate fi personalizată şi definită corespunzător. Pot fi adăugate controale unui document în acelaşi mod în care controalele se adaugă unui formular. Astfel, unui document i se pot incorpora casete de text, liste, butoane radio, pentru a-l transforma într-un formular activ (online). Deşi modul de operare al controalelor ActiveX este foarte asemănător cu cel al controalelor OLE, există unele deosebiri: Bazele informaticii 

 

68 

Editorul VBA

Adăugarea controalelor se realizează cu ajutorul cutiei de unelte ActiveX Controls (şi nu Toolbox ca în VBE).  Editarea lor este permisă în modul Design mode iar activarea lor în Run Mode. Bascularea între cele două moduri este realizată în Word din tab-ul (dar şi în Excel) prin acţionarea butonului Developer. În PowerPoint se trece în Slide Show pentru a se ajunge în Run Mode şi se revine într-un context de editare pentru Design Mode.  Proprietăţile controalelor se stabilesc după ce se acţionează butonul .



Evenimentele dintr-un document Office şi dintr-un formular fiind uneori diferite şi tratările acestora sunt diferite.  Pentru editarea şi utilizarea documentelor Word active se impune respectarea următoarelor reguli:  Controalele ActiveX se pot adăuga stratului (layer-ului) de text. Controlul este inserat ca un caracter, respectându-se atributele liniei şi paragrafului.  Controalele nu pot fi aduse prin drag&drop, cu mouse-ul, în document. La click pe un control, acesta este inserat în punctul de inserţie pe text.  În Design Mode, controalele ActiveX sunt disponibile pentru editare.  În Run Mode controalele reacţionează la evenimente.  Controale ActiveX

 

 

Controlul CommandButton este tipic pentru startul evenimentelor. Codul program de executat este plasat în procedura eveniment Click. Textul afişat pe buton este conţinut în proprietatea Caption, iar numele lui în proprietatea (Name). Mediul de proiectare VBA atribuie nume butoanelor (CommandButton1, CommandButton2, …) dar este indicat ca utilizatorul să folosească denumiri semnificative.

 

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

Bazele informaticii 

 

69 

Editorul VBA

 

 

Acest control este unul dintre cele mai folosite în programarea interfeţelor grafice datorită avantajelor pe care le oferă la introducerea datelor şi la manipularea lor. Defineşte un câmp de editare în care utilizatorul poate introduce un text (proprietatea Text). Aspectul textului afişat este determinat de proprietăţile Font şi ForeColor. La fel ca şi la alte controale, proprietăţile pot fi modificate prin cod program, în timpul rulării aplicaţiei. O casetă de text poate fi folosită în modul activ (utilizatorul are acces la conţinutul său) sau în modul inactiv (utilizatorul poate doar să vizualizeze conţinutul, textul fiind protejat în cazul în care se încearcă modificarea sa).  

Este controlul care se foloseşte atunci când trebuie selectată doar o singură opţiune din mai multe posibile.

 Proceduri eveniment

Procedurile eveniment sunt secvenţe de instrucţiuni asociate diferitelor controale la activarea/dezactivarea acestora. Afişarea ferestrei de cod este realizată prin executarea unui dublu clic pe controlul pentru care se doreşte scrierea instrucţiunilor program. Numele procedurii (Click - pentru CommandButton sau OptionButton, Change – pentru TextBox) este legat de numele controlului prin simbolul _ (underline) : Private Sub control_procedura() End Sub  În instrucţiunile Basic, referirea la proprietatea unui control se face prin construcţia control.proprietate – numele proprietăţii este legat de numele controlului printr-un punct.

 La testarea secvenţelor de cod se produc, deseori, erori de sintaxă sau de natură logică, mai ales de către începători. Pentru a le rezolva este necesar un Reset (din meniul Run al VBA-ului):

Bazele informaticii 

 

70 

Editorul VBA



Exemplu (Word) ___________________________________________________________________

 În Design mode se introduc, în document, două TextBox-uri: _______________________________________________________________

Preţul:

TVA:

_______________________________________________________________  Se stabilesc proprietăţile:

Proprietatea

Enabled

=

True

pentru

TVA

anihilează

scrierile

accidentale în această casetă de text, destinată afişării rezultatului unui calcul.

 Se editează procedura eveniment: Private Sub Pret_Change() TVA = Pret * 0.19 End Sub Mai

complet, se poate testa dacă preţul este într-adevăr o valoare

numerică (funcţia IsNumeric şi instrucţiunea If vor fi tratate ulterior):

Private Sub Pret_Change() If IsNumeric(Pret.Text) Then TVA = Pret * 0.19 End If End Sub 

!

În limbajele de programare se foloseşte punct zecimal în loc de virgulă

zecimală, vezi : 0.19

 În Run Mode se pot iniţia calcule:

Bazele informaticii 

 

71 

Editorul VBA

______________________________________________________________ Preţul:

142,50

TVA:

27.075

______________________________________________________________

! preţul apare cu virgulă zecimală datorită setărilor de sistem: Regional and Language Options: Romanian ____________________________________________________________________________________Exemplu ↑

  VBA

se poate lansa dintr-o aplicaţie Office, cel mai adesea utilizând shortcut-ul Alt+F11.

 După

lansarea mediului de programare VBA se pot edita module şi formulare noi sau se pot edita cele existente (stocate împreună cu documentele Office sau exportate ca fişiere cu extensia .bas).

 Fereastra

Project Explorer arată modulele, formularele și documentele Office din proiect. Un proiect are cel puţin un modul sau un formular.

 Pentru

a crea o aplicaţie VBA e necesară scrierea codului sursă al programului şi apoi compilarea programului (Debug, Compile Project) pentru eliminarea eventualelor erori de sintaxă.

 Instrucţiunile programului se introduc în fereastra de cod VBA.  Fereastra Properties afişează atributele unui obiect din proiect.  Controalele se folosesc pentru a realiza interfaţa grafică cu utilizatorul.  Se poate construi o interfaţă cu utilizatorul plasând controale pe un formular sau pe stratul de text al Word-ului.

 Se pot redimensiona controalele (şi formularul) trăgând de punctele de

dimensionare ale controalelor, care apar atunci când este selectat controlul.

 O modalitate de afişare a ferestrei de cod este executarea unui dublu clic pe controlul pentru care se doreşte scrierea codului de program.

 Atunci când utilizatorul apasă pe un buton dintr-un formular sau dintr-un Bazele informaticii 

 

72 

Editorul VBA

document, VBA generează un eveniment Click. Codul de program care se adaugă la procedura de eveniment Click a butonului determină ce anume face butonul.

 Dacă utilizatorul introduce date într-o casetă de text evenimentul Change oferă posibilitatea preluării acestor date în programul Basic.

Să se editeze şi să se ruleze secvenţele de instrucţiuni Basic din exemplele marcate cu simbolul

Bazele informaticii 

.

 

73 

Secvenţe de cod VBA

Unitatea de învăţare Nr. 9 Secvenţe de cod VBA Cuprins Obiectivele Unităţii de învăţare Nr. 9 9.1. Cuvintele 9.2. Comentariile 9.3. Tipuri de date 9.4. Expresiile 9.4.1. Operanzi 9.4.2. Operatori 9.4.3. Ordinea de evaluare a expresiilor 9.5. Constante şi variabile 9.5.1. Constante 9.5.2. Variabile 9.6. Instrucţiunea de atribuire 9.7. Liste (arrays) de variabile 9.7.1. Liste dinamice Lucrare de verificare Unitate de învăţare Nr. 9

Bazele informaticii 

Pagina 75 75 76 76 79 79 79 80 81 81 82 83 84 85 86

 

74 

Secvenţe de cod VBA

 

O aplicaţie VBA include unul sau mai multe formulare şi module. Secvenţele de cod (program sursă), asociate acestora, sunt constituite din linii de program editat în limbajul de programare Visual Basic. În principiu o linie de program, formată din mai multe cuvinte care pot fi scrise cu majuscule şi/sau cu minuscule, are două părţi: o instrucţiune şi unul sau mai multe argumente. Editorul de program colorează cuvintele pentru a facilita detectarea lor. Sunt câteva culori implicite: verde pentru comentarii, albastru pentru cuvintelecheie, negru pentru elementele definite de utilizator (variabile şi constante) etc.  Cuvintele Prin reunirea caracterelor alfabetice, numerice, precum şi a unor caractere speciale se formează cuvintele. Acestea se pot grupa în 2 categorii: • •

cuvinte rezervate (cheie); cuvinte utilizator.

Cuvintele rezervate (cheie) aparţin limbajului şi au o semnificaţie predefinită, motiv pentru care pot fi folosite numai în modul în care sunt specificate în formatele generale (de exemplu: For, Next, Do, Loop, etc). Cuvintele utilizator sunt create de programator atât pentru a defini datele ce se prelucrează, programele, fişierele, procedurile, cât şi pentru a înscrie comentarii în programe (de exemplu: cantitate, PU, Valoare, etc).

  O linie poate ocupa şi două rânduri, reunite prin spaţiu şi linie de subliniere ( _) la sfârşitul primului rând.  O linie de program poate conţine mai multe instrucţiuni separate prin : (două puncte), lucru nerecomandabil datorită dificultăţilor de citire a programului.  Nu este permisă tăierea cuvintelor !

Bazele informaticii 

 

75 

Secvenţe de cod VBA

↓ Exemple____________________________________________________________________________________ Instrucţiune scrisă pe două rânduri:

Valoare = pret * _ cantitate Instrucţiuni scrise pe acelaşi rând:

Valoare = 2 : cantitate = 50 ____________________________________________________________________________________Exemple ↑

 Comentariile Un comentariu constituie o linie de cod care nu se execută, având în cuprins explicaţii asupra altor porţiuni de cod (care, de regulă, urmează). În acest fel, la o parcurgere ulterioară a codului, va fi facilitată înţelegerea acestuia. Comentariile incluse de programatori la scrierea unei aplicaţii ajută foarte mult la modificarea sau întreţinerea acesteia. Un comentariu este deci un mesaj inclus într-o secvenţă de program cu diferite scopuri, precum:    

identificarea programului; descrierea obiectivului general al programului; descrierea scopului fiecărei proceduri în parte; explicarea secvenţelor sau a calculelor mai complexe.

În Basic există două variante:  Utilizarea instrucţiunii

REM: desemnează un comentariu care se întinde

pe întreg rândul;

 Utilizarea unui apostrof (') la începutul comentariului: în acest caz se

pot scrie comentarii şi după o instrucţiune, pe acelaşi rând.

Liniile de comentarii nu sunt executate şi nu sunt vizibile în momentul execuţiei aplicaţiei - Basic ignoră la execuţie liniile care încep cu REM sau apostrof.

Bazele informaticii 

 

76 

Secvenţe de cod VBA

↓ Exemplu____________________________________________________________________________________ REM Programator: Parvulescu Andrei REM Program de calcul al salariilor '... REM Aici sunt alte instructiuni '... Sub Calc_Impozit(Salariu As Single) 'Procedura de calcul a impozitului Dim Impozit As Single 'variabila pentru memorarea 'impozitului 'Se utilizeaza 2 variabile: 'una pentru suma fixa si una pentru procent. Dim SumaFixa, Procent As Single 'calculul impozitului Impozit = SumaFixa + Salariu * Procent / 100 End Sub ____________________________________________________________________________________Exemplu ↑

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

Descriere

Lungime

Interval de valori

(byte)

Boolean

Date de tipul logic

Byte Integer Long

Bazele informaticii 

Numere întregi

1

True sau False

1

0  255

2

-32.768  32.767

4

-2.147.483.648  2.147.483.647

 

77 

Secvenţe de cod VBA

Currency

Format monetar

8

-922.337.203.685.477,5808  922.337.203.685.477,5807

Single

Double

4 Numere zecimale în virgulă flotantă (pentru aplicaţii ştiinţifice)

-3.4028235E+38  -1.401298E-45

8

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

Date

Date calendaristice şi de timp

String

Şir de caractere

Object

Obiecte (cum ar fi controale şi formulare)

Variant

Date de orice tip, utilizat atunci când tipul acestora este incert

8

1 ian. 100  31dec. 9999

4

Pentru scrierea valorilor numerice sunt folosite, uneori, literele E sau D. „E" provine de la „exponent" iar „D" de la „exponent dublă precizie". Prin exponent se înţelege o putere a lui 10 cu care se înmulţeşte o altă valoare. Literele E şi e (sau D şi d) sunt utilizate într-o notaţie specială, denumită ştiinţifică. Notaţia ştiinţifică este o reprezentare prescurtată, utilizată pentru numere foarte mari sau foarte mici. Se consideră că această notaţie este mai inteligibilă decât repetarea unui număr mare de zerouri. Convertirea la valoarea reală se poate face oricând, astfel: calculează 10 la puterea dată de numărul care urmează după D sau E; valoarea obţinută se înmulţeşte cu numărul care-l precede pe D sau E. ↓ Exemplu____________________________________________________________________________________ o o

87,972E+6 înseamnă 87,972 * 106 adică 87.972.000.000 ____________________________________________________________________________________Exemplu ↑ Bazele informaticii 

 

78 

Secvenţe de cod VBA

 Expresiile (de calcul) Relaţiile de calcul se transpun în expresii formate din:  Operanzi care pot fi:  Constantele.  Variabilele.  Funcţiile (Basic sau utilizator).  Operatori.

Operatorii leagă operanzi de acelaşi tip. Operatorii folosiţi în programele Basic sunt următorii : 

Operatorii aritmetici - leagă operanzi numerici. Operator +

adunare

-

scădere

*

înmulţire

/

împărţire

\

câtul unei împărţiri cu rest

Mod ^ 

Descriere

modulo (restul împărţirii) ridicare la putere

Operatorii relaţionali - produc rezultate de tip boolean. Operator



Descriere

<

strict mai mic

>

strict mai mare

=

egalitate

<> sau ><

diferit

<= sau =<

mai mic sau egal

>= sau =>

mai mare sau egal

Operatorii logici - leagă expresii logice.

Bazele informaticii 

 

79 

Secvenţe de cod VBA

Operator

Descriere

NOT

Rezultatul este adevărat dacă operandul este fals şi invers (Not X).

(nu) AND

Rezultatul este adevărat când cei doi operanzi sunt adevăraţi (X And Y).

(şi) OR

Rezultatul este adevărat dacă unul din operanzi este adevărat (X OR Y)

(sau) XOR (sau exclusiv) 

Rezultatul este adevărat dacă unul din operanzi este adevărat. Dacă ambii operanzi sunt, sau adevăraţi, sau falşi, rezultatul este fals.

Operatorul de concatenare a şirurilor: &

Ordinea de evaluare a expresiilor Dacă o relaţie sau o expresie cuprinde simultan operatori aritmetici, relaţionali şi logici ordinea de evaluare este : Operator

Prioritate

Operatorii aritmetici sau &

0 (maximă)

Operatorii relaţionali

1

Operatorii logici

2

Pentru expresiile aritmetice: Operator Operatorul unar (semn +, -)

Bazele informaticii 

Prioritate 0

Ridicarea la putere

1

Înmulţirea şi împărţirea

2

Adunarea şi scăderea

3

 

80 

Secvenţe de cod VBA

Parantezele pot modifica ordinea de efectuare a operaţiilor. ↓ Exemplu____________________________________________________________________________________ (3 + 2) * (4 + 1)

25

102 / 4

25.5

102 \ 4

25

102 Mod 4

2

____________________________________________________________________________________Exemplu ↑

 Constante şi variabile Ca toate limbajele de programare, Basic permite utilizarea memoriei calculatorului pentru stocarea datelor utilizate de programele ce se execută. Conţinutul acestor zone de stocare este asociat unor identificatori, cuvinte cărora li se asociază o valoare definită prin unul din tipurile de date menţionate.

  Identificatorii de variabile pot conţine litere, cifre şi caracterul de subliniere (underscore), nu pot să înceapă cu cifre, nu pot conţine spaţii ori alte caractere speciale.

 Este interzisă folosirea unor nume care sunt cuvinte cheie în Basic (de exemplu, nu se poate defini o variabilă numită Sub, dar se poate utiliza identificatorul Sub16)  Constante O constantă este un identificator a cărui valoare asociată nu se modifică pe parcursul unui program. Constantele se pot declara (explicit) cu instrucţiunea:

Const As ] = <expresie> 

Bazele informaticii 

 

81 

Secvenţe de cod VBA

↓ Exemplu____________________________________________________________________________________ Const PI As Double = 3.1416, Raza As Integer = 25 Const LungimeCerc = 2 * PI * Raza  ___________________________________________________________________________________Exemplu ↑



Constantele de tip String se scriu între ghilimele.

↓ Exemplu____________________________________________________________________________________ "Parvulescu Andrei"

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



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

ora se pot scrie în funcţie de setările definite în calculator. ↓ Exemplu____________________________________________________________________________________ #1/17/2007# #1:12:00 PM# #1/17/2007 1:12:00 PM#  ____________________________________________________________________________________Exemplu ↑  Variabile Numai o parte a datelor dintr-o aplicaţie sunt constante. O variabilă este un identificator al unei porţiuni din memoria calculatorului, a cărui conţinut poate fi schimbat prin program. Fiecare variabilă este de un anumit tip care impune lungimea zonei de memorie ocupată de aceasta. Pentru declararea explicită a variabilelor se utilizează instrucţiunea Dim. Aceasta este plasată la începutul programului, indicând că, undeva pe parcurs, vor fi necesare variabilele declarate. Formatul instrucţiunii de declarare este: Bazele informaticii 

 

82 

Secvenţe de cod VBA

Dim As



Instrucţiunea Dim se poate plasa oriunde într-o procedură, dar se

recomandă scrierea sa la începutul acesteia. Nu se pot defini două variabile cu acelaşi nume în aceeaşi procedură. ↓ Exemplu____________________________________________________________________________________ Dim Raza As Single, LungimeCerc As Single Dim Contor As Integer ____________________________________________________________________________________Exemplu ↑

 Instrucţiunea de atribuire Prin instrucţiunea de atribuire, unei variabile i se asociază valori. Formatul ei este: = <expresie> <expresie> poate fi o constantă, o expresie matematică sau o altă variabilă.

↓ Exemplu____________________________________________________________________________________ Dim Pretul As Single, Valoarea As Single Dim Cantitatea As Integer '... Pretul = 34.3 Cantitatea = 10 Valoarea = Pretul * Cantitatea  _____________________________________________________________________________________Exemplu ↑ Bazele informaticii 

 

83 

Secvenţe de cod VBA

 Declaraţiile constantelor şi a variabilelor pot fi explicite sau implicite,

iar Basic suportă ambele tipuri de declaraţii. Declararea implicită are loc

o dată cu prima instrucţiune de atribuire, VBA atribuind automat tipul cel mai adecvat. ↓ Exemplu____________________________________________________________________________________ 'prin instrucţiunea de atribuire: Raza = 25 'raza este considerată de tip Integer PI = 3.14 'PI este considerată de tip Single LungimeCerc = 2 * PI * Raza 'LungimeCerc va fi de tip Single 'dar prin instrucţiunea de atribuire: Raza = 25& 'raza este considerată de tip Long  _____________________________________________________________________________________Exemplu ↑

 Liste (arrays) de variabile Termenul englezesc array are în terminologia românească doi corespondenţi: listă sau vector, pentru tablourile cu o singură dimensiune, matrice pentru tablourile cu 2 dimensiuni. Termenul tablou, care corespunde direct celui array, este mai utilizat când sunt definite mai multe dimensiuni.



O

listă reuneşte mai multe variabile care au acelaşi nume, fiind

identificate în cadrul listei printr-un indice. Limita minimă implicită a

indicelui este zero !

↓ Exemplu____________________________________________________________________________________ '... '...

Dim Salariu(25) As Single 'salariul a 25 persoane Dim Masiv3D(5, 6, 7) As Integer 'Tablou cu 3 dimensiuni Salariu(0) = 1546.23 'Salariul primei persoane Salariu(1) = 1265.7 'Salariul celei de a doua persoane

'... Masiv3D(2, 5, 6) = 11  _____________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 

84 

Secvenţe de cod VBA

Liste dinamice Prin instrucţiunea Dim se declară o listă cu număr finit de elemente. Există instrucţiunea ReDim care permite crearea de liste dinamice. ReDim urmează unei instrucţiuni Dim la care nu se precizează nici o limită. Nu se poate utiliza ReDim pentru a redimensiona o listă care s-a declarat deja cu un număr finit de elemente. ReDim poate include şi clauza Preserve pentru a se conserva vechile valori ale listei. ↓ Exemplu____________________________________________________________________________________ Dim Salariu() As Single '... '... '...

'...

'listă dinamică

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

'se adaugă elemente suplimentatre 'dar ATENŢIE! 'se pierd valorile 'Salariu(0) şi Salariu(9)

ReDim Preserve Salariu(30) 'cu clauza Preserve 'nu se pierd valori 

_____________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 

85 

Secvenţe de cod VBA

1. Să se editeze o secvenţă de instrucţiuni pentru afişarea următoarelor valori: nume (student), prenume, vârsta, anul (de studii), taxă (plătitor de taxă), utilizând tipurile de date adecvate.

 (Word)

_______________________________________________________________ Date personale

Andrei Vârsta 21 Taxa True

_______________________________________________________________ Controale CommandButton

TextBox

Proprietăţi (Name): Datele  Caption: Date personale  (Name): Personale 

Procedura eveniment (Click): Private Sub Datele_Click() nume = "Andrei" varsta = 21 taxa = True Personale = nume & " Vârsta " & varsta End Sub

& " Taxa " & taxa

2. Să se scrie o secvenţă de program în care să se declare o listă de salarii (ale unor salariaţi), pentru care se va calcula un salariu mediu:

 (Word)

_______________________________________________________________ Salariul mediu

1541.4

_______________________________________________________________

Bazele informaticii 

 

86 

Secvenţe de cod VBA

Controale CommandButton

TextBox

Proprietăţi (Name): Salarii  Caption: Salariul mediu  (Name): Media 

Procedura eveniment (Click): Private Sub Salarii_Click() Dim Sal(25) As Single Sal(0) = 1543.1 Sal(1) = 1447.76 Sal(2) = 1633.34 Media = (Sal(0) + Sal(1) + Sal(2)) / 3 End Sub

3. Pentru calculul valorii de viitor a unei investiţii (MyFv) se utilizează formula:

MyFV  Pmt *

(1  Rate) Nper  1 Rate

Unde: Pmt – reprezintă plăţile, Rate – este rata dobânzii, Nper – numărul de perioade. Să se scrie un program pentru calculul depunerilor băneşti cu dobândă.

 (Word) _______________________________________________________________ Sold

2327,59698849949

_______________________________________________________________ Controale CommandButton

TextBox

Bazele informaticii 

Proprietăţi (Name): Sold  Caption: Sold  (Name): Valoare 

 

87 

Secvenţe de cod VBA

Procedura eveniment (Click): Private Sub Plata = Dobanda Numar = Valoare End Sub

Bazele informaticii 

Sold_Click() 100 'Suma depusă lunar = 0.06 'Dobânda este de 6% 15 'Se fac 15 depuneri = Plata * ((1 + Dobanda) ^ Numar - 1) / Dobanda

 

88 

Funcţii VBA predefinite

Unitatea de învăţare Nr. 10 Funcţii VBA predefinite Cuprins Obiectivele Unităţii de învăţare Nr. 10 10.1. Funcţia Format 10.2. Funcţii matematice 10.3. Funcţii financiare 10.4. Funcţii pe şiruri de caractere 10.5. Funcţii pentru dată calendaristică şi timp 10.6. Funcţii pentru conversii 10.7. Funcţii pentru testarea tipului de date Lucrare de verificare Unitate de învăţare Nr. 10

Bazele informaticii 

Pagina 90 90 91 91 93 93 94 94 95

 

89 

Funcţii VBA predefinite

 

Basic oferă utilizatorului mai multe funcţii pentru a realiza diferite operaţiuni pentru care, altfel, ar trebui scrise secvenţe de cod. Funcţiile pot apare ca operanzi în relaţiile de calcul şi pot avea 0, 1 sau mai multe argumente (constante sau expresii de calcul) iar cu ajutorul lor se execută calcule sau prelucrări şi se furnizează un rezultat.  Funcţia Format  

Se utilizează, în special, pentru a specifica modul de afişare a numerelor: Format ( <expresie>, <strFormat>)  <expresie> poate fi o variabilă, o constantă sau o expresie formată din acestea. <strFormat> este una dintre valorile predefinite prezentate în tabelul următor sau formatul de afişare definit de utilizator sub forma unui şir de caractere. Fiecare caracter # indică o cifră, iar 0 precizează dacă apar în completare zerouri, la început sau la sfârşit. <strFormat> 

Exemple 

Format(8.6, "#.#")  8,6  Format(8.6, "#.00")  8,60  Formatarea valorilor numerice  Format(8.76, "#.00")  8,76  Format(8.76, "#.0")  8,8  Format(0.1, "Percent")  10,00 %  Format procentual  Format(0.1, "# %")  10 %  Separarea grupurilor de 3 cifre  Format(10000,"###,### lei")  10.000 lei  Format monetar  Format(10, "Currency")  10,00 lei  Afişare cu două zecimale Format(10.236, "Fixed") 10,24  Format ştiinţific  Format(1233.07, "Scientific")  1,23E+03  True/Yes, False/No dacă <expresie> este #0  Format(0, "True/False")  False  sau 0  Format(12.1, "Yes/No")  Yes  Format("SALUT", "<")  salut  Formatarea string‐urilor  Format("salut", ">"  SALUT  Format(Date, "Long Date")  27 martie 2007  Formatarea datelor  Format(Date, "dddd, mmm d yyyy")  Marţi, mar 27 2007  calendaristice    … Date este o funcţie VBA care furnizează data curentă 

Bazele informaticii 

 

90 

Funcţii VBA predefinite

 Funcţii matematice Funcţiile matematice şi trigonometrice au ca argumente şi ca rezultate valori numerice. Funcţia  Int 

Descriere  Numărul întreg mai mic sau egal  

Fix 

Partea întreagă 

Abs  Sgn 

Valoarea absolută  Semnul unei expresii 

Rnd 

Exp  Log  Sqr  Atn  Sin  Cos  Tan 

Exemple  Int(‐8.4)  Int(8.4)  Fix(‐8.4)  Fix(8.4)  Abs(‐7.2)  Sgn(‐2/3) 

‐9  8  ‐8  8  7,2  ‐1 

Numere aleatoare subunitare 

Int((100 * Rnd) + 1)  numere între 1 şi 100 

83 ? 

e la puterea x  Logaritmul natural (baza e)  În baza 10 : log(x)/log(10)  Radical indice 2  Arctangentă  Sinus  Cosinus  Tangentă 

e = Exp(1)  Log(e)  Log(1000)/Log(10)  Sqr(9)  Pi = 4*Atn(1)  Sin(Pi/2)  Cos(Pi)  Tan(Pi/4) 

2,7182…  1  3  3  3,1415…  1  ‐1  1 

 Funcţii financiare Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de exemplu determinarea plăţii pentru un împrumut, valoarea viitoare sau valoarea netă actualizată a unei investiţii şi valorile obligaţiunilor sau cupoanelor. Argumentele comune pentru funcţiile financiare includ:  Valoarea viitoare (fv) – valoarea investiţiei sau împrumutului după ce s-au efectuat toate plăţile.  Numărul de perioade (nper) – numărul total de plăţi sau perioade ale unei investiţii.  Valoarea actualizată (pv) – valoarea unei investiţii sau a unui împrumut la începutul perioadei de investiţie. De exemplu, valoarea actualizată a unui împrumut este capitalul de bază care este împrumutat.  Rata (rate) – rata dobânzii sau rata de actualizare pentru un împrumut sau o investiţie.  Tip (type) – intervalul la care sunt efectuate plăţile în timpul perioadei de plată, ca de exemplu la începutul unei luni sau la sfârşitul acesteia ( 0 sau 1, implicit 0). Bazele informaticii 

 

91 

Funcţii VBA predefinite



Unele funcţii financiare se folosesc pentru anuităţi. O anuitate

constă dintr-o serie de plăţi constante efectuate pe o perioadă continuă (de exemplu un împrumut pentru un autoturism, sau un împrumut ipotecar). În funcţiile de anuităţi, sumele plătite, cum ar fi depozitele pentru economii, sunt reprezentate de numere negative; sumele primite, cum ar fi un cec de dividente, sunt reprezentate prin numere pozitive. Se recomandă consecvenţă în legătură cu unităţile utilizate pentru specificarea argumentelor rate şi nper (de exemplu, pentru plăţi lunare la un împrumut pe un număr de ani, rata dobânzii va fi împărţită întotdeauna cu 12, iar nper va fi înmulţit cu 12 şi cu numărul de ani). Cele mai importante funcţii financiare sunt incluse în tabelul următor: Funcţia  FV(rate, nper, pmt, pv, type) 

Descriere  Calculează valoarea viitoare a unei investiţii bazate  pe plăţi periodice şi constante şi o rată a dobânzii  constantă.  PV(rate, nper, pmt, fv, type)  Întoarce valoarea actualizată a unei investiţii.  Valoarea actualizată este suma totală pe care o  reprezintă în prezent o serie de plăţi viitoare. De  exemplu, pentru împrumut, suma împrumutată  este valoarea actualizată pentru creditor.  NPer(rate, pmt, pv, fv, type)  Furnizează numărul de perioade pentru o investiţie  bazată pe plăţi periodice constante şi o rată  constantă a dobânzii.  Pmt(rate, nper, pv, fv, type)  Calculează plata pentru un împrumut bazat pe plăţi  constante şi o rată constantă a dobânzii.  Ipmt(rate, per, nper, pv, fv, type)  Determină plata dobânzii pe o perioadă dată,  pentru o investiţie bazată pe plăţi periodice  constante şi o rată constantă a dobânzii.  Argumentele marcate bold sunt obligatorii, celelalte sunt opţionale. 

Bazele informaticii 

 

92 

Funcţii VBA predefinite

 Funcţii pe şiruri de caractere Aceste funcţii realizează prelucrări simbolice asupra unor şiruri de caractere. Funcţia  Asc  Len  Ucase  Lcase  LTrim  RTrim  Trim  Mid  Space  Replace  Left  Right 

Descriere  Codul unui caracter  Numărul de caractere din şir  Litere mari  Litere mici  Elimina spaţiile din stânga  Elimina spaţiile din dreapta  Elimina spaţiile de la capete  Extrage un subşir  Generează spaţii  Înlocuieşte un şir cu alt şir  Extrage un subşir stânga  Extrage un subşir dreapta 

Exemple  Asc("B")  Len("Visual Basic")  UCase("abc")  LCase("ABC") LTrim("   def")  RTrim("def   ")  Trim("  def   ")  Mid("abcdef", 3, 2)  "a" + Space(5) + "b"  Replace("As","s","ce")  Left("abcef", 3)  Right("abcef", 3) 

66  12  "ABC"  "abc"  "def"  "def"  "def"  "cd"  "a     b"  "Ace"  "abc"  "cef" 

 Funcţii pentru dată calendaristică şi timp Aceste funcţii sunt utilizate frecvent în aplicaţii: de la afişarea datei şi/sau orei curente, la transformarea din ani în zile sau din ore în minute. Funcţia  Descriere  Exemple  Now  Data si ora curentă  Now  17.03.2007 17:01:08  Date  Data curentă  Date 17.03.2007 Time  Ora curentă  Time  17:01:08  Day  Ziua  Day(Date)  17  Month  Luna  Month(Date)  3  Year  Anul  Year(Date)  2007  DateSerial  Data specificată   DateSerial(2007,2,17)  17.02.2007  TimeSerial  Ora specificată  TimeSerial(18, 5, 27)  18:05:27  *** DateAdd   Adună la o dată  x=DateAdd("d", 10, Date)  04.07.2007  *** DateDiff   Diferenţa dintre date  DateDiff("d", Date, x)  10  DatePart***  Un interval de timp  DatePart("m", Date)  3  *** Primul argument reprezintă intervalul de timp (d – ziua, m – luna, q – trimestrul,  y – ziua din an, w –  ziua din săptămână, ww ‐ săptămâna, yyyy – anul) 

Bazele informaticii 

 

93 

Funcţii VBA predefinite

 Funcţii pentru conversii   Se utilizează pentru a converti argumentul într-o dată de tipul specificat de funcţia utilizată. Funcţia  Exemple  Chr  Chr(65)  "A"  Str  Str(‐14.34)  "‐14.34"  Val  Val(" 1615 198Constanta")  1615198  CBool  CBool(4 > 5)  False  CByte  CByte(12 * 13)  156  CInt  CInt(1725.6 ‐ 1700)  26  CSng  CSng(17 / 18)  0,9444444  CDbl  CDbl(1 / 2.0E+99)  5E‐100  CDate  CDate(#3/17/2007#)  17.03.2007 

 Funcţii pentru testarea tipului de date Funcţiile pentru testarea tipului de date sunt denumite şi funcţii pentru inspectarea datelor, stabilind dacă o expresie, sau o variabilă, este sau nu este de un anume tip. Funcţia  IsDate  IsNumeric  VarType   

Bazele informaticii 

Descriere  Argumentul este o  expresie  Argumentul este o  variabilă  0 ‐ Empty  1 ‐ Null  2 ‐ Integer  3 ‐ Long  4 ‐ Single  5 ‐ Double  6 ‐ Currency  7 ‐ Date  8 ‐ String 

 

Exemple  IsDate(#3/17/2007#) IsNumeric(12.3)   

True  True   

VarType("Basic") 



94 

Funcţii VBA predefinite

1. Să se calculeze valoarea funcţiei f(x) pentru diferite valori ale argumentului x≥0 :  

f ( x)  x 2  x  1  e x

 (Word) _______________________________________________________________ x= 7

Valoarea lui f: 1104.18299286373

_______________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): (Name): Enabled:

x  f  False 

Procedura eveniment (Change): Private Sub x_Change() If IsNumeric(x.Text) And Val(x.Text)>=0 Then E = Exp(1) f = Sqr(x ^ 2 + x + 1) + E ^ x End If End Sub  

2. Scrieţi o secvenţă program prin care să determinaţi a câta zi de naştere sărbătoriţi astăzi.

(Word) _______________________________________________________________ Data naşterii =

3/20/1990

Au trecut:

7214 zile

_______________________________________________________________

Bazele informaticii 

 

95 

Funcţii VBA predefinite

Controale TextBox TextBox

Proprietăţi (Name): DataNasterii  (Name): Zile  Enabled : False 

Procedura eveniment (Change): Private Sub DataNasterii_Change() If IsDate(DataNasterii) Then Zile = DateDiff("d", DataNasterii, Date) End If End Sub  

3. Să se editeze o interfaţă grafică pentru efectuarea unor calcule financiare (funcţiile de calcul FV, PV, Nper, Pmt).

(Word)

_______________________________________________________________

10

%

13 -100 FV

PV

Valoarea calculată:

NPer

1.367,03 lei

Pmt

_______________________________________________________________ Controale TextBox TextBox TextBox TextBox

OptionButton OptionButton OptionButton OptionButton

Proprietăţi (Name): (Name): (Name): (Name): Enabled : Caption : Caption : Caption : Caption :

v1  v2  v3  fc  False  FV  PV  NPer  Pmt 

Procedurile eveniment (Click): Private Sub OptionButton1_Click() ' Definirea formatului monetar. Fmt = "###,##0.00 lei" functia = FV(v1 / 100 / 12, v2, v3) Bazele informaticii 

 

96 

Funcţii VBA predefinite

fc = Format(functia, Fmt) End Sub Private Sub OptionButton2_Click() ' Definirea formatului monetar. Fmt = "###,##0.00 lei" functia = PV(v1 / 100 / 12, v2 * 12, v3) fc = Format(functia, Fmt) End Sub Private Sub OptionButton3_Click() ' Definirea formatului. Fmt = "###,##0 luni" functia = NPer(v1 / 100 / 12, v2, v3) fc = Format(functia, Fmt) End Sub Private Sub OptionButton4_Click() ' Definirea formatului monetar. Fmt = "###,##0.00 lei" functia = Pmt(v1 / 100 / 12, v2 * 12, v3) fc = Format(functia, Fmt) End Sub Verificare:

FV

Pentru 13 depuneri lunare, a 100 unităţi lei, cu dobândă anuală

10%, valoarea soldului atins:

PV Valoarea depunerii bancare pentru returnarea lunară a 150 lei (dobânda anuală 9,5%, 12 ani):

Bazele informaticii 

 

97 

Funcţii VBA predefinite

NPer Numărul de luni necesare atingerii unui sold de 2000 lei (depunere lunară 100, dobânda anuală 9,5%):

Pmt Pentru un împrumut bancar de 13000 unităţi bancare, pe 12 ani, dobânda anuală 9,5%, plăţile lunare sunt:

4. Returnarea unui împrumut bancar se poate realiza în plăţi constante (care se determină cu funcţia Pmt) sau în plăţi variabile (valoarea împrumutului/ numărul de perioade + dobânda calculată prin Ipmt). Suma plăţilor

constante este egală cu suma plăţilor variabile. Să se verifice această situaţie pentru un împrumut de 4000 lei returnabil în 4 luni cu o dobândă lunară de 2%.

(Word) _______________________________________________________________ -4201.9800427406

/

-4201.9800427406

Verificare

_______________________________________________________________

Bazele informaticii 

 

98 

Funcţii VBA predefinite

Controale TextBox TextBox CommandButton

Proprietăţi (Name): (Name): (Name): Caption :

PlataCt  PlataVar  Verificare  Verificare 

Procedura eveniment (Click): Private Sub Verificare_Click() 'dobanzile pe cele 4 luni Ipmt1 = IPmt(2 / 100, 1, 4, 4000) Ipmt2 = IPmt(2 / 100, 2, 4, 4000) Ipmt3 = IPmt(2 / 100, 3, 4, 4000) Ipmt4 = IPmt(2 / 100, 4, 4, 4000) 'Suma platilor constante PlataCt = 4 * Pmt(2 / 100, 4, 4000) 'Suma platilor variabile PlataVar = (-4000 + Ipmt1 + Ipmt2 + Ipmt3 + Ipmt4) End Sub

Bazele informaticii 

 

99 

Structuri de control VBA

Unitatea de învăţare Nr. 11 Structuri de control VBA Cuprins Obiectivele Unităţii de învăţare Nr. 11 11.1. Structurile de control 11.1.1. Instrucţiunea de selecţie simplă 11.1.2. Instrucţiunea de selecţie multiplă 11.1.3. Structurile repetitive 11.1.3.1. Ciclul Do While (cu test iniţial) 11.1.3.2. Ciclul Do Until (cu test iniţial) 11.1.3.3. Ciclurile Do While şi Do Until cu test final 11.1.3.4. Ciclul For … Next, cu număr finit de paşi Lucrare de verificare Unitate de învăţare Nr. 11

Pagina 101 102 102 103 107 107 108 110 110 111

Bazele informaticii 

100 

 

Structuri de control VBA

 

Procesul de rezolvare a problemelor cu ajutorul calculatorului constă în două activităţi: dezvoltarea algoritmului şi reprezentarea acestuia ca program. Procesul de elaborare al algoritmului reprezintă etapa cea mai importantă, obligatorie şi de cele mai multe ori cea mai dificilă. Descoperirea algoritmului înseamnă găsirea unei metode de rezolvare a problemei, claritatea şi calitatea acestuia impunând fiabilitatea şi calitatea programului. În contextul dezvoltării programelor, etapele de rezolvare ale problemelor corespund cu cele definite de matematicianul G. Polya, în 1945:  Înţelegerea problemei este etapa cea mai importantă şi constă în: • definirea datelor de intrare (tip, proprietăţi, domeniul valorilor), • definirea rezultatelor (ieşirile), • stabilirea relaţiilor dintre date şi rezultate.  Conceperea modului de rezolvare a problemei şi descrierea acestuia printr-un algoritm.  Reprezentarea algoritmului ca program.  Evaluarea programului din punct de vedere al corectitudinii şi ca potenţial instrument pentru rezolvarea altor probleme. În practica reprezentării algoritmilor se utilizează diverse forme cum ar fi schemele logice, limbajul algoritmic (pseudocod), limbajele de programare, însă, indiferent de modul de descriere al acestora, se stabileşte o mulţime bine definită de blocuri elementare la care se au în vedere două elemente: sintaxa şi semantica (sintaxa se referă la reprezentarea simbolică a acestora, în timp ce semantica la semnificaţia lor). Ansamblul de instrucţiuni ale limbajului de programare, alese pentru reprezentarea algoritmilor, trebuie să fie adaptat la specificul de calcul electronic. De obicei aceste instrucţiuni sunt definite la un nivel mai înalt decât cel oferit de limbajul în cod maşină, astfel încât abordarea construcţiei şi analizei algoritmilor se face prin prisma unor concepte moderne, cum ar fi principiile programării structurate. Programarea structurată (introdusă în 1972 de E.W. Dijkstra, fundamentarea matematică fiind făcută de Böhm şi Jacopini într-un articol publicat în 1966) este o metodă de codificare a algoritmilor de calcul, prin definirea unui set de instrucţiuni grupate în trei structuri fundamentale: secvenţa, selecţia şi ciclul. Bazele informaticii 

 

101 

Structuri de control VBA

  

Secvenţa, tradusă în instrucţiuni simple (instrucţiunea de atribuire, instrucţiunea de  apel subprogram, instrucţiuni de intrare/ieşire, subprograme).  Instrucţiune 1

Instrucţiune 2

Instrucţiune n

  

Selecţia, (structura alternativă) ‐ If … Then … End If. 

 

Instrucţiune 1

True

 

Condiţie 

 

False

Instrucţiune 2

  

Ciclul (iteraţia) cu test iniţial sau cu test final (“atâta timp cât”,  ”până când”) ‐  Do  While, Do Until.  Instrucţiuni

 

Condiţie

    Condiţie

Instrucţiuni

 Structurile de control  Structurile selective  Instrucţiunea de selecţie simplă

If Then [Else ]

End If Instrucţiunea de selecţie simplă condiţionează execuţia unor seturi de instrucţiuni prin evaluarea expresiei logice reprezentată în . Dacă

Bazele informaticii 

 

102 

Structuri de control VBA

expresia logică este True se va executa grupul . În cazul valorii False a condiţiei apar două cazuri:  dacă există clauza Else se va executa grupul .  în absenţa clauzei Else nu se execută nici o instrucţiune, comanda terminându-se imediat. ↓

Exemplu (Word) ____________________________________________________________________

Un an este bisect dacă este divizibil cu 4 și (And) nu este divizibil cu 100 sau (Or) este divizibil cu 400.   _______________________________________________________________ Anul: 1900

Anul nu este bisect

_______________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): An  (Name): R  Enabled: False  Următoarea secvenţă verifică dacă un an este bisect sau nu:  Private Sub An_Change() If IsNumeric(An) Then If An Mod 4 = 0 And An Mod 100 <> 0 Or An Mod 400 = 0 Then R = "Anul este bisect" Else R = "Anul nu este bisect" End If End If End Sub

____________________________________________________________________________________Exemplu ↑

 Instrucţiunea de selecţie multiplă Pentru a codifica mai multe alternative, este posibilă înlănţuirea mai multor instrucţiuni If, dar cu cât numărul acestora este mai mare, cu atât urmărirea lor devine mai dificilă. Alternativă pentru astfel de situaţii este instrucţiunea Select Case.

Bazele informaticii 

 

103 

Structuri de control VBA

Select Case <expresie> Case <listă de valori 1> | Is

Case < listă de valori 2>| Is

….

Case < listă de valori n>| Is

[Case Else ]

End Select

 Selecţie după listă de valori. În funcţie de valoarea efectivă a expresiei, care poate fi numerică sau caractere, se va executa un singur bloc de instrucţiuni. Dacă expresia are o valoare ce nu se regăseşte între valorile prevăzute, se va executa - dacă s-a specificat - blocul de instrucţiuni de după Case Else (altfel, nu se execută nimic). În lista de valori, elementele listei sunt separate prin virgulă. Se poate folosi şi clauza To (pentru precizarea unui interval de valori). Exemplu 1 (Word) _________________________________________________________________________ ___________________________________________________________ Selecţie: 3

Culoare:

Nuanta de verde

_______________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): (Name): Enabled:

Selectie  Cul  False 

Procedura eveniment: 

Private Sub Selectie_Change() Select Case selectie Case 1 Culoare = "Rosu" Case 2, 3, 4 Culoare = "Nuanta de verde" Case 5 Culoare = "Albastru" Bazele informaticii 

 

104 

Structuri de control VBA

Case 6 To 9 Culoare = "Nuanta de gri" Case Else Culoare = "Nici o Culoare" End Select Cul = Culoare End Sub ____________________________________________________________________________________Exemplu ↑ ↓ Exemplu 2 (Word)________________________________________________________________________ Notând cu a, b, c trei valori pozitive să se stabilească dacă segmentele de

dreaptă corespunzătoare acestora pot constituii un triunghi - trei segmente de dreaptă pot forma un triunghi dacă fiecare este strict mai mic ca suma celorlalte două. _______________________________________________________________

1 3 c= b= Nu formeaza un triunghi răspuns:

a= 2

_______________________________________________________________ Controale TextBox TextBox TextBox TextBox

Proprietăţi (Name): (Name): (Name): (Name): Enabled:

S1  S2  S3  Raspuns  False 

Procedurile eveniment:

Private Sub S1_Change() a = Val(S1) b = Val(S2) c = Val(S3) If a < b + c And b < a + c And c < a + b Then Select Case True Case a = b And b = c Raspuns = "Echilateral" Case a = b Or a = c Or b = c Raspuns = "Isoscel" Case Else

Bazele informaticii 

 

105 

Structuri de control VBA

Raspuns = "Oarecare" End Select Else Raspuns = "Nu formeaza un triunghi" End If End Sub Private Sub S2_Change() S1_Change End Sub Private Sub S3_Change() S1_Change End Sub  ____________________________________________________________________________________Exemplu ↑

 Selecţie după condiţie. Pentru a extinde posibilităţile de utilizare a structurii alternative, se foloseşte un format care permite compararea expresiei cu o valoare, folosind alt operator decât cel de egalitate (clauza Is). ↓

Exemplu (Word) ____________________________________________________________________

Pentru citirea a două note de la tastatură şi afişarea unor calificative se poate utiliza următoarea interfaţă:

_______________________________________________________________ Nota1:

8

Nota2:

9

Media:

8.5

Foarte bine Calificativ:

_______________________________________________________________ Controale TextBox TextBox TextBox

TextBox

Bazele informaticii 

Proprietăţi (Name): (Name): (Name): Enabled: (Name): Enabled:

 

Nota1  Nota2  Media  False  Calificativ  False 

106 

Structuri de control VBA

Procedurile eveniment:

Private Sub Nota1_Change() n1 = Val(Nota1) n2 = Val(Nota2) Media = (n1 + n2) / 2 Select Case Val(Media) Case Is < 5 Calificativ = "Nesatisfacator" Case Is <= 7 Calificativ = "Slab" Case Is <= 8 Calificativ = "Bine" Case Is < 10 Calificativ = "Foarte bine" Case 10 Calificativ = "Felicitari" Case Else Calificativ = "Eroare" End Select End Sub Private Sub Nota2_Change() Nota1_Change End Sub  ____________________________________________________________________________________Exemplu ↑  Structurile repetitive  Ciclul Do While cu test iniţial („execută cât timp…”)

Do While [Exit Do]

Loop Într-un ciclu Do While grupul de instrucţiuni care constituie corpul ciclului este executat atât timp cât este îndeplinită condiţia. Clauza Exit Do impune abandonarea execuţiei instrucţiunii (salt după Loop). Ciclul se poate executa de zero, unu sau mai multe ori.

Bazele informaticii 

 

107 

Structuri de control VBA

 Ciclul Do Until cu test iniţial („execută până când…”)

Do Until [Exit Do]

Loop Într-un ciclu Do Until grupul de instrucţiuni care constituie corpul ciclului este executat pâna când este îndeplinită condiţia. Clauza Exit Do impune abandonarea execuţiei instrucţiunii (salt după Loop). Ciclul se poate executa de zero, unu sau mai multe ori. ↓ Exemplu 1 (Word) ______________________________________________________________________ Pentru scrierea unui număr natural zecimal în baza de numeraţie 2, se poate folosi metoda împărţirilor succesive la 2, până la obţinerea primului cât egal cu zero. Exemplu:

6:2=3:2=1:2=0 6 2 0 _ 0 1 1 Rezultă că 6(10)= 110(2)  

__________________________________________________________ Număr în baza 10:

23

Număr în baza 2:

10111

_____________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): (Name): Enabled:

B10  B2  False 

Procedura eveniment: 

Private Sub B10_Change() Dim NumarZecimal As Integer Dim SirulResturilor(30) As Integer Dim NumarBinar As String NumarBinar = ""

Bazele informaticii 

 

108 

Structuri de control VBA

NumarZecimal = B10 câtul = NumarZecimal indice = 0 Do While câtul > 0 SirulResturilor(indice) = câtul Mod 2 câtul = câtul \ 2 indice = indice + 1 Loop Do Until indice = 0 indice = indice - 1 NumarBinar = NumarBinar & SirulResturilor(indice) Loop B2 =NumarBinar End Sub   indice reprezintă poziţia în şirul resturilor (rezultate prin împărţiri succesive la 2);  SirulResturilor conţine valorile cifrelor binare (dar în ordine inversă) şi este o variabilă de tip Array completată in ciclul Do

While;

 NumarBinar este şirul caracterelor binare, compus în ciclul Do

Until.

____________________________________________________________________________________Exemplu ↑ ↓

Exemplu 2 (Word) ________________________________________________________________

Să se calculeze, folosind ciclurile cu test iniţial, suma numerelor naturale pare, strict mai mici decât un număr natural n dat. _______________________________________________________________ Numărul natural:

6 Suma:

5

_______________________________________________________________ Controale TextBox TextBox

Bazele informaticii 

Proprietăţi (Name): (Name): Enabled:

 

Numar  Sum  False 

109 

Structuri de control VBA

Procedura eveniment (în două variante):

Private Sub Numar_Change() 'nr trebuie sa fie pozitiv nr = Val(Numar) If nr > 0 Then s = 0: i = 0 Do While i < nr s = s + i i = i + 2 Loop Sum = s End If End Sub

Private Sub Numar_Change() 'nr trebuie sa fie pozitiv nr = Val(Numar) If nr > 0 Then s = 0: i = 0 Do Until i >= nr s = s + i i = i + 2 Loop Sum = s End If End Sub

______________________________________________________________________________Exemplu ↑  Ciclurile Do While şi Do Until cu test final Există variante ale instrucţiunilor Do While şi Do Until care permit execuţia condiţionată a secvenţei de instrucţiuni, cel puţin o dată:

Do [Exit Do] []

Loop While | Until    Ciclul For … Next, cu număr finit de paşi

For = To [Step ] [Exit For] Next [

În ciclul For … Next grupul de instrucţiuni, constituind corpul acestuia, se execută după valorile variabilei contor , într-un interval specificat prin şi . Variabila contor se incrementează implicit cu 1, dacă nu este precizat pasul (Step) sau cu valoarea dacă apare

Bazele informaticii 

 

110 

Structuri de control VBA

clauza Step. Variabila contor primeşte o valoare iniţială (). După fiecare ciclu, contorul este incrementat şi comparat cu valoarea finală (). Dacă nu s-a ajuns la valoarea finală, execuţia ciclului de instrucţiuni se reia, în caz contrar trecându-se la linia de după Next. Exit For are acelaşi rol ca Exit Do de la comenzile Do … Loop.

Exemplu (Word) _____________________________________________________________________ ______________________________________________________________ Suma primelor

100

numere naturale este:

5050

______________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): (Name): Enabled:

n  Suma  False 

Procedura eveniment:

Private Sub n_Change() Suma = 0 For i = 1 To n suma = suma + i Next End Sub ____________________________________________________________________________________Exemplu ↑ 

Să se editeze şi să se ruleze secvenţele de instrucţiuni Basic din exemplele marcate cu simbolul

Bazele informaticii 

.  

111 

Module VBA

Unitatea de învăţare Nr. 12 Module VBA Cuprins Obiectivele Unităţii de învăţare Nr. 12 12.1. Variabile locale (private) 12.2. Variabile publice (globale) 12.3. Variabile private 12.4. Transmiterea argumentelor prin valoare şi prin referinţă 12.5. Funcţii recursive Lucrare de verificare Unitate de învăţare Nr. 12

Pagina 113 113 113 114 117 118 119

Bazele informaticii 

112 

 

Module VBA

 

Programarea modulară este un procedeu prin care mai multe instrucţiuni sunt grupate în proceduri (Sub şi Function) destinate realizării în mod repetat a unor acţiuni. Acestea pot fi definite în cadrul limbajului (proceduri standard) sau de către programator (proceduri utilizator). Programarea structurată combinată cu programarea modulară contribuie la creşterea eficienţei şi productivităţii în proiectarea de aplicaţii. Procedurile de dimensiuni mici, scrise pentru realizarea diverselor sarcini, în locul programelor vaste, monolitice, concretizează programarea structurată. Prin divizarea aplicaţiei în mai multe proceduri se reduce efortul, o dată cu numărul de erori în scrierea programelor. De asemenea, este simplificată întreţinerea aplicaţiei. În general, programatorii preferă să pună procedurile de utilitate generală în module. Se includ aici procedurile necesare în mai multe aplicaţii. (Module), din linia Pentru a adăuga un modul extern se acţionează butonul de butoane standard (prin meniu Insert, Module). Noul modul apare în structura proiectului iar în fereastra de cod se poate scrie codul necesar. Din punct de vedere al referirii variabilelor de lucru, din diferite zone ale programului, se deosebesc două tipuri de variabile: 



Variabile locale accesibile doar în procedura în care au fost definite. Ele sunt declarate prin Dim, Redim sau Static. Variabilele declarate cu Static îşi păstrează valorile pe tot timpul execuţiei programului, spre deosebire de cele declarate prin Dim sau Redim care sunt şterse din memorie la terminarea procedurii. Sub test() Static Dobanda As Single Dobanda = 3 / 100 '... End Sub Variabile publice (globale) accesibile din orice procedură – prin declaraţia Public. '... Public rataDobanzii As Single '...

Bazele informaticii 

 

113 

Module VBA



Variabile private limitate la un modul sau procedură – prin declaraţia Private. '... Private rataDobanzii As Single '...

 

Variabilele publice şi locale sunt declarate la început de modul.



Orice program poate conţine unul sau mai multe proceduri.



Singura deosebire dintre procedurile Sub şi Function este că cele de tip Function returnează o valoare care se atribuie unei variabile iar celelalte nu.



Din orice procedură pot fi apelate alte proceduri (apeluri în cascadă).



Orice procedură apelată este căutată mai întâi în cadrul secţiunii curente, apoi în modulele externe.



Execuţia unei proceduri depinde de parametrii externi transmişi acestuia şi se va opri la sfârşit (End Sub, End Function) sau la întâlnirea instrucţiunii de ieşire din procedură (Exit Sub, Exit

Function). 

După executarea unei proceduri se revine în programul apelant.



O procedură poate avea atributele Private sau Public.

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

Apelul procedurii şi transmiterea parametrului:

Bazele informaticii 

 

114 

Module VBA

() Se editează o procedură, inclusă într-un modul, pentru ordonarea unui şir de numere prin metoda interschimbării. Explicarea metodei interschimbării:  



Se consideră un şir de numere a1, a2, a3 … an-1, an. Se compară, pe rând câte două elemente ale şirului. Dacă valorile lor corespund criteriului de ordonare (crescător sau descrescător) atunci ele rămân pe aceeaşi poziţie, dacă nu, se interschimbă: a1  a2  a3  … an-1  an Comparările se reiau până când nu mai e necesară nici o interschimbare.

Sub Ordonare(n As Integer, a() As Single) Dim aux As Single Do While Not gata gata = True For i = 0 To n - 2 If a(i) > a(i + 1) Then aux = a(i) a(i) = a(i + 1) a(i + 1) = aux gata = False End If Next Loop End Sub Pentru definirea elementelor şirului, apelul procedurii de ordonare a elementelor lui şi afişarea şirului ordonat, se poate utiliza următoarea secvenţă: Sub test() Const n As Integer = 4 Dim a(n) As Single a(0) = 89.5 a(1) = -7.23 a(2) = 2.5 a(3) = 6 '

Bazele informaticii 

 

115 

Module VBA

Call Ordonare(n, a) 'Apelul procedurii ' For i = 0 To n - 1 SirOrdonat = SirOrdonat & a(i) & " Next MsgBox(SirOrdonat) End Sub

"

() O funcţie ValoareTva, pentru calculul valorii TVA, poate fi definită într-un modul extern: Function ValoareTva(val As Single) As Single ValoareTva = val * 0.19 End Function Apelul funcţiei şi transmiterea parametrului Valoare se poate realiza în acelaşi modul sau dintr-un modul extern: Sub test() Dim Valoare As Single Valoare = 12.75 ' v = ValoareTva(Valoare) 'apelul functiei MsgBox("Valoarea Tva:" & v) End Sub

() Pentru calculul sumei 1+1/2+ … +1/n se defineşte următoarea funcţie: Function Suma(n As Integer) Dim s As Single s = 0 For i = 1 To n s = s + 1 / i Next Suma = s End Function

Bazele informaticii 

 

116 

Module VBA

Apelul funcţiei şi transmiterea parametrului n: Sub test() Dim n As Integer n = 7 ' v = Suma(n) 'apelul functiei ' MsgBox(n & " elemente: " & v) End Sub __________________________________________________________________________________Exemple ↑ Transmiterea argumentelor prin valoare şi prin referinţă Există două variante de transmitere a argumentelor, stabilindu-se astfel dacă procedura, care le primeşte, le poate modifica şi transmite înapoi:  Dacă se transmit prin valoare (cuvânt cheie ByVal care de obicei se omite) - modalitatea implicită, procedura apelată poate modifica valorile, dar aceste modificări nu se vor transmite procedurii apelante. Transmiterea prin valoare protejează variabilele transmise, valorile lor neputând fi modificate în procedura apelantă (procedura apelată primeşte copii ale variabilelor din procedura apelantă). Se recomandă transmiterea datelor prin valoare, atunci când modificarea lor nu e necesară sau e riscantă.  Dacă se transmit prin referinţă (cuvânt cheie ByRef), procedura apelată poate modifica valorile variabilelor transmise, modificări care sunt apoi transmise procedurii apelante. Transmiterea prin referinţă (sau adresă) permite procedurii să actualizeze variabilele, modificările fiind percepute de variabile şi în procedura apelantă. După ce acesta redobândeşte controlul, variabilele transmise şi modificate vor rămâne cu noile valori. ↓ Exemplu____________________________________________________________________________________ Procedura Sub ValoareTva, pentru calculul valorii Tva, transmiterea parametrilor prin referinţă: Sub ValoareTva(ByRef valoare, ByRef Tva) Tva = Valoare * 0.19 End Sub

Bazele informaticii 

 

117 

Module VBA

Apelul procedurii şi transmiterea parametrilor Valoare şi Tva: Sub Test() Dim Valoare As Single, Tva As Single Valoare = 1300.60 ' Call ValoareTva(Valoare, Tva) 'apelul procedurii Sub ' MsgBox("Valoarea Tva:" & Tva) End Sub ____________________________________________________________________________________Exemplu ↑ Funcţii recursive O funcţie este recursivă dacă se apelează pe ea însăşi. ↓ Exemplu____________________________________________________________________________________ Pentru calculul funcţiei factorial, fact, este definită următoarea secvenţă de instrucţiuni: Function fact(n As Integer) As Integer If n = 0 Then fact = 1 Else fact = n * fact(n - 1) End If End Function Apelul funcţiei şi transmiterea parametrului n: Sub Test() Dim n As Integer, f As Integer n = 5 ' f = fact(n) 'apelul functiei ' MsgBox(n & " factorial este: " & f) End Sub

____________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 

118 

Module VBA

1. Editaţi propria funcţie de calcul a depunerilor cu dobândă cu relaţia:

MyFV  Pmt * Unde:

(1  Rate) Nper  1 Rate

Pmt – reprezintă plăţile, Rate – este rata dobânzii, Nper – numărul de perioade. Comparaţi rezultatul aplicării ei cu valorile obţinute prin funcţia Basic FV. _______________________________________________________________

Rata dobânzii: 0,1

Numărul de perioade: 2 210

Plata: 100

Calcul

-210

_______________________________________________________________ Controale TextBox TextBox TextBox TextBox TextBox CommandButton

Proprietăţi (Name): (Name): (Name): (Name): (Name): (Name): Caption :

Rate  Nper  Pmt  F1  F2  Calcul  Calcul 

 

Bazele informaticii 

 

119 

Module VBA

Procedurile:

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

Private Sub Calcul_Click() F1 = MyFV(Rate, NPer, Pmt) F2 = FV(Rate, NPer, Pmt) End Sub

k

2. Să se calculeze combinările de n luate câte k ( Cn ) utilizând relaţia de recurenţă:

Cnk  Cnk1  Cnk11 , cazuri particulare : Cn0  Cnn  1 şi Cn1  n _______________________________________________________________ Combinări de:

5

luate câte:

3

=

10

Calculează

_______________________________________________________________ Controale TextBox TextBox TextBox CommandButton

Proprietăţi (Name): (Name): (Name): (Name): Caption :

v1  v2  Combinari  Calculeaza  Calculează 

Procedurile:

Function comb(n, k) As Integer If k = 0 Or n = k Then Comb = 1 Exit Function End If If k = 1 Then Comb = n Exit Function End If comb = comb(n - 1, k) + comb(n - 1, k - 1) End Function

Bazele informaticii 

 

120 

Module VBA

Private Sub Calculeaza_Click() n = val(v1) k = val(v2) Combinari = comb(n, k) End Sub

3. Să se calculeze al n-lea termen al şirului Fibonacci definind o funcţie recursivă. Relaţia de calcul este: 1, n  0  Fib ( n )  1, n  1   Fib ( n  1)  Fib ( n  2), n  1

_______________________________________________________________ al

5

-lea termen este

8

_______________________________________________________________ Controale TextBox TextBox

Proprietăţi (Name): (Name):

Numa  Pozitia 

Procedurile:

Function Fib(n) As Integer If n = 0 Or n = 1 Then Fib = 1 Else Fib = Fib(n - 1) + Fib(n - 2) End If End Function Private Sub Numar_Change() n = val(Numar) Pozitia = Fib(n) End Sub 4. Să se calculeze cel mai mare divizor comun a două numere, conform relaţiei recursive a lui Euclid:

 x, dacă y  0 cmmdc( x, y )   cmmdc( y, x mod y ) dacă y  0 Bazele informaticii 

 

121 

Module VBA

unde mod este operatorul modulo. _______________________________________________________________ Cel mai mare divizor comun pentru: 9

şi

18

este

9

_______________________________________________________________ Controale TextBox TextBox TextBox

Proprietăţi (Name): (Name): (Name):

a  b  rezultat 

Procedurile:

Function cmmdc(x, y) As Integer If y = 0 Then cmmdc = x Else cmmdc = cmmdc(y, x Mod y) End If End Function Private Sub a_Change() x = val(a) y = val(b) rezultat = cmmdc(x, y) End Sub Private Sub b_Change() a_Change End Sub

Bazele informaticii 

 

122 

Formulare VBA

Unitatea de învăţare Nr. 13 şi 14 Formulare VBA Cuprins Obiectivele Unităţii de învăţare Nr. 13 şi 14 13.1. Formulare (form-uri) 13.2. Proprietăţi şi proceduri eveniment 13.3. Proprietatea Caption 13.4. Proprietatea StartUpPosition 13.5. Proprietatea Height şi Width 13.6. Proprietăţile ForeColor şi BackColor 13.7. Utilizarea controalelor 13.7.1. CommandButton 13.7.2. Label 13.7.3. TextBox 13.7.4. CheckBox 13.7.5. Frame 13.7.6. OptionButton 13.7.7. ListBox 13.7.8. ComboBox 13.7.9. Image 13.7.10. SpinButton 13.8. Modificarea proprietăţilor din cod Lucrare de verificare Unitate de învăţare Nr. 13 şi 14

Pagina 122 124 125 126 128 128 129 130 131 131 134 137 139 140 142 145 148 149 150 155

Bazele informaticii 

123 

 

Formulare VBA

 

În mediul Windows, o aplicaţie oferă o multitudine de alternative grupate în ferestre de dialog dintre cele mai diferite. Activităţile şi ordinea în care se desfăşoară ele sunt stabilite de utilizator - programul se află într-o stare de aşteptare, iar utilizatorul poate alege una din opţiunile oferite. Programul trebuie conceput astfel încât să răspundă la toate acţiunile utilizatorului. Orice acţiune - apăsarea unei taste, clic cu mouse-ul şi mişcarea lui, etc. - reprezintă un eveniment. Aplicaţiile care rulează sub sistemul de operare Windows sunt dirijate de evenimente iar rezolvarea sarcinilor de execuţie ale acestora impune conceptul de „programarea dirijată de evenimente”. Interfaţa cu utilizatorul, a unui program, permite utilizatorului să interacţioneze cu programul şi conţine orice control (cum ar fi butoane, casete de text) pe care utilizatorul îl manipulează pentru a furniza comenzi sau informaţii programului.

Formulare (form-uri) Limbajul Basic facilitează crearea interfeţelor cu utilizatorul intermediul unui set de controale, din caseta cu instrumente (Toolbox).

prin

Un proiect VBA grupează unul sau mai multe formulare şi module. În formulare (UserForm) se poziţionează controale OLE (obiecte de interfaţă) care permit introducerea sau extragerea datelor utilizatorului în mod interactiv. Controalelor din formular le sunt asociate proprietăţi şi metode (proceduri eveniment). Procedurile eveniment sunt secvenţe de instrucţiuni care pot fi modificate, ca de altfel şi proprietăţile controalelor incluse în formular. Modificările efectuate se reflectă în aspectul formularului şi în comportamentul acestuia în diferite situaţii.. În varianta Visual Basic şi a produselor similare, proiectul (programul) este un ansamblu de proceduri eveniment, cele mai multe având dimensiuni reduse şi fiecare tratând un eveniment individual. O astfel de procedură este ataşată unui control şi se execută numai când controlul respectiv interceptează evenimentul pentru care a fost scrisă. Altfel spus, un program va răspunde unui eveniment care se produce la execuţie numai dacă a fost scrisă o procedură pentru evenimentul respectiv; în caz contrar, evenimentul va fi ignorat. Fiecare control al unui formular (ca şi formularul însuşi) suportă mai Bazele informaticii 

 

124 

Formulare VBA

multe evenimente. De exemplu, un buton poate răspunde la evenimentul clic dacă pentru acest eveniment este scrisă o procedură. Atunci când aplicaţia se va lansa în execuţie, iar utilizatorul va efectua clic pe buton (se produce în acest fel evenimentul), va fi lansată automat în derulare procedura definită. Proprietăţi şi proceduri eveniment Un formular poate conţine mai multe controale, el însuşi fiind considerat un control. Fereastra Properties permite alegerea controlului şi a proprietăţii a cărei valoare se schimbă, ca de exemplu:  Proprietatea Caption este destinată stabilirii unui titlu (denumire) pentru formular sau control.  Proprietatea (Name) permite atribuirea unor nume controalelor. VBA stabileşte valori implicite proprietăţii (Name) cum ar fi:  UserForm1, UserForm2… pentru formulare (prin convenţie, numele formularelor utilizator vor fi prefixate de cuvântul frm, de exemplu: frmPrincipal, frmCalcul);  Label1, Label2… pentru etichete (prefix convenţional: lbl);  CommandButton1, CommandButton2… pentru butoane (prefix: btn);  TextBox1, TextBox2… pentru casete de text (prefix: txt). Aceste nume ale controalelor pot fi folosite aşa cum au fost definite de VBA însă utilizatorul are posibilitatea stabilirii unor denumiri proprii. Proprietăţile formularului sunt afişate, alfabetic (Alphabetic) sau pe categorii (tab-ul Categorized):  Aparenţă (Appearence) : culorile utilizate, efectele vizuale de umplere etc.  Comportare (Behaviour) : modul de continuare a acţiunilor la părăsirea ultimului control de pe formular (Cycle) sau accesul utilizatorului la obiect (Enabled).  Font (Font) : fontul implicit (poate fi modificat pentru fiecare control în parte).  Diverse (Misc) : numele formei, imaginea mouse-ului etc.  Imagine (Picture) : imagini utilizate.  Poziţie (Position) : poziţie şi dimensiuni. Procedurile eveniment sunt secvenţe de instrucţiuni asociate diferitelor controale la activarea/dezactivarea acestora. Afişarea ferestrei de cod este realizată prin executarea unui dublu clic pe controlul pentru care se doreşte scrierea instrucţiunilor program. Numele procedurii (Click - pentru CommandButton sau OptionButton, Change – pentru TextBox) este legat de numele controlului prin simbolul _ (underline) : Bazele informaticii 

 

125 

Formulare VBA

Private Sub control_procedura() End Sub În instrucţiunile Basic, referirea la proprietatea unui control se face prin construcţia control.proprietate – numele proprietăţii este legat de numele controlului printr-un punct. Dacă sunt create mai multe formulare referirea la un control din cadrul unui formular se realizează printr-o construcţie asemănătoare, adică formular.control.proprietate. Există construcţii speciale, mai scurte, cum ar fi Me - care indică formularul curent. ↓ Exemplu____________________________________________________________________________________ ' Me.Caption = "Actualizare" 'modifică proprietatea Caption (titlu) a formularului ' UserForm2.Label1.Caption = "Numele persoanei" 'modifică proprietatea Caption a obiectului Label1 ' Me.Hide 'execută metoda Hide (ascundere)ataşată formularului ____________________________________________________________________________________Exemplu ↑ Proprietatea Caption În general, proprietatea Caption a unui control stabilește textul pe care respectivul control îl afişează. Proprietatea Caption a unui formular definește titlul form-ului. Dacă nu este afişată fereastra de controale (Toolbox), având formularul deschis în mediul de proiectare, din meniul View (afişare) se selectează din linia de butoane standard. opţiunea Toolbox sau se apasă butonul Pentru introducerea unui control în formular (de exemplu un buton) se utilizează mouse-ul (tragerea controlului în formular sau clic pe control şi apoi clic pe formular). Dacă nu este afişată fereastra de proprietăţi a unui formular, din meniul View (afişare) se selectează opţiunea Properties Window (fereastra de dintre butoanele standard. Pentru un formular care proprietăţi) sau butonul conţine controale sau componente, se poate folosi şi lista derulantă din

Bazele informaticii 

 

126 

Formulare VBA

fereastra Properties pentru a selecta obiecte din formular. Unui control selectat i se pot configura proprietăţile. Pentru a configura proprietatea Caption, a unui formular, în fereastra de proprietăţi: 

 

Se selectează acesta din lista (derulantă) a obiectelor, inclusă în fereastra Properties. Din lista de proprietăţi se alege proprietatea Caption. Se introduce textul nou pentru proprietatea Caption (de exemplu, Form-ul meu).

Pentru a configura proprietatea Caption din cod:  Se deschide editorul de cod (dublu-clic pe butonul Command Button1).  Se foloseşte cuvântul cheie Me pentru a referi formularul în interiorul procedurii de tratare a unui eveniment Click pe un buton: Private Sub CommandButton1_Click() Me.Caption = "O noua denumire" End Sub 

Se rulează proiectul şi, prin clic pe buton, titlul formularului se schimbă la noua valoare.

Bazele informaticii 

 

127 

Formulare VBA

Proprietatea StartUpPosition Proprietatea StartUpPosition determină poziţia unui formular atunci când este executat prima oară. De obicei, atunci când un formular rulează, utilizatorul îl poate muta. Pentru a amplasa un formular în ecranului folosind fereastra de proprietăţi:

mijlocul

Având formularul deschis, în fereastra Properties se selectează opţiunea StartUpPosition.  În coloana din dreapta, se selectează 2CenterScreen.  Se rulează proiectul. Fereastra bazată pe form va apărea în centrul ecranului. 

Proprietăţile Height şi Width Prin aceste proprietăţi se fixează înălţimea şi lăţimea (în pixeli) a ferestrei formularului (unitatea de măsură standard pentru monitoarele de calculator). Se poate configura dimensiunea formularului în trei moduri:  Trăgând cu mouse-ul de latura de jos şi/sau din dreapta a formularului, în mediul de proiectare, până ce formularul atinge dimensiunile dorite. Schimbările făcute în acest fel sunt reflectate, în fereastra Properties, de Width (lăţime) şi Height (înălţime).  Setând în fereastra de proprietăţi dimensiunile Width şi Height.  Configurând în cod valorile pentru Width şi Height.

Bazele informaticii 

 

128 

Formulare VBA

Pentru a schimba dimensiunile unui formular din cod:  Se deschide editorul de cod (dublu-clic pe butonul Command Button1).  Se foloseşte cuvântul cheie Me pentru a referi formularul în interiorul procedurii de tratare a unui eveniment Click pe un buton: Private Sub CommandButton1_Click() Me.Width = 500 Me.Height = 300 End Sub 

Se rulează proiectul şi, prin clic pe buton, dimensiunile formularului se schimbă la noile valori. Proprietăţile ForeColor şi BackColor

Proprietatea ForeColor stabileşte culoarea elementelor grafice şi, mai important, a textului. Proprietatea BackColor stabileşte culoarea de fundal. Ele se configurează în acelaşi mod. Atunci când se configurează proprietăţile ForeColor şi BackColor ale unui formular, se configurează, de asemenea, şi valorile implicite ale acestora pentru orice control aşezat în interiorul formularului (în afara cazului în care se configurează culorile individual pentru un control, acesta va folosi valorile oferite de form). Pentru a configura proprietatea ForeColor folosind fereastra de proprietăţi:  Se deschide un formular în mediul de proiectare.  În fereastra Properties se alege

ForeColor.

 În coloana din dreapta, clic pe săgeata în jos.  Din tabul Palette se alege culoarea, în mod vizual.

Bazele informaticii 

 

129 

Formulare VBA

Utilizarea controalelor Includerea controalelor în cadrul unui formular se realizează prin introducerea (drag&drop) unor obiecte (CommandButton, Label, TextBox, etc.) în acest formular. Pentru aceasta, se acţionează butonul corespunzător din Toolbox şi se stabileşte porţiunea dreptunghiulară (zona) din formular unde va fi afişat controlul. Practic, controlul va fi desenat (se poziţionează cursorul mouse-ului în colţul stânga-sus al zonei de afişare, se ţine apăsat butonul stâng şi se trage cursorul spre colţul dreapta-jos). O dată plasat pe formular, proprietăţile (starea) unui control pot fi vizualizate şi modificate în fereastra „Properties", iar comportamentul său poate fi modelat prin scrierea procedurilor eveniment. Toate controalele sunt obiecte şi, ca urmare, răspund la evenimentele declanşate de entităţile exterioare (utilizator, alte controale) prin intermediul procedurilor eveniment.



Multe proprietăţi enumerate anterior pentru formulare se pot aplica

nu numai acestora ci şi controalelor din formular. Cele mai importante controale:  

Buton

 

Etichetă

 

Casetă de text

 

Casetă de validare Cadru de grupare

   

Buton radio (opţiune)

 

 

Casetă cu listă

 

Listă derulantă

 

Casetă de imagine

 

Generator de valori

 

 

Bazele informaticii 

 

130 

Formulare VBA

 

  

Controlul CommandButton este tipic pentru startul evenimentelor, pentru căutarea şi închiderea formularelor, etc. Codul program de executat este plasat pe buton este conţinut în proprietatea în metoda Click. Textul afişat Caption, iar numele lui în proprietatea (Name). Mediul de proiectare VBA atribuie nume butoanelor (CommandButton1, CommandButton2, …) dar este indicat ca utilizatorul să folosească denumiri semnificative. Prin convenţie aceste denumiri ar putea fi prefixate prin literele btn (btnCalculeaza, btnStart, …).

 

Controlul Label este utilizat pentru afişarea unor texte care nu pot fi editate de utilizator. Este util pentru descrierea altor controale din formular cum ar fi TextBox, ListBox, etc. Proprietăţile cele mai importante ale controlului Label: Proprietate

Name Nume VBA: Label1, Label2, … Convenţie prefix: lbl.

AutoSize Proprietate de tip boolean care defineşte modalitatea de dimensionare a etichetei (automat - True, manual - False). Implicit este False (dimensiune fixă). Dacă se fixează la valoarea True înălţimea etichetei se autoreglează în funcţie de textul introdus.

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

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

Caption Este proprietatea cea mai des utilizată şi se referă la conţinutul efectiv al

Bazele informaticii 

 

131 

Formulare VBA

etichetei. Poate fi stabilit atât la proiectare, cât şi în momentul execuţiei.

ControlTipText Afişează un indicator textual, atunci când se plasează cursorul mouse-ului în zona etichetei.

Font Fontul (stilul caracterelor) cu care este afişat textul de pe etichetă. Este o proprietate care fixează atribute pentru tip, mărime, stil de afişare.

ForeColor Culoarea cu care este scris textul în cadrul etichetei. Are aceeaşi plajă de valori ca şi BackColor.

Heigth Înălţimea etichetei, în pixeli.

Picture Imaginea care apare pe fundalul etichetei. Această proprietate reprezintă de fapt o referinţă către un fişier de tip imagine (bmp, jpg, gif, ico, etc).

PicturePosition Alinierea imaginii în cadrul etichetei.

TextAlign Modalitatea de aliniere a textului în cadrul suprafeţei etichetei. Valori: FmTextAlignLeft, FmTextAlignCenter, FmTextAlignRight. Implicit alinierea textului este la stânga.

Visible Permite ascunderea etichetei sau (re)afişarea ei pe ecran, în funcţie de valorile care îi sunt atribuite: False, True.

Width Lăţimea etichetei, în pixeli.

Bazele informaticii 

 

132 

Formulare VBA

↓ Exemplu____________________________________________________________________________________  Pe un formular se introduce o etichetă cu numele lblPoza, proprietatea Visible având valoarea False. O imagine de fundal este fixată prin proprietatea Picture:

 În procedura eveniment a butonului se scriu următoarele linii de cod care au rolul de a modifica titlul formularului (UserForm1), a etichetei şi a butonului (btnVizualizeaza): Private Sub btnVizualizeaza_Click() Me.Caption = "Poza mea" lblPoza.Visible = True btnVizualizeaza.Caption = "O fetiţă!" End Sub   Rezultat al apăsării butonului, la rularea formularului:

____________________________________________________________________________________Exemplu ↑

Bazele informaticii 

 

133 

Formulare VBA

 

Acest control este unul dintre cele mai folosite în programarea interfeţelor grafice datorită avantajelor pe care le oferă la introducerea datelor şi la manipularea lor. Defineşte un câmp de editare în care utilizatorul poate introduce un text. Controlul TextBox afişează mai multe linii atunci când proprietatea Multiline este setată pe True. Aspectul textului afişat este determinat de proprietăţile Font şi ForeColor. La fel ca şi la alte controale, proprietăţile pot fi modificate prin cod program, în timpul rulării aplicaţiei. Caseta de text este foarte flexibilă în VBA, permiţând introducerea datelor pe una sau mai multe linii de text, folosirea barelor de derulare (Scrollbars), etc. De asemenea, o casetă de text poate fi folosită în modul activ (utilizatorul are acces la conţinutul său) sau în modul inactiv (utilizatorul poate doar să vizualizeze conţinutul, textul fiind protejat în cazul în care se încearcă modificarea sa). Principalele proprietăţi, ale unei casete de text, sunt rezumate în tabelul următor: Proprietate

Name Nume VBA: TextBox1, TextBox2, … Convenţie prefix: txt.

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

BorderStyle Tipul marginii casetei de text. Sunt disponibile 2 variante:

 0-FmBackStyleTransparent;  1-FmBackStyleOpaque. Enabled Proprietate de tip boolean care permite utilizatorului să modifice conţinutul casetei (True - implicit) sau protejează textul împotriva modificărilor (False).

Bazele informaticii 

 

134 

Formulare VBA

ForeColor Culoarea textului care este afişat în interiorul casetei. Maniera de selectare este asemănătoare cu cea asociată proprietăţii BackColor.

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

MousePointer Stabileşte felul cursorului mouse-ului atunci când acesta se află pe caseta de text. Valorile pot fi alese dintr-o listă: AppStarting, Arrow, Cross, Ibeam, NoDrop, SizeAll …

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

PasswordChar Defineşte care este caracterul (de exemplu *) ce se va afişa în mod repetat, astfel încât textul din interior să nu poată fi descifrat. Utilă pentru proceduri de introducere a parolelor sau a cuvintelor-cheie.

ScrollBars Stilul barelor de derulare aferente casetei:

   

None (nu este prezentă nici o bară de derulare); Horizontal (bară de derulare orizontală, sub caseta de text); Vertical (bară de derulare verticală, în dreapta casetei de text); Both (bare de derulare verticală şi orizontală). În cazul în care se alege această variantă, se recomandă testarea ei în acelaşi timp cu proprietatea Multiline.

TextAlign Alinierea textului introdus în caseta de text. Alinierea poate fi :Left (implicit), Right, Center.

Bazele informaticii 

 

135 

Formulare VBA

↓ Exemplu____________________________________________________________________________________  Se editează un formular care să permită următoarele operaţiuni:  introducerea numelui (mărcii) unui autoturism;  introducerea preţului autoturismului, în Euro;  cursul, la zi, a monedei europene;  în funcţie de cursul monedei Euro se calculează preţul autoturismului în lei;  confirmarea stocului existent;  confirmarea includerii de taxe;  opţiunea de culoare;  afişarea informaţiile despre autoturism: marca, preţul în lei, culoare, dacă se află în stoc, dacă preţul are taxele incluse.  Pentru informaţiile introduse de la tastatură, textbox-urilor li se atribuie nume semnificative (txtMarca, txtPretEuro, txtCursEuro). Butonul de comandă (btnInfo) determină afişarea - în eticheta lblInfo - informaţiilor necesare. Proprietatea Font a acestor controale poate fi modificată pentru o afişare mai vizibilă (de exemplu Bold): txtMarca

txtCursEuro

txtPretEuro

btnInfo

lblInfo 

 Procedura de preluare a informaţiilor şi de afişare a rezultatelor prelucrării lor (asociată butonului „Info”) conţine următoarele instrucţiuni: Private Sub btnInfo_Click() If IsNumeric(txtPretEuro.Text) And _ IsNumeric(txtCursEuro.Text) Then PretEuro = Val(txtPretEuro.Text) CursEuro = Val(txtCursEuro.Text) PretLei = PretEuro * CursEuro * 1.19 lblInfo.Caption = "Autoturismul " & txtMarca.Text _ & vbCrLf & "Are pretul " & PretLei & _ Bazele informaticii 

 

136 

Formulare VBA

"lei (cu TVA)" 'Observaţie: vbCrLf -> pentru rând nou

Else MsgBox("Eroare! Valoare numerică!") End If End Sub

____________________________________________________________________________________Exemplu ↑



Proprietatea Text a casetelor de text returnează întotdeauna o

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

Controlul CheckBox creează posibilitatea de se specifica anumiţi parametri prin intermediul unor casete de validare. Realizarea practică se face prin efectuarea unui clic cu mouse-ul (bifare – debifare). Principalele proprietăţi: Proprietate

Name Nume VBA: CheckBox1, CheckBox2, … Convenţie prefix: chk. Alignment Specifică locul de plasare a cadrului de bifare în cadrul controlului. Această proprietate poate lua valorile Left şi Right. Right este implicit.

Enabled Este proprietate de tip boolean care stabileşte dacă checkbox-ul este sau nu activ.

Font Stilul fontului cu care este scris textul însoţitor.

ForeColor Culoarea cu care este scris textul însoţitor.

Caption Bazele informaticii 

 

137 

Formulare VBA

Proprietate ce determină textul însoţitor (explicativ) al casetei de validare.

Value Proprietate importantă cu următoarele valori:  True, dacă este bifată caseta;  False, dacă este debifată caseta (implicit).

Visibile Dacă este True (implicit), caseta de validare este vizibilă pe formular. În caz contrar, este invizibilă. ↓ Exemplu____________________________________________________________________________________  Pe formularul anterior se introduc două CheckBox-uri (chkStoc, chkTaxe). În procedura eveniment btnInfo_Click se adaugă următoarele instrucţiuni: If chkStoc.Value Then Stoc = "Se afla in stoc" Else Stoc = "Nu se afla in stoc" End If If chkTaxe.Value Then Taxe = "Toate taxele incluse!" Else Taxe = "Nu include taxe" End If lblInfo.Caption = "Autoturismul " & txtMarca.Text & vbCrLf & _ "Are pretul " & PretLei & " lei (cu TVA)" & _ vbCrLf & Stoc & vbCrLf & Taxe  Un rezultat al execuţiei formularului ar putea arăta astfel:

                 

 

checkBox bifat

Rezultatul prelucrării

_____________________________________________________________________________Exemplu ↑ Bazele informaticii 

 

138 

Formulare VBA

 

 

Rolul controlului de tip Frame este de a grupa două sau mai multe controale (de regulă, CheckBox sau OptionButton) astfel încât să formeze un set de elemente între care se stabileşte o relaţie. De exemplu în cazul controlului CheckBox, utilizatorul poate bifa un control indiferent de starea celorlalte. Există însă situaţii în care este de dorit ca starea unei opţiuni să elimine în mod automat celelalte opţiuni şi astfel se ajunge la utilizarea butoanelor de opţiune structurate într-un grup.

Principalele proprietăţi ale unui Frame sunt: Proprietate

Name Nume VBA: Frame1, Frame2, … Convenţie prefix: frm.

Caption Textul care apare în antetul grupului.

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

Font Tipul fontului cu care este scris titlul grupului.

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

Bazele informaticii 

 

139 

Formulare VBA

 

Este controlul care se foloseşte atunci când trebuie selectată doar o singură opţiune din mai multe posibile. De regulă, aceste butoane sunt comasate într-un cadru de grupare, asigurându-se, în acest fel, selectarea doar a unei singure opţiuni. Proprietăţile cele mai importante ale unui control de tip buton radio sunt: Proprietate

Name Nume VBA: OptionButton1, OptionButton2, … Convenţie prefix: rbn. Alignment Locul de plasare a cadrului de bifare în cadrul controlului. Această proprietate poate lua valorile Left şi Right. Right este implicit.

Caption Şirul de caractere care însoţeşte butonul radio.

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

Value Este proprietatea cea mai folosită, indicând dacă butonul este selectat - True sau nu – False (implicit).

Visible Proprietate de tip boolean care stabileşte dacă butonul radio este sau nu vizibil pentru utilizator. ↓ Exemplu____________________________________________________________________________________  Se plasează pe formular controlul de tip Frame, cu proprietatea Name, frmCuloare. Se aduc, în interiorul acestui control, din cutia cu instrumente, trei butoane radio: rbnAlb, rbnGri, rbnRosu (pentru selectarea unei culori). Controlul Frame are rolul de container pentru butoanele radio iar deplasarea lui determină şi deplasarea elementelor pe care le conţine.

Bazele informaticii 

 

140 

Formulare VBA

 Codul care completează versiunea anterioară a formularului este următorul: Private Sub btnInfo_Click() If rbnAlb.Value Then Culoare = "Alb" End If If rbnGRi.Value Then Culoare = "Gri" End If If rbnRosu.Value Then Culoare = "Gri" End If '. '. '. lblInfo.Caption ="Autoturismul " & txtMarca.Text & vbCrLf & _ "Are pretul " & PretLei & " lei (cu TVA)" & _ vbCrLf & Stoc & vbCrLf & Taxe & _ vbCrLf & "Culoare: " & Culoare 'Observaţie: vbCrLf -> pentru rând nou '. '.  Când se lansează în execuţie formularul, se va putea selecta doar un singur buton, cel selectat anterior fiind în mod automat debifat (astfel se poate alege doar o singură variantă din mai multe posibile):

Bazele informaticii 

 

141 

Formulare VBA

____________________________________________________________________________________Exemplu ↑

 

Controlul ListBox dintr-un formular afişează o listă de una sau mai multe elemente. Dacă numărul total al elementelor excede numărul celor care pot fi afişate, un scroll bar este automat adăugat la acel control. Prin proprietatea MultiSelect elementele listei pot fi afişate în coloane multiple (implicit MultiSelect este fmMultiSelectSingle). Funcţia ListIndex returnează o valoare întreagă care corespunde primului element selectat din listă. Dacă nu este selectat nici un element, valoare lui ListIndex este -1. Dacă este selectat primul element din listă, valoarea lui ListIndex este 0. Funcţia ListCount furnizează numărul elementelor listei. În esenţă, controlul ListBox poate conţine mai multe valori care să fie gestionate pe o suprafaţă fixă de pe formular, accesul la valorile ascunse realizându-se prin intermediul barelor de derulare. Funcţia Clear permite ştergere elementelor listei (golirea listei). Proprietăţile importante ale unei casete cu listă sunt enumerate în tabelul următor: Proprietate

Name Nume VBA: ListBox1, ListBox2, … Convenţie prefix: lst. BorderStyle Marginea casetei cu listă:  None: nu apare nici o bordură;

Bazele informaticii 

 

142 

Formulare VBA

 Single - bordură.

ColumnWidths Lăţimea (în număr de puncte) fiecărei coloane în cazul în care lista suportă coloane multiple.

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

Font Stilul fontului pentru elementele din cadrul listei.

ColumnCount Lista este afişată pe un număr de coloane stabilit prin această proprietate.

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

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

Visible Dacă este True, lista este vizibilă; în caz contrar, ea există în memorie, dar nu este vizibilă pe ecran. ↓ Exemplu____________________________________________________________________________________  Cea mai utilizată operaţiune este cea de adăugare a elementelor în listă (aici lstAuto). În momentul proiectării interfeţei, cu ajutorul procedurii Sub UserForm_Initialize(), se introduc elementele listei (aici, mărci de autoturisme). Utilizându-se o singură coloană (lstAuto.ColumnCount = 1) lista (lstAuto.List()) se preia din tabloul Lista(5).

Bazele informaticii 

 

143 

Formulare VBA

 Atunci când se va lansa formularul în execuţie lista conţine autoturismele specificate.

lstAuto

 Se pot include, în formular, două butoane: btnAdauga btnSterge

 Adăugarea unei mărci noi de autoturism: Private Sub btnAdauga_Click() 'Introducerea unei noi mărci Marca = InputBox("Se introduce o nouă marcă:") LstAuto.AddItem (Marca) End Sub

Bazele informaticii 

 

144 

Formulare VBA

Se adaugă marca Renault:

 Pentru ştergerea unui element, aflat în listă, se apelează la funcţia

RemoveItem:

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

____________________________________________________________________________________Exemplu ↑    

Caseta cu listă derulantă permite memorarea unei liste de elemente în mod asemănător listelor clasice, însă suprafaţa ocupată pe formular este corespunzătoare unei singure linii. În momentul selecţiei, caseta se derulează, afişând elementele disponibile, iar după selectarea unuia dintre ele se reduce la forma iniţială. Selecţia poate fi realizată şi prin tastarea primelor caractere care

Bazele informaticii 

 

145 

Formulare VBA

identifică elementele listei. Câteva proprietăţi ale ComboBox-ului: Proprietate

Name Nume VBA: ComboBox1, ComboBox2, … Convenţie prefix: cbo.

DropButtonStyle Modul de vizualizare a butonului de derulare a listei:  Plain: ;  Arrow (implict): buton de selecţie marcat cu săgeată:  Ellipses:

;

 Reduce:

.

;

ColumnWidths Lăţimea fiecărei coloane în cazul în care lista suportă coloane multiple.

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

Font Stilul caracterelor folosite pentru afişarea elementelor.

ListWidth Lăţimea, în pixeli, a listei care apare în momentul când se apasă butonul de selecţie. Valoarea stabilită nu poate fi mai mică decât lăţimea ComboBox-ului.

MaxLength Numărul maxim de caractere care pot fi introduse de utilizator. Implicit, această proprietate are valoarea zero (pot fi introduse oricâte caractere).

TextAlign

Bazele informaticii 

 

146 

Formulare VBA

Implicit, elementele unei liste sunt aliniate la stânga. Se pot face şi alinieri la dreapta (de regulă pentru elemente de tip numeric) sau la centrul listei.

Text Stabileşte sau returnează elementul curent care este selectat în casetă.

Visible Dacă este True, controlul este vizibil pe formular; în caz contrar, nu este vizibil pentru utilizator.

↓ Exemplu____________________________________________________________________________________  În exemplul următor se utilizează două ComboBox-uri (cboMarca şi cboPret). Cu ajutorul procedurii Sub UserForm_Initialize(), se introduc elementele listei (la fel ca în exemplul anterior - pentru ListBox): cboMarca

cboPret

             

btnInfo lblInfo

 Pentru afişarea elementelor curente se foloseşte proprietatea Text, care returnează elementul curent selectat. În cazul în care nu este selectat nici un element din listă, valoarea returnată este şirul vid (va apare un mesaj de avertizare). Marca selectată se determină prin simplul apel al proprietăţii Text a controlului cboMarca.

Bazele informaticii 

 

147 

Formulare VBA

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

 

 

Acest control permite afişarea pe suprafaţa formularului a unor imagini preluate din fişiere grafice. Formatele suportate sunt multiple: bmp, gif, jpg, ico etc. Referitor la aspectul vizual, cele mai importante proprietăţi sunt următoarele: Proprietate

Name Nume VBA: Image1, Image2, … Convenţie prefix: img.

BackStyle Fundalul casetei:  Opaque (implicit);  Transparent.

BorderStyle

Bazele informaticii 

 

148 

Formulare VBA

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

Picture Imaginea care se va afişa în casetă. În momentul proiectării, această imagine poate fi preluată prin indicarea fişierului care o conţine.

 

 

Controlul SpinButton oferă o modalitate de a selecta o valoare numerică dintr-un anumit interval. Proprietăţile definitorii ale generatorului de valori sunt următoarele: Proprietate

Name Nume VBA: SpinButton1, SpinButton2, … Convenţie prefix: spb. Enabled Proprietate de tip boolean:  True: controlul este disponibil pentru a fi modificat de utilizator;  False: utilizatorul nu poate modifica starea controlului.

SmallChange Stabileşte pasul cu care se modifică valoarea curentă din generator atunci când utilizatorul acţionează butoanele de incrementare sau decrementare. Valoarea incrementului trebuie să fie un număr întreg mai mare sau egal cu zero (implicit 1).

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

Min Limita inferioară a intervalului în care poate naviga utilizatorul.

Orientation Orientarea butoanelor de incrementare/decrementare:  Auto;  Vertical;  Horizontal

Value

Bazele informaticii 

 

149 

Formulare VBA

Reprezintă valoarea curentă a generatorului.

Visibile Dacă este True, generatorul este vizibil pentru utilizator; dacă este False, este ascuns.  



Exemplu______________________________________________________________________________  Într-un formular se introduc următoarele controale:  Controlul spbVarsta (cu proprietăţile Min = 1, Max = 120);  Eticheta lblInfo. Incrementarea valorii curente

lblInfo

Decrementarea valorii curente

 Proprietatea Value se modifică dinamic, în funcţie de acţiunile utilizatorului asupra butoanelor de navigare, deci valoarea numerică poate fi preluată şi utilizată: Private Sub spbVarsta_Change() lblInfo.Caption = "Vârsta: " & spbVarsta.Value & " ani" End Sub ___________________________________________________________________________________Exemplu ↑

Modificarea proprietăţilor din cod Pentru modificări ale proprietăţilor unui control este necesar ca valorile acestora să fie citite şi redefinite în timpul execuţiei (Run Mode). Pentru fiecare control se dau valori implicite (default), ele pot fi însă modificate prin acţiuni ale utilizatorului. Iniţializarea dialogului este realizată prin codul cuprins în procedura eveniment Initialize. Afişarea formularului declanşează evenimentul Initialize şi astfel au loc şi atribuirile de valori specificate.

Bazele informaticii 

 

150 

Formulare VBA

Când se gestionează mai multe formulare se impune, de cele mai multe ori, activarea altor formulare din formularul curent. ↓

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



La rularea aplicaţiei rezultă:

____________________________________________________________________________________Exemplu ↑ Când se impune modificarea mai multor proprietăţi ale unui control se utilizează, de multe ori, structura:

With

End With 

↓ Exemplu____________________________________________________________________________________  Se creează un formular;  Se introduce, în formular, controlul ListBox cu numele lstCardinale;  Codul următor realizează iniţializarea valorilor din listă:

Bazele informaticii 

 

151 

Formulare VBA

Private Sub UserForm_Initialize() With lstCardinale .AddItem "Nord" .AddItem "Sud" .AddItem "Est" .AddItem "Vest" .ListIndex = 3 End With End Sub  Rularea formularului:

____________________________________________________________________________________Exemplu ↑



Este de remarcat că, deşi în modelele de obiecte Word, Excel şi

PowerPoint colecţiile sunt indexate de la 1, în tablourile şi colecţiile asociate formularelor se foloseşte indexarea de la 0. De aici selectarea

ultimei intrări (cu numărul de ordine 4) din listă prin instrucţiunea

ListIndex = 3. Prin setarea proprietăţilor unui control şi aplicarea metodelor în timpul execuţiei, se pot efectua modificări într-un dialog utilizator care se execută, modificări apărute ca răspuns la acţiunile şi alegerile utilizatorului. De exemplu, accesibilitatea unor controale poate fi controlată prin modificarea proprietăţii Enabled. Dacă proprietatea este setată pe False, atunci utilizatorul nu poate accesa controlul. ↓

Exemplu _____________________________________________________________________________

 Se creează un formular conţinând două butoane radio şi o casetă de validare.  Codul următor restricţionează accesul la radio butoane: Private Sub CheckBox1_Click() With Me 'Me se referă la formularul curent If .CheckBox1.Value = True Then .OptionButton1.Enabled = False .OptionButton2.Enabled = False Else

Bazele informaticii 

 

152 

Formulare VBA

.OptionButton1.Enabled = True .OptionButton2.Enabled = True End If End With End Sub  Efectul bifării/debifării casetei de validare:

____________________________________________________________________________________Exemplu ↑ Prin intermediul metodei SetFocus se controlează focalizarea. Un control care are focusul este cel care răspunde la intrările din tastatură. ↓

Exemplu______________________________________________________________________________

 Pe un formular se introduc două etichete (Textul 1 şi Textul 2) şi două CheckBox-uri.  Procedurile care tratează evenimentele Click ale etichetelor impun focusul: Private Sub Label1_Click() CheckBox1.SetFocus End Sub Private Sub Label2_Click() CheckBox2.SetFocus End Sub  Efectul click-ului pe cele două etichete:

____________________________________________________________________________________Exemplu ↑ Valorile introdu-se, utilizând controalele TextBox, sunt de tip String. Pentru colectarea unor valori numerice este necesară o conversie (de obicei cu funcţia Val). Deoarece conversia string  numeric ia în considerarea caracterele, până la primul ce nu reprezintă informaţie numerică, se impune validarea şirului introdus prin funcţia IsNumeric.

Bazele informaticii 

 

153 

Formulare VBA



Exemplu______________________________________________________________________________  Pe un formular se introduc două casete de text şi un buton (btnValidare).  Procedura care tratează evenimentul Click al butonului afişează un mesaj de eroare realizând focusul pe TextBox-ul care a generat eroarea: Private Sub btnValidare_Click() If Not IsNumeric(TextBox1.Text) Then MsgBox ("Eroare 1") TextBox1.SetFocus End If If Not IsNumeric(TextBox2.Text) Then MsgBox ("Eroare 2") TextBox2.SetFocus End If End Sub  Efect când se introduce, de exemplu, o valoare eronată în al doilea TextBox:

____________________________________________________________________________________Exemplu ↑ La închiderea unui dialog, toate datele introduse de utilizator se pierd. Din acest motiv, informaţia necesară a fi reutilizată trebuie să fie salvată în variabile de la nivelul modul, înaintea descărcării formularului. Închiderea (descărcarea) formularului se realizează prin instrucţiunea Unload. ↓ Exemplu____________________________________________________________________________________  Pe un formular se introduc un TextBox (txtMem) şi un buton (btnStop) iar String-ul introdus în TextBox e necesar a fi salvat:

Bazele informaticii 

 

154 

Formulare VBA

 Pentru ca, la descărcarea formularului, să fie memorată valoarea introdusă în caseta de text se utilizează o variabilă de lucru (Nume) de tip Public: Public Nume As String Private Sub btnStop_Click() Nume = txtMem.Text Unload Me End Sub ____________________________________________________________________________________Exemplu ↑

 Pentru reutilizarea formularelor proiectate, acestea

se exportă ca

un fişier .frm care poate fi importat în alte aplicaţii:  În VBE, unde s-a proiectat formularul, se selectează opţiunea din meniu File, Export File.  Se alege un nume, pentru fişierul formular, şi Save. Se obţine un fişier nume.frm.  Reutilizarea formularului necesită deschiderea fişierului stocat: prin meniu, File, Import File, selectarea numelui formularului şi Open.

1. Să se editeze şi să se ruleze secvenţele de instrucţiuni Basic din exemplele marcate cu simbolul

.

2. Să se editeze un formular pentru calcule aritmetice.

Bazele informaticii 

 

155 

Formulare VBA

 Controale Control - Name

Tip

Proprietate

Calculator

Formular Caption

  txtA

TextBox

Valoare proprietate

Calculator

TextAlign

3 - fmTextAlignRight

ForeColor

Palette, Blue

Font, Size

10

Font,FontStyle Bold txtB

TextBox

TextAlign

3 - fmTextAlignRight

ForeColor

Palette, Green

Font, Size

10

Font,FontStyle Bold txtRezultat

TextBox

TextAlign

3 - fmTextAlignRight

Font, Size

10

Font,FontStyle Bold

Bazele informaticii 

 

156 

Formulare VBA

btnAdun

Buton

Enabled

False

Caption

+

ForeColor

Palette, Blue

Font, Size

16

Font,FontStyle Bold btnScad 

Buton

Caption

-

ForeColor

Palette, Red

Font, Size

16

Font,FontStyle Bold btnInm 

Buton

Caption

x

ForeColor

Palette, Green

Font, Size

16

Font,FontStyle Bold btnImp 

Buton

Caption

:

ForeColor

Palette, Purple

Font, Size

16

Font,FontStyle Bold btnPt 

Buton

Caption

^

ForeColor

Palette, Black

Font, Size

16

Font,FontStyle Bold

Bazele informaticii 

 

157 

Formulare VBA

Procedurile eveniment Private Sub btnAdun_Click() If IsNumeric(txtA.Text) And IsNumeric(txtB.Text)Then txtRezultat = Val(txtA) + Val(txtB) Else MsgBox ("Eroare! Valoare numerică!") End If End Sub  Observaţii:  Deoarece valorile introduse în TextBox-urile txtA şi txtB sunt de tip text este necesară funcţia de convertire Val Cu funcţia IsNumeric se testează dacă valoarea introdusă este o valoare numerică 

Secvenţele de cod sunt la fel, doar că se schimbă operatorii de calcul.

 

3. Să se editeze un formular pentru calcule financiare:

Bazele informaticii 

 

158 

Formulare VBA

Controale Control - Name

Tip

Proprietate

Valoare proprietate

Calcule

Formular

Caption

Calcule financiare

Label1

Etichetă

Caption

Rata dobanzii

Label2

Etichetă

Caption

Numarul de perioade

Label3

Etichetă

Caption

Valoare

Label4

Etichetă

Caption

Rezultat

TextBox

TextAlign

3 fmTextAlignRight

Font, Size

10

Font,FontStyle

Bold

  txtD

txtN

TextBox

La fel cu txtD

txtV

TextBox

La fel cu txtD

TextBox

TextAlign

3 fmTextAlignRight

Font, Size

10

Font,FontStyle

Bold

Enabled

False

Caption

Functia

txtRezultat

 frmFunctia

Bazele informaticii 

Frame

 

159 

Formulare VBA

  rbnFV   O p ţ

rbnPV

i u n

rbnPmt

i

Caption

FV

ForeColor

Palette, Red

Font,FontStyle

Bold

Caption

PV

ForeColor

Palette, Green

Font,FontStyle

Bold

Caption

Pmt

ForeColor

Palette, Blue

Font,FontStyle

Bold

Procedurile eveniment

rbnFV

rbnPV

rbnPmt

Bazele informaticii 

Private Sub rbnFv_Click() If IsNumeric(txtD.Text) And IsNumeric(txtN.Text) _ And IsNumeric(txtV.Text) Then D = Val(txtD) N = Val(txtN) V = Val(txtV) txtRezultat = FV(D, N, V) Else MsgBox ("Eroare! Valoare numerică!") End If End Sub  Secvenţele de cod sunt la fel ca pentru rbnFV, doar că se schimbă funcţia de calcul: FV  PV Secvenţele de cod sunt la fel ca pentru rbnFV, doar că se schimbă funcţia de calcul: FV  Pmt

 

160 

Bibliografie

   

Bibliografie   

Emil Cosma 

Aplicaţii Excel, Project, Visual FoxPro, Ed. EXPONTO, 2004 

John Nossiter 

Utilizare Microsoft Excel 97,  Ed. TEORA, 1999 

Emil Cosma  

Office 2007 – VBA, Excel, Access, Ed. EXPONTO, 2008 

Clayton Walnum 

Visual Basic .NET, Ed. ALL, 2003

Luminiţa Fînaru, Ioan Brava 

VISUAL BASIC, Primii paşi … şi următorii, Ed. POLIROM, 2001

Emil Cosma  

Visual BASIC … VBA 2007 … Studio 2005, Ed. MATRIXROM,  2007 

Paul McFedries 

VBA, Ghid pentru începători, Ed. TEORA, 2006 

Octavian Dospinescu 

Dezvoltarea aplicaţiilor în Visual Basic.NET, Ed. POLIROM,  2004     

Bazele informaticii  

 

161 

Related Documents

Bazele Informaticii
January 2021 0
Bazele
February 2021 1
Bazele Contabilitatii
February 2021 0
Bazele Electrotehnicii.pdf
February 2021 0

More Documents from "nemrak88"

Bazele Informaticii
January 2021 0
Sfri#010.docx
January 2021 0
Tratat De Obstetrica
January 2021 0
Seas#009.docx
January 2021 0