Sunteți pe pagina 1din 105
Excel VBA SUPORT DE CURS

Excel VBA

SUPORT DE CURS

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

CUPRINS

1. Lucrul cu macrocomenzi în Excel

5

1.1 Generalităţi legate de macrocomenzi

5

1.2 Editorul VBA

5

1.3 Înregistrarea unei macro-comenzi

7

1.4 Execuţia unei macrocomenzi

8

1.5 Modificarea unei macrocomenzi

9

1.6 Ştergerea unei macro-comenzi

9

1.7 Lucrul cu macro-comenzi globale

10

1.8 Salvarea fişierelor ce conţin macro-comenzi

10

1.9 Deschiderea unor fişiere care conţin macrocomenzi

11

1.10 Introducerea unui buton asociat macro pe bara de instrumente

11

1.11 Încrederea în fişiere ce conţin macro-comenzi

12

2. Lucrul cu fişiere şi foi de calcul

17

2.1

Elemente de bază de VBA pentru Excel

17

2.2

Lucrul cu fişiere Excel din VBA

18

Crearea unui fişier nou

19

Numărul de fişiere deschise

19

Închiderea tuturor fişierelor deschise

19

Referirea la un anumit fişier

19

Salvarea unui fişier

19

Deschiderea unui fişier

20

2.3

Lucrul cu foi Excel din VBA

20

Referirea la o anumită foaie

20

Inserarea unei noi foi de calcul

21

Redenumirea unei foi

21

Ştergerea unei foi

21

Ascunderea/afişarea unei foi

22

Copierea sau mutarea unei foi

22

Vizualizarea unei foi înainte de tipărire

23

Tipărirea unei foi

23

2.4 Lucrul cu domenii

23

 

2.5 Formule

26

3. Instrucţiuni VBA

29

3.1 Variabile şi constante. Tipuri de date

29

3.2 Funcţii cu interfaţa cu utilizatorul

31

3.3 Utilizarea funcţiilor VBA

34

3.4 Instrucţiuni VBA

39

3.5 Proceduri

49

3.6 Funcţii

51

4. Utilizarea controalelor tip formular în foile de calcul

4.1 Formularele de date

55

55

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

4.2

Foi de calcul ce conţin controale de tip Form şi ActiveX

55

4.3

Controale de tip Form

56

Caracteristici specifice controalelor

57

4.4

Controale de tip ActiveX

61

Caracteristici specifice controalelor

62

Formulare UsersForm

62

a) Caseta de text (Textbox)

63

b) Etichete

65

c) Butoane de comandă

65

d) Butoane de opţiune

66

e) Caseta de validare

66

f) Bare de derulare orizontală şi verticală

67

g) Controlul spin

67

h) Caseta cu listă

68

i) Caseta combinată

69

j) Controlul Image

70

k) Butoane Toggle

70

l) Controlul MultiPage

70

m) Controlul TabStrip

70

n) Controlul RefEdit

71

5.

Tabele

74

5.1 Crearea unui tabel din VBA

74

5.2 Obţinerea informaţiilor dintr-un tabel

74

5.3 Inserarea unui rând

75

5.4 Inserarea unei coloane cu valori calculate

75

5.5 Totalizarea datelor

76

5.6 Modificarea informaţiilor din tabel

77

6. Grafice

78

6.1 Crearea unui grafic

78

6.2 Locaţia unui grafic

78

6.3 Crearea unui grafic aflat pe o foaie de lucru

79

6.4 Crearea unui grafic pe o foaie de grafic

79

6.5 Activarea unui grafic din VBA

80

6.6 Mutarea unui grafic

80

6.7 Determinarea activării unui grafic

81

6.8 Ştergerea unui grafic

81

6.9 Formatarea graficelor cu ajutorul VBA

82

6.10 Parcurgerea tuturor graficelor

83

6.11 Modificarea datelor utilizate de grafic

85

6.12 Exportul unui grafic în format imagine

88

6.13 Evenimente asociate graficelor

88

7.

Tabele pivot

7.1 Noutăţi aduse tabelelor pivot în Excel 2007-2010

92

92

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

7.2 Crearea unui tabel pivot cu ajutorul unei macrocomenzi

92

7.3 Simplificarea codului scris de macrocomanda

93

7.4 Zona cache a pivotului (PivotCaches)

94

7.5 Colecţia PivotTables

94

7.6 Câmpurile tabelului pivot

95

7.7 Modificarea funcţiei afişate de tabelul pivot

95

7.8 Câmpuri calculate

96

7.9 Elemente ale câmpurilor tabelului pivot

97

7.10 Gruparea datelor

97

7.11 Eliminarea grupării datelor

99

7.12 Introducerea valorilor calculate în tabelele pivot

100

7.13 Ştergerea valorilor calculate în tabelele pivot

101

7.14 Grafice pivot

101

Anexa Funcţii utile în VBA

103

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

1. Lucrul cu macrocomenzi în Excel

Primul limbaj destinat macro-comenzilor în Excel a apărut în versiunea 2 a programului (Excel 2010 are versiunea 14). Limbajul XLM era alcătuit funcţii care se executau secvenţial şi, deşi era la vremea acceea foarte puternic, era dificil de învăţat şi utilizat. În versiunile următoare, limbajul XLM a fost înlocuit de Visual Basic for Application (VBA). VBA este un mediu de programare care pune la dispoziţie un limbaj complet pentru dezvoltarea aplicaţiilor în cadrul programelor din pachetul Microsoft Office, folosind un model de programare orientat spre obiecte şi dirijat de evenimente.

1.1 Generalităţi legate de macrocomenzi

Un macro (sau o macro-comandă) reprezintă un grup de acţiuni sau operaţii. Acestea sunt memorate de Excel local (în fişierul în care lucrăm) sau global (în fişierul Personal Macro Workbook), pentru a fi utilizate şi în alte fişiere. Vom folosi macro-comenzi pentru acele secvenţe de acţiuni pe care le efectuăm în mod repetat. (de exemplu: formatarea unor celule, paginarea foilor, introducerea unor date, etc.). Macro-comenzile se execută automat când apăsăm combinaţia de taste asociată, rulăm macro-ul din lista de macro-comenzi sau apăsăm butonul asociat acestuia.

Acţiunile pe care le conţine un macro sunt codificate într-un limbaj de programare Visual Basic for Application. Acest cod este creat în foaia pentru module sub forma unei subrutine ( SUB ) care efectuează acţiunile înregistrate. Pentru a crea un macro se folosesc 2 metode:

- înregistrare

- introducerea instrucţiunilor.

Pentru a modifica o macrocomanda înregistrată sau pentru a scrie o macrocomandă proprie sunt necesare cunoştiinţe minimale de Visual Basic. Intrarea în mediul Visual Basic se poate face utilizând comanda Visual Basic aflată în fila Developer sau, mai rapid, folosind combinaţia de taste ALT+F11.

1.2 Editorul VBA

Afişarea filei Developer În Excel 2007-2010, fila Developer nu este afişată implicit. Pentru a afişa fila, veţi proceda în felul următor:

1. File (butonul Excel Office) / Excel Options

2. În fereastra Excel Options, eticheta Popular, alegeţi opţiunea Show Developer Tab in the Ribbon.

Activarea VBE În Excel 2007-2010, editorul Visual Basic (VBE) poate fi activat astfel din fila Developer / Visual Basic sau cu ajutorul combinaţiei de taste Alt + F11. În plus, dacă doriţi să vizualizaţi codul unei foi, daţi clic dreapta pe numele foii şi din meniul apărut alegeţi comanda View Code.

Fereastra VBE Fereastra editorului Visual Basic are următoarele elemente componente:

Bara de titlu ce conţine titlul ferestrei (ex. Microsoft Visual Basic Book1)

Bara de meniuri

Barele de instrumente; pe bara de instrumente Standard se găsesc, printre altele,

(salvare a fişierului înclusiv a codului

(oprire procedură

a fişierului înclusiv a codului (oprire procedură butoanele VBA), (revenire la Microsoft Excel), (rulare
a fişierului înclusiv a codului (oprire procedură butoanele VBA), (revenire la Microsoft Excel), (rulare

butoanele

VBA),

(revenire la Microsoft Excel), (rulare procedură sau formă),

(oprire procedură),

VBA), (revenire la Microsoft Excel), (rulare procedură sau formă), (oprire procedură), Teodora Frunză 5/105

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

blocată),

blocată), (mod design), (afişare Project Explorer), (afişare Property

(mod design),

blocată), (mod design), (afişare Project Explorer), (afişare Property

(afişare Project Explorer),

blocată), (mod design), (afişare Project Explorer), (afişare Property

(afişare Property

Windows),

(afişare Object Browser).

 
Windows), (afişare Object Browser).    Fereastra Project Explorer afişată de obicei în

Fereastra Project Explorer afişată de obicei în stânga, în care se observă structura arborescentă a fiecărui fişier Excel deschis. Dacă fereastra Project Explorer nu e vizibilă, poate fi afişată din View / Project Explorer, butonul de pe bara de instrumente sau Ctrl+R. Fereastra Project Explorer poate fi închisă cu X – ul din colţul dreapta sus al ferestrei sale, sau prin clic dreapta pe fereastră şi din meniul apărut, comanda Hide.

Fereastra Code Window este zona din suprafaţa de lucru ce conţine cod VBA. Pentru fiecare element din fereastra Project Explorer, codul aferent se obţine prin dublu clic. În cazul în care nu aţi scris cod, fereastra este goală.

Fereastra Immediate e foarte utilă pentru testarea şi depanarea anumitor secţiuni de cod. Această fereastră poate fi vizibilă sau nu. Pentru afişarea ferestrei, utilizaţi comanda View / Immediate Window sau Ctrl+G, iar pentru a o închide, folosiţi butonul X al ferestrei sau clic dreapta / hide. În această fereastră se poate executa cod VBA fără crearea macro- urilor. Orice comenzi scrieţi în această fereastră, vor dispărea când închideţi fişierul.

fereastră, vor dispărea când închideţi fişierul. Ad ăugarea unui modul VBA În cazul în care doriţi

Adăugarea unui modul VBA

