aplicatii visual basic
TRANSCRIPT
-
8/12/2019 Aplicatii Visual Basic
1/7
Laborator 11 PCLP2
1
Utilizare Visual Basic for Applications (VBA)n Excel
1. Exemplu de creare i rularea 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 nregistrriiunei
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 Modulnou 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 patrucomenzi realizeaz introducerea automat a unor valori n celulele A1,
A2, B1 i B2, iar ultimele douseteaz culoarea textului i culoarea de fundalpentru celulele titlu.
Rularea macrocomenzii poate fi realizat cu ajutorul comenzii Run Sub/UserForm din meniul
Run, plasnd mai nti cursorul n interiorul subrutinei.
-
8/12/2019 Aplicatii Visual Basic
2/7
Laborator 11 PCLP2
2
Figura 2
Figura 3
Figura 4
-
8/12/2019 Aplicatii Visual Basic
3/7
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, cti 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
-
8/12/2019 Aplicatii Visual Basic
4/7
-
8/12/2019 Aplicatii Visual Basic
5/7
Laborator 11 PCLP2
5
Adugai un buton cu denumirea Adauga n prima foaie de calcul. Creai omacrocomand care adaug o nregistrare n tabelul creat automat i asociai-o butonului
Adauga.Executai macrocomanda.
Realizai un formularde adugare cri, similar celui din Figura 9.Modificai coninutulmacrocomenzii 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 iInteger.
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
-
8/12/2019 Aplicatii Visual Basic
6/7
Laborator 11 PCLP2
6
Exemple:
Pentru realizarea unor modificri condiionate ale celulelor se va utiliza instruciunea IF, care are
forma:
IfconditieThen
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 oformatare a tabelului cu cri similar celei din Figura 11.
DimcellAs Range
For EachcellInRange("C1:C20")
cell.Value = 50Nextcell
DimiAs Integer
Fori = 1 To6
Cells(i, 1).Value = 100Nexti
-
8/12/2019 Aplicatii Visual Basic
7/7
Laborator 11 PCLP2
7
Figura 10