Documente Academic
Documente Profesional
Documente Cultură
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