În cazul în care doriţi adăugarea unui modul nou VBA fişierului în care lucraţi, veţi proceda astfel:

1. Selectaţi numele fişierului din fereastra Project Explorer

2. Clic dreapta / Insert / Module

Obs: Când înregistraţi un macro, Excel-ul va insera automat codul VBA într-un modul.

Eliminarea unui modul VBA

În cazul în care doriţi ştergerea unui modul dintr-un fişier,

1. Selectaţi numele modulului din fereastra Project Explorer

2. Clic dreapta / Remove Module

3. Veţi fi întrebaţi dacă doriţi exportul modului înainte de ştergerea din acest fişier. Dacă doriţi păstrarea codului, procedaţi după indicaţiile paragrafului următor.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Obs: nu puteţi elimina module asociate fişierului (ThisWorkbook) sau foilor (Sheet1, etc.).

Exportul şi importul obiectelor VBA Salvarea obiectelor sau codului VBA în fişiere separate de fişierul curent poartă numele de export. Folosirea acestor obiecte în alte fişiere presupune importul acestora. Exportul unui obiect sau modul Excel se face astfel:

1. Selectaţi obiectul din fereastra Project Explorer

2. Clic dreapta / Export File

3. În fereastra Export File precizaţi calea şi numele fişierului.

Export File precizaţi calea şi numele fişierului. Importul unui obiect sau modul Excel se face similar:

Importul unui obiect sau modul Excel se face similar:

1. Selectaţi numele fişierului curent din fereastra Project Explorer

2. Clic dreapta / Import File

3. În fereastra Import File precizaţi calea şi numele fişierului.

1.3 Înregistrarea unei macro-comenzi

O macro-comandă lucrează ca un casetofon: l-am pornit şi înregistrează acţiunile pe care le “traduce” în limbaj VBA.

Pentru a crea macrocomenzi parcurgeţi următorii paşi:

Pas1: Alegem comanda Record Macro din fila View / Macro sau din fila Developer sau de pe bara de stare (butonul ). Pas2: Apare fereastra următoare unde completăm numele macro-comenzii (fără spaţii), alegem o combinaţie de taste (shortcut key) pentru execuţia rapidă a macro-ului, alegem locul de stocare a macro-comenzii (în fişierul curent – This Workbook, într-un fişier nou – New Workbook sau global, pentru accesul din orice fişier Excel - Personal Macro Workbook ). Opţional, putem scrie o scurtă descriere a acţiunii macro-comenzii.

em scrie o scurtă descriere a acţiunii macro -comenzii. Pas3: Dacă dorim ca înregistrarea să se
em scrie o scurtă descriere a acţiunii macro -comenzii. Pas3: Dacă dorim ca înregistrarea să se

Pas3: Dacă dorim ca înregistrarea să se efectueze folosind adrese relative alegem opţiunea Relative Reference din fila Developer sau View / Macros. Pas 4: Se parcurg toate comenzile care trebuiesc înregistrate. Ex. Page Layout / Page Setup / Margins : Top :2, Bottom :2, Left : 2, Right : 2 ; Page Layout / Page Setup / Header şi introduceţi numele utilizatorului şi data în

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

stânga; Page Layout / Page Setup / Footer şi introduceţi numărul paginii curente în dreapta. Pas 5: Se opreşte înregistrarea apăsând butonul Stop Recording de pe bara de stare, din fila Developer sau View.

Exemplu: Crearea unei macrocomenzi cu numele Date firmă.

- Nume: Date_firma

- Combinaţia de taste: Ctrl + y.

- Localizare: This Workbook

- Descriere: Introducere date firma

- Alegem Relative Reference pentru ca datele să fie scrise începând cu celula activă

- Acţiuni:

- scriem datele firmei în celula curentă: Infotim ETA2U Training Center

- enter

- introducem adresa: Str. C. Brediceanu, nr. 8

- Stop înregistrare

În urma înregistrării unei macro-comenzi, programul Excel generează o secvenţă de program VBA, de exemplu:

Excel generează o secvenţă de program VBA, de exemplu: 1.4 Execuţia unei macrocomenzi Un macro poate

1.4 Execuţia unei macrocomenzi

Un macro poate fi executat astfel:

- din fila View / Macros / View Macro sau Developer / Macros ajungem în fereastra Macro

- din fila View / Macros / View Macro sau Developer / Macros ajungem în fereastra

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

- se selectează macro-ul dorit din lista Macro Name. - se apasă butonul Run

Obs. Mai rapid se poate executa o macro-comandă cu combinaţia de taste asociate.

1.5 Modificarea unei macrocomenzi

Modificarea unei macro-comenzi presupune intervenţia în succesiunea comenzilor înregistrare cu ajutorul editorului Visual Basic. Pas 1: Din fila View / Macros / View Macro sau Developer / Macros ajungem în fereastra Macro Pas 2: Selectăm numele macrocomenzii. Pas 3: Apăsăm butonul Edit şi va apărea fereastra următoare :

butonul Edit şi va apărea fereastra următoare : Pas 4: Modificăm acţiunile înregistrate. De exemplu,

Pas 4: Modificăm acţiunile înregistrate.

De exemplu, adăugăm la adresă localitatea Timişoara:

De exemplu, adăugăm la adresă localitatea Timişoara: Pas 5: Închidem fereastra de editare. 1.6 Ş tergerea

Pas 5: Închidem fereastra de editare.

1.6 Ştergerea unei macro-comenzi

Pas 1: Din fila View / Macros / View Macro sau Developer / Macros ajungem în fereastra Macro Pas 2: Selectăm numele macrocomenzii.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Pas 3: Delete.

1.7 Lucrul cu macro-comenzi globale

Până în acest moment am lucrat cu macro-comenzi păstrate local, în fişierul în care lucrăm. Dacă dorim să creăm macro-comenzi care să poată fi utilizate din orice fişier Excel, atunci acestea le vom crea global, în fişierul Personal.xslb salvat de Excel în C:\Documents and Settings \ numele Dvs de utilizator \ Application Data \ Microsoft \ Excel \ XLSTART.

Exemplu: Crearea unei macrocomenzi cu numele Date firmă global.

- Nume: Date_firma_global

- Combinaţia de taste: Ctrl + w.

- Localizare: Personal Macro Workbook

- Descriere: Introducere datele firmei în orice fisier Excel.

- Alegem Relative Reference pentru ca datele să fie scrise începând cu celula activă

- Acţiuni:

- scriem datele firmei în celula curentă: Infotim ETA2U Training Center

- enter

- introducem adresa: Str. C. Brediceanu, nr. 8

- enter

- scriem Telefon: 0256-277644, 0256-221372

- Stop înregistrare

Pentru a modifica sau şterge un macro global, parcurgem următorii paşi:

Pas 1: Afişăm fişierul Personal.xlsb:

alegem View / Unhide şi din fereastra Unhide ,

selectâm fişierul Personal.xlsb şi OK.

Unhide , selectâm fişierul Personal.xlsb şi OK . Pas 2 : În fişierul Personal.xlsb alegem fila

Pas 2: În fişierul Personal.xlsb alegem fila View / Macros / View Macro sau Developer / Macros şi ajungem în fereastra Macro. Pas 3: Edităm sau ştergem macro-comanda. Pas 4: Salvăm fişierul Personal.xlsb. Pas 5: Ascundem fişierul Personal.xlsb: alegem View / Hide.

1.8 Salvarea fişierelor ce conţin macro-comenzi

În Excel 2007-2010 fişierele obişnuite se deosebesc de cele ce conţin macro-comenzi. Astfel, dacă doriţi să salvaţi un fişier fără macro-comenzi, folosiţi salvarea ca Excel Workbook (File (butonul Office) / Save As / Excel Workbook), extensia fiind .xlsx. În cazul în care doriţi să salvaţi macro-comenzile create, folosiţi salvarea ca Excel Macro-Enabled Workbook (File (butonul Office) / Save As / Excel Macro-Enabled Workbook), extensia fiind .xlsm. Acesta este o element nou introdus în Excel 2007.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

1.9 Deschiderea unor fişiere care conţin macrocomenzi

La deschiderea unui fişier ce conţine macro-uri în Excel 2007-2010, va apare bara Security Warning cu butonul Options, imediat sub banda din partea de sus a ferestrei.

Options, imediat sub banda din partea de sus a ferestrei. Implicit, macro- urile sunt dezactivate, iar

Implicit, macro-urile sunt dezactivate, iar pentru a le activa daţi clic pe butonul Options şi Enable this content din fereastra Microsoft Office Secutiry Options.

content din fereastra Microsoft Office Secutiry Options. 1.10 Introducerea unui buton asociat macro pe bara de

1.10 Introducerea unui buton asociat macro pe bara de instrumente

Macro-urile folosite des şi păstrate în fişierul Personal Macro Workbook pot fi rulate cu ajutorul butoanelor de pe bara de comenzi rapide (Quick Access Toolbar). Pentru a introduce un buton pe bara de comenzi rapide parcurgeţi următorii paşi:

1 Clic pe săgeata de la sfârşitul barei de comenzi rapide şi alegeţi opţiunea More Commands.

de comenzi rapide şi alegeţi opţiunea More Commands . 2 Va apare fereastra Excel Options, alegem

2 Va apare fereastra Excel Options, alegem opţiunea Macros din lista Choose commands from. Imediat, în listă vor fi afişate toate macro-urile disponibile,

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

selectăm macro-ul dorit şi clic pe Add. Numele macro-ului va fi afişat în lista din dreapta ferestrei ce conţine toate elementele afişate în bara de access rapid.

toate elementele afiş ate în bara de access rapid. 3 Dacă dorim, putem modifica pictograma macro

3 Dacă dorim, putem modifica pictograma macro-ului. Selectăm macro-ul din lista Customize Quick Access Toolbar şi clic pe Modify. Va apare fereastra Modify Button, de unde alegem pictograma dorită.

fereastra Modify Button, de unde alegem pictograma dorită. 1.11 Încrederea în fişiere ce conţin macro -comenzi

1.11 Încrederea în fişiere ce conţin macro-comenzi

