Sunteți pe pagina 1din 7

Laborator 11 PCLP2

1


Utilizare Visual Basic for Applications (VBA) n Excel

1. Exemplu de creare i rulare a unei macrocomenzi VB n Excel
Macrocomenzile sunt secvene de cod care permit, n forma cea mai simpl, automatizarea unor
task-uri de prelucare/formatare a informaiilor din celule. Pe lng posibilitatea nregistrrii unei
macrocomenzi, cu ajutorul comenzii Record Macro (utilizat n laboratorul anterior), Excel permite
i scrierea manual a codului macrocomenzii, n cadrul unui editor Visual Basic.
Deschiderea editorului Visual Basic se realizeaz cu ajutorul comenzii Visual Basic din cadrul
tab-ului Developer, de pe bara panglic a programului MS Excel (Figura 1). Dac tab-ul
Developer nu este vizibil, se va activa cu ajutorul opiunii Show Developer tab in the Ribbon, cum
este indicat n Figura 2.
Figura 1
Dup deschiderea editorului VB se va crea un Modul nou pentru macrocomenzi, cum este indicat
n Figura 3. Macrocomenzile se vor introduce n forma unor subrutine VB, ncadrate de cuvintele
cheie Sub ... End Sub. n Figura 4 este prezentat un exemplu de subrutin, denumit firstMacro.
Comanda Worksheets.Add din cadrul subrutinei firstMacro creeaz o foaie de calcul (sheet)
nou, urmtoarele patru comenzi realizeaz introducerea automat a unor valori n celulele A1,
A2, B1 i B2, iar ultimele dou seteaz culoarea textului i culoarea de fundal pentru celulele titlu.
Rularea macrocomenzii poate fi realizat cu ajutorul comenzii Run Sub/UserForm din meniul
Run, plasnd mai nti cursorul n interiorul subrutinei.
Laborator 11 PCLP2

2


Figura 2


Figura 3



Figura 4



Laborator 11 PCLP2

3

O alt modalitate de rulare a macrocomenzii este cu ajutorul unui control grafic de tip Buton,
inserat n cadrul unei foi de calcul Excel. La adugarea butonului (de tipul Form Control), se va
realiza asocierea acestuia cu macrocomanda dorit (Figura 5).

Figura 5

Implementai macrocomanda exemplificat i executai-o, att din cadrul editorului VB, ct
i cu ajutorul unui buton dintr-o foaie de calcul Excel. Salvai documentul.

Observaie. Salvarea unui document Excel care include macrocomenzi se realizeaz alegnd
formatul Excel Macro-Enabled Workbook, alegerea formatului de baz (Excel Workbook)
determinnd tergerea macrocomenzilor.

2. Adresarea celulelor
Celulele pot fi adresate (n vederea modificrii sau citirii coninutului lor) prin specificarea absolut
a poziiei (linia i coloana), sau prin indicarea unui offset (sau deplasament) fa de o alt celul.
Secvena de cod din Figura 6 exemplific trei moduri de adresare absolut a celulelor.

Figura 6
Laborator 11 PCLP2

4

Modificai macrocomanda firstMacro aa nct n foaia de calcul nou s fie creat un tabel
similar celui din Figura 7. Redimensionarea coloanelor poate fi realizat cu ajutorul funciei
AutoFit (ex. Columns("A").AutoFit)


Figura 7

VBA permite determinarea automat a sfrtului unei liste, n vederea adugrii unei nregistrri
la aceasta. n Figura 8 este exemplificat modul de adugare a unei nregistrri la sfritul unui
tabel. Prima instruciune permite selectarea foii de calcul n care se va aduga nregistrarea. A
doua instruciune realizeaz selectarea ultimei celule din tabel (din partea de jos), de pe coloana
B. n gsirea ultimei celule se pornete de la o celul care face parte din tabel i are o poziie
cunoscut.
A treia comand selecteaz urmtoarea celul n jos, adic prima liber. Funcia Offset primete
ca argument numrul de linii i coloane cu care se consider deplasarea fa de celula curent. A
patra instruciune calculeaz i seteaz ID-ul noii nregistrri, iar ultima adaug titlul crii.

Figura 8

Laborator 11 PCLP2

5

Adugai un buton cu denumirea Adauga n prima foaie de calcul. Creai o
macrocomand care adaug o nregistrare n tabelul creat automat i asociai-o butonului
Adauga. Executai macrocomanda.

Realizai un formular de adugare cri, similar celui din Figura 9. Modificai coninutul
macrocomenzii creat anterior aa nct s preia titlul crii, autorul i anul din formular.

Not. Informaiile despre carte pot fi stocate temporar n variabile de tipul String i Integer.
Exemplu: Dim Titlu as String 'declarare variabila
Titlu = Range("C4").Value


Figura 9

3. Iterare pe celule
Iterarea celulelor poate fi realizat cu ajutorul buclei FOR, disponibil n dou variante:
For ... Next
For Each ... In ... Next




Laborator 11 PCLP2

6

Exemple:


Pentru realizarea unor modificri condiionate ale celulelor se va utiliza instruciunea IF, care are
forma:
If conditie Then
instruciuni
End If

n continuare este prezentat o macrocomand pentru parcurgerea liniilor unui tabel i
formatarea diferit a liniilor pare de cele impare. nainte de rularea macrocomenzii este necesar
selectarea (activarea) primei celule din tabel.
Sub format()

Dim i, primalinie, ultimalinie, primacol, ultimacol As Integer

primacol = ActiveCell.Column 'coloana celulei active
ultimacol = ActiveCell.End(xlToRight).Column 'ultima coloana

primalinie = ActiveCell.Row
ultimalinie = ActiveCell.End(xlDown).Row

For i = primalinie + 1 To ultimalinie
If i Mod 2 = 0 Then
Range(Cells(i, primacol), Cells(i, ultimacol)).Select
Selection.Interior.Color = rgbBeige
End If
Next i

End Sub


Pornind de la codul prezentat ca exemplu realizai o macrocomand care s realizeze o
formatare a tabelului cu cri similar celei din Figura 11.
Dim cell As Range

For Each cell In Range("C1:C20")
cell.Value = 50
Next cell


Dim i As Integer

For i = 1 To 6
Cells(i, 1).Value = 100
Next i


Laborator 11 PCLP2

7


Figura 10

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