Pentru protecţia datelor Dvs, programul Excel vă cere activarea macro-comenzilor de fiecare dată când deschideţi un fişier de conţine macro-uri. Dacă lucraţi frecvent cu fişiere ce conţine macro-uri, acest lucru devine deranjant. Există două alternative simple ce permit eliminarea necesităţii de a activa macro-urile la deschiderea fişierelor. Prima alternativă presupune declararea unor directoare ca fiind “sigure”. Astfel, puteţi deschide orice fişier din aceste directoare, macro-urile fiind activate automat. A doua alternativă implică “încrederea” în autorul fişierului ce conţine macro-uri.

a) Directoare “de încredere”

Pentru a stabili că un director este de “încredere” parcurgeţi următorii paşi:

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Pas 1: File (Butonul Excel Office) / Excel Options / Trust Center / Trust Center Settings / Trusted Locations / Add New Location Pas 2: În fereastra Microsoft Office Trusted Location clic pe Browse şi alegeţi directorul pentru care doriţi să stabiliţi siguranţa:

directorul pentru care doriţi să stabiliţi siguranţa: Pas 3 : Bifaţi opţiunea Subfolders of this location

Pas 3: Bifaţi opţiunea Subfolders of this location are also trusted, dacă doriţi ca şi fişierele din subdirectoare să devină sigure. OK. Pas 4: OK. Veţi observa în fereastra Trust Center calea şi numele directorului selectat.

Trust Center calea şi numele directorului selectat. Obs: În fereastra Trust Center / Trusted Location aveţi

Obs: În fereastra Trust Center / Trusted Location aveţi şi butoanele Remove şi Modify pentru a elimina sau modifica directoarele “sigure” de pe calculatorul Dvs.

Specificarea unor locaţii (directoare) de “încredere” este utilă în cazul în care păstraţi fişierele cu macro-uri în anumite directoare şi în cazul în care primiţi astfel de fişiere de la colegi.

b) “Încrederea” în autorul fişierului

În cazul în care Dvs. creaţi fişiere ce conţin macro-uri ce trebuie păstrate în locaţii arbitrare, vă puteţi desemna Dvs. ca fiind “de încredere”. Stabilirea încrederii în fişiere ce conţin macro-uri:

Pas 1: Deschideţi fişierul ce conţine macro-uri şi care nu se află într-un director de încredere.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Pas 2: File (Butonul Excel Office) / Prepare / Add a Digital Signature. În fereastra ce apare daţi clic pe Ok. Pas 3: Apare fereastra Get a Digital ID în care selectaţi Create your own digital ID

a Digital ID în care selectaţi Create your own digital ID Pas 4 : În fereastra

Pas 4: În fereastra Create your own digital ID completaţi datele Dvs.

Create your own digital ID completaţi datele Dvs. Pas 5 : În fereastra următoare daţi CANCEL

Pas 5: În fereastra următoare daţi CANCEL. NU daţi clic pe Sign /Go /collect $200 !!!

CANCEL . NU daţi clic pe Sign /Go /collect $200 !!! Important : Veţi semna digital

Important: Veţi semna digital doar codurile VBA din fişier, nu şi fişierul în sine. Folosirea comenzii Prepare a butonului Excel Office e o cale uşoară către crearea unei identităţi digitale, dar dacă veţi semna digital documentele, împiedicaţi orice modificare a conţinutului acestora. Dacă semnaţi digital codurile VBA din fişiere, doar macro-comenzile sunt semnate şi oricine poate face modificări în conţinutul fişierelor Excel.

Pas 6: Intraţi în editorul Visual Basic (Developer / Visual Basic) şi de aici alegeţi Tools / Digital Signature. În fereastra ce apare observaţi că proiectul VBA curent nu este semnat.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

CURS EXCEL VBA INFOTIM ETA2U TRAINING CENTER Pas 7 : Alegeţi Choose şi din fereastra Select

Pas 7: Alegeţi Choose şi din fereastra Select Certificate selectaţi ID-ul digital al Dvs.

Select Certificate selectaţi ID -ul digital al Dvs. Pas 8 : După ce daţi ok, veţi

Pas 8: După ce daţi ok, veţi observa că proiectul curent apare semnat de Dvs.

ok, veţi observa că proiectul curent apare semnat de D vs. Pas 9 : Reveniţi la

Pas 9: Reveniţi la Excel, salvaţi şi închideţi fişierul semnat digital într-o locaţie care nu e în lista directoarelor sigure. Pas 10: Deschideţi fişierul anterior. Clic pe butonul Options de pe bara Security. Va apare fereastra următoare care vă indică faptul că documentele sunt semnate de un autor (Dvs. în acest caz), dar pe care încă nu aţi stabilit dacă e de încredere. Alegeţi opţiunea Trust all documents from this publisher pentru ca pe viitor toate documentele semnate de Dvs. să fie aibă macro-urile active.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

CURS EXCEL VBA INFOTIM ETA2U TRAINING CENTER Obs: O dată ce v - aţi creat o

Obs: O dată ce v-aţi creat o identitate digitală, puteţi semna proiectele VBA urmând paşii 6-8.

Puteţi vizualiza sau modifica lista de autori de “încredere” astfel: File (Butonul Excel Office) / Excel Options / Trust Center / Trust Center Settings / Trusted Publisher.

/ Trust Center / Trust Center Settings / Trusted Publisher . În cele prezentate se poate

În cele prezentate se poate remarca faptul că aveţi la dispoziţie două soluţii de a desemna fişierele Dvs, ca fiind de încredere. Dacă creaţi astfel de fişiere în special pentru ca Dvs. să le utilizaţi, varianta a doua cu semnătura digitală pe proiectele VBA este cea mai flexibilă soluţie. Dacă, însă, creaţi fişiere cu macro-comenzi pentru a fi utilizate în comun de mai mulţi utilizatori, varianta cu o locaţie “sigură” este cea mai bună soluţie. Dacă veţi crea fişiere ce conţin macro-comenzi pentru o largă audienţă, atunci soluţia indicată este achiziţionarea ueni semnături digitale autentice şi semnarea documentelor.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

2. Lucrul cu fişiere şi foi de calcul

2.1 Elemente de bază de VBA pentru Excel

Limbajul VBA se bazează pe lucrul cu obiecte. Pentru a le utiliza, iată câteva noţiuni elementare de lucru cu limbajul:

cod: toate acţiunile pe care le executaţi sunt scrise în cod VBA. Codul VBA scris sau înregistrat (cu ajutorul macro-urilor) este stocat în module VBA.

modul: modulele VBA sunt stocate în foi Excel. Pentru a vizualiza sau modifica module VBA, folosiţi editorul Visual Basic (VBE) fie din fila Developer, fie cu ajutorul combinaţiei de taste Alt+F11. Un modul conţine una sau mai multe proceduri.

Procedura: o procedura este o unitate de cod care efectuează anumite acţiuni. În VBA sunt două tipuri de proceduri: subrutine (Sub) şi funcţii (Function).

o

Subrutina: conţine mai multe instrucţiuni care se execută. Toate macro-urile sunt codificate sub forma unei subrutine. Un asfel de exemplu este următorul:

Sub InserareFoaieNoua()

Sheets("Sheet1").Select

Sheets.Add End Sub

Funcţia: e similară cu subrutina, dar returnează o valoare. Poate fi apelată dintr-o subrutină sau o altă funcţie, sau poate fi utilizată direct în formule din foile de calcul Excel. Function spor(salariu As Integer) ' sporul este de 20% din salariu spor = salariu * 1.2 End Function

Obiect: în limbajul VBA se lucrează cu obiecte ale aplicaţiei Excel (în cazul nostru). Exemple de obiecte: worksheet, workbook, application, range, cell, chart. În Excel sunt mai mult de 100 de clase de obiecte ce pot fi utilizate. Aceste clase de obiecte sunt aranjate într-o ierarhie.

Colecţii: obiecte de acelaşi tip formează o colecţie. De exemplu, colecţia Worksheets conţine toate foile de lucru dintr-un fişier.

Ierarhia obiectelor: Unele obiecte pot conţine alte obiecte (adică sunt containere pentru acestea). De exemplu, obiectul Application desemnează aplicaţia Excel şi conţine alte obiecte precum Workbook (fişierul Excel), ActiveCell (celula activă), ActiveChart (graficul activ) etc. Obiectul Workbook conţine la rândul lui alte obiecte, precum Worksheet (foi de lucru) şi Chart (grafice). Obiectul Worksheet conţine multe obiecte, cum ar fi Range (domeniu), PivotTable (tabele pivot), etc. Şi lista poate continua. O astfel de organizare a acestor obiecte se numeşte ierarhia de obiecte Excel. Aveţi mai jos o mică porţiune această ierarhie (întreaga ierarhie o puteţi vizualiza prin căutarea în help-ul VBA a cuvintelor Excel Object Model Map).

o

Ierarhia obiectelor Excel:

Application ( reprezintă mediul de lucru EXCEL)

Workbooks

ThisWorkbook

Sheets

(mulţimea fişierelor de lucru) (fişierul de lucru în care se execută operaţia curentă) (mulţimea tuturor foilor din fişierul de lucru)

lucru) ( fişierul de lucru în care se execută operaţia curentă) (mulţimea tuturor foilor din fişierul
lucru) ( fişierul de lucru în care se execută operaţia curentă) (mulţimea tuturor foilor din fişierul

WorkSheets (mulţimea foilor de calcul din fişierul de lucru)

Charts

(mulţimea foilor de grafic)

Range

(celula sau domeniul/domeniile de celule apelat folosind

Cells

nume sau referinţe de tip A1) (celula sau domeniul de celule apelat folosind referinţe de tip R1C1)

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Când vă referiţi la un obiect conţinut în alt obiect, veţi specifica poziţia acestuia în ierarhia de obiecte folosind punctul (“.”) ca separator între container şi membru. De exemplu, referirea la fişierul Book1.xlsx se face astfel:

Application. Workbooks("Book1.xlsx") Vă referiţi astfel la fişierul Book1.xlsx din colecţia Workbooks. Această colecţie este conţinută în obiectul Application. Dacă doriţi să vă referiţi la foaia Sheet1 din fişierul Book1.xlsx, veţi proceda astfel:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")

Mai mult, dacă doriţi să ajungeţi în celula A1 din foaia Sheet1 din fişierul Book1.xlsx, scrieţi următorul cod:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1")

Obiecte active: în cazul în care omiteţi să faceţi referire la un obiect, Excel-ul foloseşte obiectele active, ca substitut (dacă e posibil). Astfel, dacă fişierul Book1 este fişierul activ, o variantă simplificată de a scrie în celula A1 din foaia Sheet 1 este următoarea:

Worksheets("Sheet1").Range("A1")

Mai mult, dacă foaia Sheet1 este foaia activă, puteţi simplifica şi mai mult scrierea:

Range("A1")

Obs: dacă foaia Sheet2 este foaia activă (în aceasta sunteţi poziţionaţi), atunci referirea se face la celula A1 din foaia Sheet2.

Ierarhia obiectelor active Excel:

Application ( reprezintă mediul de lucru EXCEL) ActiveWorkbook (fişierul de lucru activ) ActiveSheet (foaia de lucru activă) ActiveChart (foaia de grafic activă) ActiveCell (celula activă) Selection (obiectul selectat)

Proprietăţi ale obiectelor: Obiectele au proprietăţi (le puteţi gândi ca setări). De exemplu, un obiect de tip domeniu (Range) are proprietăţi ca valoare (Value) sau nume (Name), un obiect de tip grafic (Chart) are proprietăţi ca tip grafic (Type) etc. Cu ajutorul VBA puteţi determina şi modifica aceste proprietăţi. De exemplu, scriem valoarea 1 în celula A1 din foaia Sheet1 a fişierului curent. Worksheets("Sheet1").Range("A1").Value = 1

Metode ale obiectelor: Obiectele au pe lângă proprietăţi şi metode. Metodele sunt acţiuni care pot fi efectuate de obiecte. De exemplu, o metodă a obiectului Range este ClearContents, ceea ce determină golirea conţinutului celulelor din domeniu. Astfel, dacă doriţi golirea conţinutului celulelor A1:B2 din foaia Sheet1 a fişierului activ, scrieţi următorul cod:

Worksheets("Sheet1").Range("A1:B2").ClearContents

Variabile VBA: puteţi crea variabile VBA care să conţină anumite valori. De exemplu, în variabila impozit doriţi să păstraţi procentul aferent acestuia, valoare care se găseşte în celula C5 din sheet1 a fişierului curent:

impozit = Worksheets("Sheet1").Range("A1").Value

Instrucţiuni VBA: în limbajul VBA, există şi instrucţiuni specifice de programare:

instrucţiuni de decizie, de ciclare etc.

Evenimente: unele obiecte răspund la anumite evenimente (clic de mouse, apăsarea unei taste, trecere la o foaie nouă, modificarea valorii unei celule, etc).

2.2 Lucrul cu fişiere Excel din VBA

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Lucrul cu fişiere Excel din VBA presupune folosirea obiectelor ThisWorkbook, ActiveWorkbook din a celor din colecţia Workbooks. Toate operaţiunile cu fişiere înseamnă folosirea metodelor şi proprietăţilor acestor obiecte.

Crearea unui fişier nou Comanda de crearea a unui fişier nou este:

Workbooks.Add Exemplu: în fereastra Immediate scrieţi comanda de creare a unui fişier nou.

Numărul de fişiere deschise Proprietatea care afişează numărul fişierelor deschise este:

Workbooks.Count Exemplu: în fereastra Immediate afişaţi numărul de fişiere deschise scriind comanda ?Workbooks.Count. Count este o proprietate a obiectului Workbook, iar pentru afişarea ei, în fereastra Immediate, se scrie simbolul “?” înaintea comenzii.

Închiderea tuturor fişierelor deschise Workbooks.Close

Referirea la un anumit fişier

a) Folosind numărul fişierului

Toate fişierele deschise în Excel sunt păstrate într-o listă. Dacă dorim să accesăm primul fişier Excel, comanda este Workbooks(1), pentru al doilea fişier, comanda este Workbooks(2), etc. Exemplu: afişaţi în fereastra Immediate numele fişierelor Excel deschise (folosiţi comanda ?Workbooks(nr_fisier).Name ).

b) Folosind numele fişierului

Un alt mod de referire la un fişier din VBA cel în care folosim direct numel fişierului:

Workbooks(“Book1.xlsx”).

Exemplu:

închideţi

fişierul

Book1.xlsx

din

fereastra

Immediate.

(tastaţi

comanda

Workbooks(“Book1.xlsx”).Close)

 

Exmplu:

activaţi

un

anumit

fişier

din

fereastra

Immediate.

tastaţi

comanda

Workbooks(“Book2.xlsx”).Activate)

c) Utilizând fişierul activ

Dacă nu există pericol de confuzie, puteţi folosi pentru referirea unui fişier, obiectul ActiveWorkbook ce indică fişierul activ. Exemplu: afişaţi în fereastra Immediate numele fişierului Excel activ (folosiţi comanda ?ActiveWorkbook.Name ).

d) Utilizând fişierul curent

Pentru a folosi fişierul curent de lucru se foloseşte obiectul ThisWorkbook. Exemplu: afişaţi în fereastra Immediate numele fişierului Excel curent (folosiţi comanda ?ThisWorkbook.Name ).

Salvarea unui fişier

a) Salvarea cu comanda Save:

Workbooks(“Book1.xlsx”).Save

b) Salvarea cu comanda Save As:

Workbooks(“Book1.xlsx”).SaveAs(“C:\fisier.xlsx”)

După cum se observă, salvarea presupune referirea la fişierul pe care doriţi să-l salvaţi şi utilizarea comenzii Save pentru salvarea cu acelaşi nume sau a comenzii SaveAs. În cazul comenzii SaveAs

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

veţi specifica între ghilimele calea şi numele fişierului. Dacă nu specificaţi calea, fişierul va fi salvat în directorul curent de lucru.

Deschiderea unui fişier Comanda de deschidere a unui fişier e similară cu salvarea acestuia. Vom preciza doar numele fişierului atunci când acesta se găseşte în directorul curent, sau toată calea şi numele fişierului, atunci când acesta este în alt director.

Workbooks.Open(“Book1.xlsx”)

sau

Workbooks.Open(“C:\Book1.xlsx”)

Exerciţii:

- Creaţi trei fişiere (workbooks.add)

- Afişaţi numărul fişierelor deschise (workbooks.count)

- Afişaţi numele fiecărui fişier (folosiţi referirea cu ajutorul numărului fişierului, a numelui sau a celui activ)

- Închideţi fişierul activ (activeworkbook.close)

- Afişaţi numărul fişierelor deschise (workbooks.count)

- Afişaţi numele fiecărui fişier (folosiţi referirea cu ajutorul numărului fişierului, a numelui sau a celui activ)

- Activaţi primul fişier creat

- Salvaţi fişierul cu comanda Save (activeworkbook.save)

- Salvaţi celălalt fişier cu comanda Save As (activeworkbook.saveas(“C:\info.xlsx”) )

- Închideţi toate fişierele (workbooks.close)

- Deschideţi cele două fişiere salvate

2.3 Lucrul cu foi Excel din VBA

Pentru a folosi foi de calcul Excel în VBA, vom utiliza metode şi proprietăţi ale obiectului ActiveWorksheet sau a celor din colecţia Worksheets. Similar, pentru a folosi foi de grafic Excel în VBA, vom utiliza obiectul ActiveChart sau din a celor din colecţia Charts. Pentru a folosi foi de calcul sau grafic avem la dispoziţie obiectul ActiveSheet sau colecţia Sheets. Toate aceste obiecte au metode şi proprietăţi comune, cum ar fi:

Metode: inserarea, copierea, mutarea, ştergerea sau tipărirea foilor;

Proprietăţi: numărul foilor dintr-un fişier, vizibilitatea unei foi, întreruperile de pagină orizontale sau verticale.

Referirea la o anumită foaie

a) Folosind numărul foii

Lista foilor unui fişier poate fi folosită pentru accesarea acesteia. Astfel, dacă dorim să accesăm prima foaie de calcul, comanda este Worksheets(1), pentru a doua Worksheets(2), etc. Similar se procedează şi pentru foile de grafic folosind Charts(1), Charts(2) etc. sau pentru foi de orice tip, cu Sheets(1), Sheets(2) etc. Exemplu: afişaţi în fereastra Immediate numele foilor Excel din fişierul curent (folosiţi comenzile ?Worksheets(nr_foaie).Name, ?Sheets(nr_foaie).Name şi ?Charts(nr_foaie).Name ).

b) Folosind numele foii

Un alt mod de referire la un fişier din VBA cel în care folosim direct numele foii:

Worksheets(“Sheet1”), Charts(“Grafic2”) sau Sheets(“Sheet4”). Exemplu: activaţi foaia Grafic3 din fereastra Immediate. (tastaţi comanda Charts (“Grafic3”).Activate)

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Exmplu:

Workbooks(“Book2.xlsx”).Activate)

activaţi

un

anumit

fişier

c) Folosind foaia activă

din

fereastra

Immediate.

tastaţi

comanda

Referirea la foaia activă se face cu ajutorul obiectulelor ActiveSheet (foaia de calcul sau grafic

activă)sau ActiveChart (foaia de grafic activă). Exemplu: afişaţi în fereastra Immediate numele foii active (folosiţi comanda ?Activesheet.Name).

Inserarea unei noi foi de calcul Metoda Add a colecţiilor Worksheets, Charts sau Sheets conduce la introducerea unei noi foi de calcul sau grafic. Foaia nou creată devine foaia activă. Sintaxa:

foaie.Add(Before, After, Count, Type)

unde:

foaie – o variabilă ce reprezintă o foaie (ex. sheets, worksheets sau charts) before un obiect ce reprezintă foaia înaintea căreia va fi inserată noua foaie (argument opţional) after – un obiect ce reprezintă foaia după căreia va fi inserată noua foaie (argument opţional) count – numărul de foi inserate (argument opţional) type – specifică tipul foilor inserate xlWorksheet (pentru foi de calcul), xlChart (pentru foi de grafic); valoarea implicită este xlWorksheet (argument opţional) Valoarea returnată: un obiect de tip worksheet sau chart ce desemnează noua foaie.

Exemple:

1)

Inseraţi o nouă foaie de calcul:

Worksheets.Add

2)

Inserarea unei noi foi de calcul înaintea foii Sheet3:

worksheets.Add before:=sheets("Sheet3")

sau

sheets.Add before:=sheets("Sheet3"), type:= xlWorksheet

3)

Inserarea unei noi foi de grafic după foaia Sheet1:

sheets.Add after:=sheets("Sheet1"), type:= xlChart

sau

charts.Add after:=sheets("Sheet1")

4)

Inserarea a două foi de calcul la sfârşit:

sheets.Add after:=sheets(sheets.count), type:= xlWorksheet

sau

worksheets.Add after:=sheets(sheets.count)

Redenumirea unei foi Schimbarea numelui unei foi presupune stabilirea unei valori pentru proprietatea Name a obiectului respectiv:

foaie.Name = nume_foaie

unde:

foaie un obiect de tip foaie de calcul sau grafic în Excel nume_foaie – noul nume pe care dorim să-l dăm foii, scris între ghilimele Exemplu:

1)

Modificaţi numele primei foi în Informatii:

Worksheets(1).Name=”Informatii”

2)

Modificaţi foii Chart1 în Evolutie cheltuieli:

Sheets(“Chart1”).Name=” Evolutie cheltuieli”

Ştergerea unei foi Ştergerea unei foi se face prin apelarea metodei Delete a obiectului respectiv:

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

foaie.Delete

unde:

foaie un obiect de tip foaie de calcul sau grafic în Excel Dacă pe foaie sunt informaţii, va apare o fereastră care vă va cere confirmarea ştergerii.

Exemplu: Ştergeţi foaia cu numele Informatii:

Sheets(“Informatii”).Delete

Ascunderea/afişarea unei foi Ascunderea/afişarea unei foi presupune folosirea proprietăţii Visible a obiectului respectiv. Putem verifica starea acestei proprietăţi, sau o putem modifica. Dacă stabilim valoarea True a proprietăţii visible, foaia va fi afişată, în timp ce valoarea False determină ascunderea foii. foaie.Visible = boolean

unde:

foaie un obiect de tip foaie de calcul sau grafic în Excel boolean valoarea True sau False Exemple:

1)

Foaia Evolutie cheltuieli este afişată?

2)

?Sheets(Evolutie cheltuieli).Visible Ascundeţi foaia Evolutie cheltuieli:

3)

Sheets(“Evolutie cheltuieli”).Visible = False Verificaţi faptul că foaia Evolutie cheltuieli este ascunsă:

4)

?Sheets(“Evolutie cheltuieli”).Visible Afişaţi foaia Evolutie cheltuieli:

Sheets(“Evolutie cheltuieli”).Visible = True

Copierea sau mutarea unei foi Pentru copierea sau mutarea foilor se folosesc metodele Copy, respectiv Move. Sintaxa:

foaie.Copy(Before, After) foaie.Move(Before, After)

unde:

foaie – o variabilă ce reprezintă o foaie (ex. sheets, worksheets sau charts) before – un obiect ce reprezintă foaia înaintea căreia va fi inserată noua foaie (argument opţional) after – un obiect ce reprezintă foaia după căreia va fi inserată noua foaie (argument opţional) Când folosiţi funcţia Copy sau Move, veţi folosi doar unul din argumentele before sau after, în caz contrar, Excel-ul va genera o eroare. Dacă nu specificaţi nici before, nici after, Excel va crea un fişier nou ce conţine foaia copiată sau mutată.

Exemple:

1)

Copiaţi foaia Evolutie cheltuieli la începutul foilor:

2)

Sheets(“Evolutie cheltuieli”).Copy Before:= Sheets(1) Mutaţi foaia Sheet2 la sfarsitul foilor:

3)

Sheets(“Sheet2”).Move after:=Sheets(Sheets.Count) Copiaţi foaia Evolutie cheltuieli după foaia Sheet2:

4)

Sheets(“Evolutie cheltuieli”).Copy After:= Sheets(“Sheet2”) Mutaţi foaia Evolutie cheltuieli într-un fişier nou:

5)

Sheets(“Evolutie cheltuieli”).Move Copiaţi foaia Sheet3 din fişierul curent în fişierul Book2, la început:

6)

Sheets(“Sheet3”).Copy Before:= Workbooks(“Book2”).Sheets(1) Mutaţi foaia Sheet1 din Book 2 în fişierul Book1, după foaia Sheet3:

Workbooks(“Book2”).Sheets(“Sheet1”).Copy After:= Workbooks(“Book1”).Sheets

(“Sheet3”)

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Vizualizarea unei foi înainte de tipărire Pentru a vizualiza o foaie înainte de tipărire se foloseşte metoda PrintPreview a obiectelor de tip foi. Sintaxa:

foaie.PrintPreview(EnableChanges)

unde:

foaie – o variabilă ce reprezintă o foaie (ex. sheets, worksheets sau charts) EnableChanges – True dacă doriţi ca marginile şi alte setări de pagină să poată fi efectuate, sau False în caz contrar. Valoarea implicită este True. (argument opţional)

Exemplu: Vizualizaţi foaia Sheet2 înainte de tipărire astfel încât utilizatorul să aibă posibilitatea de a modifica marginile paginii:

Sheets(“sheet2”).PrintPreview

Tipărirea unei foi Tipărirea unei foi se realizează cu ajutorul metodei PrintOut a obiectelor de tip foi Excel. Sintaxa:

foaie.PrintOut(From,

To,

Copies,

Preview,

ActivePrinter,

PrintToFile,

Collate, PrToFileName, IgnorePrintAreas)

unde:

foaie – o variabilă ce reprezintă o foaie (ex. sheets, worksheets sau charts) from – numărul de pagină de la care porneşte tipărirea; dacă acest argument este omis, tipărirea porneşte de la prima pagină (argument opţional) to – ultima pagină care se listează; dacă acest argument este omis, tipărirea se opreşte la ultima pagină (argument opţional) copies – numărul de exemplare tipărite; dacă argumentul e omis, se tipăreşte un exemplar (argument opţional) preview – True dacă dorim afişarea ferestrei PrintPreview înainte de tipărire sau False dacă vrem să trecem direct la tipărire (argument opţional) ActivePrinter – stabileşte numele imprimantei la care se face listarea; dacă argumentul nu e precizat, tipărirea se face la imprimanta implicită (argument opţional) PrintToFile True dacă dorim tipărirea în fişier, False în caz contrar. Dacă PrToFileName nu e precizat, va apare o fereastră ce va cere utilizatorului numele fişierului. Valoarea implicită este False. (argument opţional) Collate – True dacă dorim tipărirea în colaţionarea multiplelor exemplare. (argument opţional) PrToFileName – dacă PrintToFile e True, cu ajutorul acestui argument putem preciza numele fişierului în care facem tipărirea. IgnorePrintAreas – True pentru a ignora selecţia din PrintArea şi a tipări întegul obiect.

Exemple:

1)

Tipăriţi foaia Sheet1 la imprimanta implicită:

Sheets(“Sheet1”).PrintOut

2)

Tipăriţi paginile 2-4 din foaia Sheet2, în 2 exemplare colaţionate, la imprimanta implicită:

Sheets(“Sheet2”).PrintOut from:=2, to:=4, copies:=2, collate:=true

2.4 Lucrul cu domenii

Multe operaţii pe care le veţi efectua din VBA au la bază lucrul cu anumite celule sau domenii din foile de calcul. O celulă sau domeniu înseamnă în VBA un obiect Range. Obiectul Range face parte din obiectele conţinute în obiectul Worksheet (foaie de lucru). Referirea la un obiect Range în VBA se poate face mai multe moduri:

proprietatea Range a unui obiect Worksheet sau Range

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

proprietatea Cells a unui obiect Worksheet sau Range

proprietatea Offset a unui obiect Range

proprietăţile Rows şi Columns a unui obiect Worksheet sau Range

folosind celula activă (ActiveCell)

Adresarea unui domeniu cu ajutorul obiectului Range Sintaxa:

obiect.Range(cell1, cell2)

unde:

obiect un obiect de tip Worksheet; dacă nu se specifică, va fi folosit obiectul ActiveSheet cell1 – numele domeniului. Exemple: ”A1”, ”C2:D4”, ”C:F”, ”2:12” sau un nume definit în Excel. (argument obligatoriu) cell2 – celula din conlţul stânga sus sau dreapta jos a domeniului. (argument opţional)

Exemple:

1)

Introduceţi în celula A1 din foaia Sheet1, valoarea 10.5:

2)

Worksheets(“Sheet1”).Range(A1).Value = 10.5 Introduceţi în domeniul A3:C3 din foaia Sheet1, valoarea 100:

Worksheets("Sheet1").Range("A3","C3").Value = 100

sau

3)

Worksheets("Sheet1").Range("A3:C3").Value = 100 Introduceţi în celula D3 din foaia Sheet1, formula de însumare a celulelor A3:C3:

4)

Worksheets("Sheet1").Range("D3").Formula = "=sum(A3:C3)" Denumiţi celulele B4:C5 cu numele date. Cu autorul VBA scrieţi în domeniul date valoarea 250:

5)

Worksheets("Sheet1").Range("date").Value = 250 Introduceţi în celulele A5,A7,A9,C6,D8, valoarea 10:

6)

Worksheets("Sheet1").Range("A5,A7,A9,C6,D8") = 10 Introduceţi în celula activă valoarea 5:

ActiveCell.Value = 5

sau

7)

ActiveCell.Range("A1") = 5 Obs: Când folosim obiectul Range pentru celula activă, domeniul este considerat relativ faţă de această celulă, poziţia A1 desemnând celula activă. Introduceţi în celula din dreapta celulei active valoarea 20:

8)

ActiveCell.Range("B1") = 20 Introduceţi în celula din dreapta şi un rând mai jos faţă de celula activă valoarea 8:

9)

ActiveCell.Range("B2") = 8 Coloanele corespunzătoare domeniului "A2:C4"formataţi-le cu un font de culoare roşie.

Range("A2:C4").EntireColumn.Font.Color=RGB(255,0,0)

10) Rândurile corespunzătoare domeniului "A2:C4"formataţi-le cu un font de culoare verde.

Range("A2:C4").EntireRow.Font.Color=RGB(0,255,0)

11) Coloanele 2 şi 3 din domeniul "B2:F20" formataţi-le cu o culoare albastră pentru fundal.

Range("B2:F20").Columns("B:C").Interior.Color=RGB(0,0,255)

12) Rândurile 4 şi 5 din domeniul "B2:F20" formataţi-le cu o culoare galbenă pentru fundal.

Range("B2:F20").Rows("4:5").Interior.Color=RGB(255,255,0)

13) Regiunea curentă, în care se găseşte celula C3 va fi formatată cu o culoare roz.

Range("C3").CurrentRegion.Interior.Color=RGB(255,0,255)

14) În domeniul B3:F20 întroduceţi în subdomeniul format din rândurile 3- 4, coloanele 3-4 (relativ la domeniu iniţial), valoarea 222.

Range("B3:F20").Range("C3:D4").Value=222

Adresarea unui domeniu cu ajutorul proprietăţii Cells

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

O altă modalitatea de a adresa celule este cea folosind proprietatea Cells a obiectelor Worksheet sau Range. Rezultatul returnat de proprietatea Cells este un obiect de tip Range. Sintaxa:

obiect.Cells(rowIndex, columnIndex) obiect.Cells(cellIndex) obiect.Cells

unde:

obiect un obiect de tip Worksheet sau Range; dacă nu se specifică, va fi folosit obiectul ActiveSheet rowIndex – numărul rândului colIndex – numărul coloanei cellIndex – numărul celulei (prima celulă este A1, a doua celulă B1, etc)

Obs: dacă nu se precizează nici un argument pentru proprietatea Cells, instrucţiunea va returna toate celulele de pe foaie. Exemple:

1)

Introduceţi în celula D7 din foaia Sheet1, valoarea 2:

2)

Worksheets(“Sheet1”).Cells(7,4) = 2 Introduceţi în celula G1 din foaia Sheet1, valoarea 19:

Worksheets(“Sheet1”).Cells(7) = 19

sau

3)

Worksheets(“Sheet1”).Cells(1,7) = 19 Introduceţi în celula cu numărul 16385 (celula A2) din foaia Sheet1, valoarea 1000:

4)

Worksheets("Sheet1").Cells(16385) = 1000 Formataţi celulele de pe foaia Sheet1 cu un font de dimensiune 14:

5)

Worksheets("Sheet1").Cells.Font.Size = 14 Goliţi de conţinut toate celulele de pe foaia activă:

6)

ActiveSheet.Cells.ClearContents Introduceţi în celula activă valoarea 5:

ActiveCell = 5

sau

7)

ActiveCell.Cells(1,1) = 5 Obs: Când folosim proprietatea Cells a celulei active, aceasta este considerată ca fiind în colţul stânga sus a domeniului folosit, poziţia (1,1) desemnând celula activă. Introduceţi în celula din dreapta celulei active valoarea 20:

8)

ActiveCell.Cells(1,2) = 20 Introduceţi în celula din dreapta şi un rând mai jos faţă de celula activă valoarea 8:

9)

ActiveCell.Cells(2,2) = 8 Introduceţi în celula cu numărul 7 din domeniul A1:C6 valoarea 90:

Range("A1:C6").Cells(7) = 90 Obs: pozitia 7 în domeniul A1:C6, format din 3 coloane şi 6 rânduri este dat de celula A3.

10) Introduceţi în celula cu numărul 20 din domeniul A1:C6 valoarea 100:

Range("A1:C6").Cells(20) = 100 Obs: pozitia 20 în domeniul A1:C6, format 3 coloane x 6 rânduri = 18 celule, se găseşte în afara domeniului, dar Excel va număra în continuare câte 3 coloane pe rând, astfel încât poziţia 20 ajunge în celula B7.

Adresarea unui domeniu cu ajutorul proprietăţii Offset

Proprietatea Offset a obiectului Range returnează un obiect de tip Range. Spre deosebire de celelalte două variante de adresare, această proprietate este doar a obiectului Range. Proprietatea Offset are două argumente care corespund poziţiei relative faţă de colţul stânga sus a obiectului de tip Range.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Sintaxa:

obiect.Offset(rowOffset, columnOffset)

unde:

obiect un obiect de tip Range rowOffset – numărul rândului, relativ la colţul stânga sus a obiectului Range colOffset – numărul coloanei, relativ la colţul stânga sus a obiectului Range

Exemple:

1)

Introduceţi în celula activă valoarea 10:

ActiveCell.Value = 10

2)

3)

sau

ActiveCell.Offset(0,0) = 10 Obs: poziţia (0,0) corespunde celulei active, sau colţului din stânga sus a unui domeniu format dn mai multe rânduri sau coloane. Introduceţi în celula de deasupra şi din stânga celulei active valoarea 1:

ActiveCell.Offset(-1,-1)= 1 Obs: poziţia (-1,-1) corespunde celulei aflată un rând deasupra şi o coloană mai în stânga celulei active, dar, dacă celula activă se află pe primul rând, sau pe prima coloană a foii de calcul, o astfel de adresare va genera o eroare, deoarece Excel nu se poate deplasa în rânduri sau coloane inexistente. Translataţi cu 1 coloană şi două rânduri domeniul A2:D8 şi introduceţi valoarea 50:

Range("A2:D8").Offset(2,1) = 50

Adresarea unui domeniu cu ajutorul proprietăţilor Rows şi Columns

Proprietăţile Rows şi Columns a obiectelor de tip Worksheet sau Range returnează un obiect de tip Range. Sintaxa:

obiect.Rows(rowIndex)

obiect.Columns(columnIndex)

unde:

obiect – un obiect de tip Worksheet sau Range; dacă nu se specifică, va fi folosit obiectul ActiveSheet rowIndex – numărul rândului colIndex numele coloanei

Exemple:

1)

Stabiliţi ca rândul al 3-lea să aibă dimensiunea fontului de 14:

Rows(3).Font.Size = 14 Ştergeţi rândul 5:

2)

Rows(5).Delete

3)

4)

Formataţi coloana C astfel încât să aibă dimensiunea fontului de 10:

Columns("C").Font.Size = 10 Ştergeţi coloana E:

Columns("E").Delete

2.5

Formule

Mai toate formulele conţin adrese de celule. Referinţa la aceste celule poate fi făcută utilizând adrese relative (ex. A1), absolute ($A$1), mixte rând absolut (A$1), coloană absolută ($A1).

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Notaţia R1C1

În mod obişnuit, Excel-ul foloseşte notaţia A1, adică fiecare celulă e identificată cu ajutorul literei corespunzătoare coloanei şi a numărului corespunzător rândului. Pe lângă această notaţie, Excel foloseşte şi notaţia R1C1, unde R – rândul şi C – coloana. Astfel, R1C1 înseamnă $A$1, R2C1 e totuna cu $A$2, iar R3C7 este $G$3. Puteţi modifica modul de afişare, astfel încât să se folosească notaţia R1C1 din butonul Excel / Excel Options / Formulas şi bifaţi opţiunea R1C1 reference style. Veţi observa numerotarea cu numere a coloanelor, precum şi modificarea în noua notaţie a adreselor celulelor. Acest mod de adresare a celulelor este deosebit de util pentru adrese absolute. În cazul folosirii adreselor relative, se folosesc paranteze pentru a preciza numărul de rânduri sau coloane relativ la poziţia actuală. Astfel, R[-1]C[2] înseamnă celula aflată deasupra cu un rând (observaţi -1 după R) şi două coloane mai în dreapta (observaţi numărul 2 de după C). Obs: Atunci când nu se precizează nici un număr după R sau C, înseamnă că nu se modifică rândul sau coloana. De exemplu, dacă sunteţi în C2 (R2C3), următoarele formule au acelaşi efect:

 

Notaţia A1(standard)

Notaţia R1C1

 

=A1+1

=R[-1]C[-2]+1

=C1+1

=R[-1]C+1

=B2+1

=RC[-1]+1

=$A$1+1

=R1C1+1

=$A1+1

=R[-1]C1+1

=A$1+1

=R1C[-2]+1

=SUM(A1:A10)

=SUM(R[-1]C[-2]: R[8]C[-2])

=SUM($A$1: $A$10)

=SUM(R1C1:R10C1)

Folosirea notaţiei R1C1 în formule din VBA

Obiectul Range are proprietatea FormulaR1C1 ce se utilizează în calcule ce folosesc notaţia

R1C1.

Sintaxa:

obiect.FormulaR1C1

unde:

obiect un obiect de tip Range Proprietatea FormulaR1C1 stabileşte sau returnează formula utilizând notaţia R1C1.

Exemplu: În tabelul următor, folosiţi formule în notaţia R1C1 pentru a calcula Valoare, Valoare TVA, Valoare cu TVA şi Totalul pentru valoare, valoare TVA şi valoare cu TVA.

şi Totalul pentru valoare, valoare TVA şi valoare cu TVA. Secvenţa de comenzi este următoarea: a)

Secvenţa de comenzi este următoarea:

a) Calcul Valoare

Range("D4:D6").FormulaR1C1="=RC[-2]*RC[-1]"

b) Calcul Valoare TVA

Range("E4:E6").FormulaR1C1="=RC[-1]*R3C5"

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

c) Calcul Valoare cu TVA

Range("F4:F6").FormulaR1C1="=RC[-2]+RC[-1]"

d) Calcul Total pentru Valoare, Valoare TVA şi Valoare cu TVA

Range("D7:F7").FormulaR1C1="=R[-3]C+R[-2]C+R[-1]C"

sau

Range("D7:F7").FormulaR1C1="=sum(R[-3]C:R[-1]C)"

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

3. Instrucţiuni VBA

3.1 Variabile şi constante. Tipuri de date

Deseori în programe este necesară memorarea diverselor valori folosite în efectuarea calculelor. Limbajul VBA foloseşte variabile şi constante pentru stocarea temporară a valorilor folosite în timpul execuţiei programelor.

Variabila un loc în memoria RAM rezervat pentru memorarea unei valori. Orice variabilă are un nume (prin care se face referire la valoarea pe care o conţine variabila) şi un tip de dată (care determină felul datei pe care variabila o poate stoca).

Obs. Valoarea memorată într-o variabilă poate fi modificată pe parcursul execuţiei programului. Reguli (în folosirea variabilelor)

să înceapă cu o literă

să nu conţină . sau caractere speciale

să fie unice

să nu se folosească cuvinte rezervate

Constantele sunt valori care nu se modifică în timpul execuţiei programului.

Tipuri de date

Variabilele şi constantele se caracterizează prin nume şi tip. Tipul identifica felul datelor care pot fi memorate şi dimesiunea acestora (nr. de biţi).

Tip

Domeniu

Byte

0 şi 255

Boolean

True sau False

Integer

între -32.768 şi 37.767

Long

între -2.147.483.648 şi 2.147.483.647

Single

între -3.402823E38 şi –1.401298E-45 (pentru valori negative); între 1.401298E-45 şi 3.402823E38 (pentru valori pozitive)

Double

între -1,79769313486232E308 şi -4,94065645841247E-324 (negative val pentru valori negative); între 4,94065645841247E-324 şi 1,79769313486232E308 (pentru valori pozitive)

Currency

între -922.337.203.685.477,5808 şi 922.337.203.685.477,5807

Decimal

+/79.228.162.514.264.337.593.543.950.335 fără zecimale; +/7.9228162514264337593543950335 cu 28 de zecimale după virgulă

Date

Între 1.Ian. 100 şi 31.Dec. 9999

Object

Orice referinţă la un obiect

String (lungime variabilă)

Între 0 şi 2 miliarde de caractere.

String

Între 0 şi 65.400 caractere

(lungime fixă)

Variant

Orice valoare numerică din domeniul Double. Poate avea valori speciale, pecum Empty, Error, Nothing sau Null

(pentru numere)

Variant

Între 0 şi 2 miliarde de caractere.

(pentru numere)

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Declararea variabilelor

Declararea unei variabile se poate face explicit prin folosirea instrucţiunii Dim. Sintaxa:

Dim nume_variabila as TipDată Exemple:

Dim dobanda As Double Dim FinalProiect as Boolean Dim DataInceput As Date Dim varsta as Byte Dim cantitate as Integer Dim numprod As String Dim nume As String * 30 Obs: variabila nume e declarată ca un şir de 30 de caractere (lungime fixă), iar variabila numprod e declarată ca un şir de caractere variabil.

Obs. Declararea unei variabile se poate face şi implicit prin utilizarea variabilei în program. Totuşi, acest mod nu e recomandat, deoarece poate conduce uşor la erori sau confuzii în program.

Pentru a forţa declararea tuturor variabilelor utilizate, scrieţi în prima instrucţiune a modulelor VBA următoarea instrucţiune:

Option Explicit Când e prezentă această instrucţiune, VBA va da un mesaj de eroare ce indică faptul că variabilele nu sunt declarate.

Instrucţiunea de atribuire

Instrucţiunea de atribuire se foloseşte pentru a atribui unei variabile valoarea unei expresii. VBA utilizează semnul egal (=) pentru atribuire. Exemple:

Sintaxa

variabila expresie

Exemple: Pentru variabilele declarate mai sus, folosiţi următoarele instrucţiuni de atribuire. dobanda = 0.12 FinalProiect = False DataInceput = #5/21/2009# varsta = 27 cantitate = 500 numprod = "Calculator" nume = "Ion Popescu"

Declararea constantelor

O constantă se declară cu ajutorul sintagmei Const. Sintaxa:

Const nume_constanta as TipData = valoare_constanta

Exemple:

Const DataStart As Date = #1/8/2009# Const OraStart As Date= #12:00:00# Const trimestre as Integer = 4

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Const dobanda = .125, perioade= 12 Const titlu as String = "Budget" Obs: În cazul celui de-al patrulea exemplu, declararea constantelor dobanda şi perioada s-a făcut fără precizarea tipului de dată. VBA va determina tipul de dată din valoarea constantei.

Variabile de tip obiect

O variabilă de tip obiect se foloseşte pentru declararea şi utilizarea obiectelor de tip Range, Worksheet etc. Aceste variabile se declară cu Dim, iar atribuirea se face cu ajutorul sintagmei Set.

Exemplu:

Dim domeniu As Range Set domeniu = Range("A1:C5")

Tablouri (Array-uri)

Un tablou este un grup de elemente de acelaşi tip şi cu acelaşi nume. Pentru a vă referi la un anumit element din tablou, se foloseşte numele tabloului şi indicele acestuia. Sintaxa:

Exemplu: Declaraţi un tablou cu numele luni de 12 şiruri de caractere şi reţineţi numele lunilor în acesta.

Dim luni (1 To 12) as String luni(1) = ”ianuarie” luni(2) = ”februarie” luni(3) = ”martie” luni(4) = ”aprilie” luni(5) = ”mai” luni(6) = ”iunie” luni(7) = ”iulie” luni(8) = ”august” luni(9) = ”septembrie” luni(10) = ”octombrie” luni(11) = ”noiembrie” luni(12) = ”decembrie”

3.2 Funcţii cu interfaţa cu utilizatorul

Prelucrarea informaţiilor (date de intrare) de la utilizator şi afişarea rezultatelor (date de ieşire) sunt operaţii care apar frecvent în programe. In VBA aceste operaţii se pot face cu ajutorul unor funcţii speciale încorporate InputBox(), MsgBox() şi instrucţiunea MsgBox.

a) Funcţia InputBox

Permite introducerea de la tastatura a unor date izolate, prin intermediul unei casete de dialog. Informaţia introdusă în caseta de dialog este memorată în variabila specificată în stânga semnului

egal.

Sintaxa:

variabila InputBox(Prompt, Titlu)

Dacă se apasă OK, funcţia returnează valoarea tastată în caseta de dialog.

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Exemplu. Să se introducă numele unei persoane de la tastatură folosind funcţia InputBox. Dim nume As String nume = InputBox("Introduceti" & Chr(13) & "numele persoanei", "Introducere date")

"numele persoanei", "Introducere date") b) Instrucţiunea MsgBox Permite afişarea unui mesaj,

b) Instrucţiunea MsgBox Permite afişarea unui mesaj, într-o casetă de dialog, utilizatorul putând alege un buton din cele afişate.

Sintaxa:

 

MsgBox

prompt, [Butoane ], [ Titlu ]

unde:

prompt - textul afişat în casetă butoane - suma valorilor care specifică numărul şi tipul butoanelor afişate, şi tipul icoanei.

titlu -

titlul casetei

Tabel cu valorile butoanelor

 

Constante

Valoare

Elemente afişate, acţiune

VbOkOnly

0

Buton OK

 

VbOkCancel

1

Butoane OK şi Cancel

VbAbortRetryIgnore

2

Butoane Abort, Retry, Ignore

VbYesNoCancel

3

Butoane Yes, No, Cancel

VbYesNo

4

Butoane Yes, No

VbRetryCancel

5

Butoane Retry, Cancel

VbCritical

16

Icoana

X

VbQuestion

32

Icoana

?

VbExclamation

48

Icoana

!

VbInformation

64

Icoana

I

VbDefaultButton1

0

Primul buton este selectat implicit

VbDefaultButton2

256

Al doilea buton este selectat implicit

VbDefaultButton3

512

Al treilea buton este selectat implicit

VbDefaultButton4

768

Al patrulea buton este selectat implicit

Exemplu. Să se afişeze anul calendaristic cu ajutorul instrucţiunii MsgBox. Data curentă se obţine din data sistemului.

MsgBox "Anul curent " & Year(Now)

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

CURS EXCEL VBA INFOTIM ETA2U TRAINING CENTER Obs: - Funcţia NOW reprezintă data şi ora curentă

Obs:

- Funcţia NOW reprezintă data şi ora curentă

- Funcţia YEAR extrage anul dintr-o dată

- & permite concatenarea unor şiruri

c)

Funcţia MsgBox()

Permite în plus şi returnarea unei valori întregi a unei variabile, valoare care depinde de tipul butonului selectat de utilizator.

Sintaxa

Rasp = MsgBox

(Prompt, [Butoane ], [ Titlu ])

Diferenţa – parametrii se scriu între paranteze, iar răspunsul furnizat de butonul ales este implicat într-o structură alternativă.

Valorile returnate de funcţia MsgBox

 
 

Constante

Valoare

Descriere

VbOk

1

S-a ales Ok

VbCancel

2

S-a ales Cancel

VbAbort

3

S-a ales Abort

VbRetry

4

S-a ales Retry

VbIgnore

5

S-a ales Ignore

VbYes

6

S-a ales Yes

VbNo

7

S-a ales No

EXEMPLU. Să se afişeze o casetă de dialog care sa permită alegerea but. OK sau Cancel. Dacă s-a apăsat OK se afişează o casetă se dialog care afişează alegerea făcută.

Dim raspuns As Integer raspuns = MsgBox("Apasati un buton", vbOKCancel) MsgBox raspuns

un buton", vbOKCancel) MsgBox raspuns Dacă aţi apăsat Ok, rezultatul este: Teodora Frunză

Dacă aţi apăsat Ok, rezultatul este:

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

CURS EXCEL VBA INFOTIM ETA2U TRAINING CENTER 3.3 Utilizarea funcţiilor VBA În VBA există un număr

3.3 Utilizarea funcţiilor VBA

În VBA există un număr mare de funcţii implementate, care pot fi folosite în cod. În continuare vor fi tratate cele mai importante funcţii, tabelul complet al acestora fiind în anexa Funcţii VBA. Apelul acestor funcţii se face cu sintaxa:

vba.nume_functie sau, direct, nume_functie obiectul vba fiind implicit.

Funcţii de dată

Funcţiile Date, Time şi Now - returnează data curentă a sistemului, ora curentă a sistemului şi respectiv data şi ora curentă a sistemului. Sintaxa:

vba.Date vba.Time vba.Now Exemplu: Introduceţi în celula A1 data curentă, iar în B1 data şi ora curentă, iar în C1 ora curentă:

Range(“A1”).Value = vba.Date Range(B1”).Value = vba.Now Range(“C1”).Value = vba.Time

Funcţiile DateSerial şi TimeSerial - returnează data pentru anul, luna şi ziua specificate şi respectiv ora pentru ora, minutele şi secundele precizate. Sintaxa:

vba.DateSerial(year, month, day) vba.TimeSerial(hour, minute, second)

unde:

year – anul, exprimat ca număr întreg month – luna, exprimată ca număr întreg day – ziua, exprimată ca număr întreg hour – ora, exprimat ca număr întreg minute minutele, exprimate ca număr întreg second – secundele, exprimate ca număr întreg

Exemplu: Introduceţi în celula A1 data de 20.05.2009, iar în B1 ora 16:40:18:

Range(“A1”) = vba.DateSerial(2009, 5, 20) Range(“B1”) = vba.TimeSerial(16, 40, 18)

Funcţiile DateValue şi TimeValue convertesc un şir de caractere în dată, respectiv oră. Sintaxa:

vba.DateValue(string)

vba.TimeValue(string)

unde:

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

string – şir de caractere ce reprezintă o dată calendaristică

Exemplu: Introduceţi în celula A1 data de 20.05.2009, iar în B1 ora 12:35:

Range(“A1”) = vba.DateValue("01/06/2009") Range(“B1”) = vba.TimeValue("12:35")

Funcţiile Day, Month, Year – returnează ziua, luna sau anul din data precizată. Sintaxa:

vba.Day(data)

vba.Month(data)

vba.Year(data)

unde:

data data calendaristică, exprimată ca număr, obiect de tip Date sau şir de caractere Exemplu: Introduceţi în celulele A1, B1, C1 introduceţi ziua, luna şi anul pentru data de

25.08.2003:

Range(“A1”) = vba.Day("25/08/2003") Range(“B1”) = vba.Month("25/08/2003") Range(“C1”) = vba.Year("25/08/2003")

Funcţii de text

Funcţiile UCase şi LCase – returnează textul dintre paranteze în majuscule şi respectiv minuscule. Sintaxa:

vba.UCase(string)

vba.Month(string)

unde:

string – şir de caractere Exemplu: În celula B6 e scris textul IOnEscu. Transformaţi textul în majuscule. Scrieţi în celula C6 textul cu minuscule Range("B6") = vba.UCase(Range("B6")) Range("C6") = vba.LCase(Range("B6"))

Funcţiile Left, Right şi Mid – returnează porţiuni dintr-un text. Left returnează caractere din stânga şirului de caractere, Right returnează caractere din dreapta şirului, iar Mid din mijloc. vba.Left(string, number) vba.Right(string, number) vba.Mid(string, start, lenght)

unde:

string – şir de caractere number – număr de caractere extrase start – numărul caracterului de unde începem extragerea lenght – numărul de caractere extrase

Exemplu: În celula A1 e scris codul Mo101LCD. Din acest cod, în celula B1extrageţi primele 2 caractere, ce reprezintă tipul produsului, în C1 – ultimele 3 caractere ce reprezintă subtipul produsului, iar în D1 numărul ce reprezintă lotul din care face parte produsul. Range("B1")= vba.Left(Range("A1"), 2) Range("C1")= vba.Right(Range("A1"), 3) Range("D1")= vba.Mid(Range("A1"), 3,3)

Funcţia Str – converteşte un număr în text . Sintaxa:

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

vba.Str(number)

unde:

number – numărul ce trebuie convertit

Exemplu: vba.Str (123) returnează textul 123.

Funcţia Val – converteşte un text în număr. Sintaxa:

vba.Val(string)

unde:

string – şir de caractere ce reprezintă un număr

Exemplu: vba.Val("123") returnează numărul 123.

Funcţia Format – returnează Variant(String) ce conţine expresia formatată corespunzător Sintaxa:

Format(expresie [, format [, prima_zi_din_saptamana[, prima_sapt_din_an]]])

unde:

expresie – orice expresie validă format – formatul ce trebuie aplicat (argument opţional) prima_zi_din_saptamana – o constantă ce specifică prima zi din săptămână; variantele disponibile sunt în tabelul de mai jos (argument opţional) prima_sapt_din_an – o constantă ce precizează care se consideră prima zi din săptămână; variantele disponibile sunt în tabelul de mai jos (argument opţional)

Argumentul prima_zi_din_saptamana poate avea următoarele valori:

Constanta

Valoare

Descriere

vbUseSystem

0

Foloseşte setările sistemului

VbSunday

1

Duminica (implicit)

vbMonday

2

Luni

vbTuesday

3

Marţi

vbWednesday

4

Miercuri

vbThursday

5

Joi

vbFriday

6

Vineri

vbSaturday

7

Sâmbătă

Argumentul prima_sapt_din_an poate avea următoarele valori:

Constanta

Valoare

Descriere

vbUseSystem

0

Foloseşte setările sistemului

vbFirstJan1

1

Prima saptămână e considerată cea în care e 1 Ianuarie (valoare implicită)

vbFirstFourDays

2

Prima saptămână e considerată cea în care sunt cel puţin patru zile din noul an.

vbFirstFullWeek

3

Prima saptămână e considerată cea în care toate zilele sunt din noul an.

Observaţii:

- Pentru a formata numere folosiţi formate numerice predefinite, sau creaţi propriile formate.

- Pentru a formata data calendaristică sau ora, folosiţi formate de dată/oră predefinite, sau creaţi propriile formate

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

- Pentru a formata data calendaristică sau ora disponibile ca număr serial, folosiţi formate de dată/oră predefinite, sau formate numerice

- Pentru a formata texte, creaţi propriile formate

Formate predefinite pentru dată/oră:

Nume format

Descriere

General Date

Afişează data şi / sau ora. De ex. 12/04/2009 13:17:54

Long Date

Afişează data în formatul lung corespunzător setărilor sistemului. De ex. 13 iunie 2009

Medium Date

Afişează data folosind varianta mijlocie, funcţie de limba stabilită pentru sistem. De ex.

13-iun-2009

Short Date

Afişează data în formatul scurt corespunzător setărilor sistemului. 15/04/2009

Long Time

Afişează ora în formatul lung corespunzător setărilor sistemului. De ex. 14:20:17

Medium Time

Afişează ora în formatul mediu de 12 ore (ore şi minute) şi indicatorul AM/PM corespunzător. De ex. 11:57 PM.

Short Time

Afişează ora folosind formatul de 24 ore (ore şi minute). De ex. 14:30.

Formate numerice predefinite:

Nume format

Descriere

General Number

Afişează numărul fără separator de mii.

Currency

Afişează numărul cu separator de mii, dacă e cazul. Afişează două zecimale după virgulă. Afişează simbolul monetar funcţie de setările locale ale sistemului

Fixed

Afişează cel puţin o cifră în stânga virgulei şi două zecimale .

Standard

Afişează numărul cu separator de mii, cel puţin o cifră înaintea virgulei şi două zecimale.

Percent

Înmulţeşte numărul cu 100 şi afişează semnul % în dreapta. Afişează două zecimale.

Scientific

Utilizează notaţiile ştiinţifice.

Yes/No

Afişează No dacă numărul e 0 şi Yes în caz contrar.

True/False

Afişează False dacă numărul e 0 şi True în caz contrar.

On/Off

Afişează Off dacă numărul e 0 şi On în caz contrar.

În tabelele următoare aveţi la dispoziţie codurile de fotmat pentru a vă crea propriile formatări:

- Date calendaristice: d codul pentru ziua, m –codul pentru lună, y – codul pentru an

Pentru a afişa

Utilizaţi acest cod

Luni sub forma 112

m

Luni sub forma 0112

mm

Luni sub forma IanDec

mmm

Luni sub forma IanuarieDecembrie

mmmm

Luni sub forma primei litere a lunii

mmmmm

Zile sub forma 131

d

Zile sub forma 0131

dd

Zile sub forma DS

ddd

Zile sub forma Duminică–Sâmbătă

dddd

Ani sub forma 0099

yy

Ani sub forma 19009999

Yyyy

Trimestrul sub forma unui număr între 1 şi 4

q

- Timp: h – codul pentru oră, m –codul pentru minut, s – codul pentru secundă

Pentru a afişa Utilizaţi acest cod
Pentru a afişa
Utilizaţi acest cod

CURS EXCEL VBA

INFOTIM ETA2U TRAINING CENTER

Ore sub forma 023

H

Ore sub forma 0023

hh

Minute sub forma 059

m

Minute sub forma 0059

mm

Secunde sub forma 059

s

Secunde sub forma 0059

ss

- Numere : Pentru a stabili formatul numerelor cu zecimale, includeți într-o secțiune următoarele argumente formale pentru cifre. Dacă un număr are mai multe cifre la dreapta separatorului zecimal decât argumente formale în formatul respectiv, numărul se rotunjește la atâtea zecimale câte argumente formale există. Dacă există mai multe cifre la stânga separatorului zecimal decât există argumente formale, se afișează cifrele suplimentare. Dacă formatul conține numai semne de număr (#) la stânga separatorului zecimal, numerele mai mici decât unu încep cu un separator zecimal.

o

# afişează numai cifrele semnificative şi nu afişează zerouri nesemnificative.

o

0 (zero) afişează zerourile nesemnificative, dacă un număr are mai puţine cifre decât numărul de zerouri existente în format.

o

? adaugă spaţii pentru zerouri nesemnificative în oricare parte a separatorului zecimal, astfel încât separatorul zecimal să se alinieze.

o

% determină înmulţirea numărului cu 100 şi afişarea simbolului %

o

Pentru a afișa atât textul cât și numerele într-o celulă, încadrați caracterele textului în ghilimele (" "). Includeți caracterele într-o secțiune corespunzătoare de coduri format. De exemplu, tastați formatul 0,00 LEI" Surplus";0,00 LEI" Lipsă" pentru a afișa o sumă pozitivă ca „25,74 LEI Surplus” și o sumă negativă ca „125,74 LEI Lipsă”.

Pentru a afişa

Utilizaţi acest cod

1234,59 sub forma 1234,6

####,#