Sunteți pe pagina 1din 6

Macrodefintiile reprezinta functii definite de utilizator pentru a automatiza o serie de operatii cu grad

ridicat de utilizare.
Utilizarea macrodefiniitiilor trebuie precedata de stabilirea nivelului de securitate in cadrul aplicatiei
Excel. Astfel aplicatia permite rularea de macrodefinitii care nu sunt semnate si autentificate de catre
producator. Pentru a modifica nivelul de securitate se deschide meniul Tools > Macro > Security si
se alege nivelul Low sau Medium.
Cel mai simplu mod de a crea o macrodefinitie este de a inregistra operatia efectuata de catre utilizator.
Aplicatia Excel permite acest lucru prin optiunea Tools > Macro > Record New Macro.
Figura 1 descrie parametrii ce trebuie definiti la inregistrarea unei macrodefinitii noi.

Figura 1. Definirea parametrilor unei macrodefinitii inregistrate.

Odata intrat in modul de inregistrare, lucru indicat de aparitia barei de Stop,


executa operatiile de inclus in macrodefinitie.

, utilizatorul

In aceasta etapa trebuie acordata atentie scopului macrodefinitiei. Daca se doreste inregistrarea unei
operatii cu caracter general care sa fie aplicata oricarei alte selectii de celule, atunci utilizatorul trebuie
sa evite selectia de celule sau foi de lucru in momentul inregistrarii macrodefinitiei, deoarece aceasta va
fi aplicata la executie tot pe acelasi set de celule. Din acest motiv, anterior realizarii macrodefinitiei este
indicat ca utilizatorul sa selecteze celula asupra careia va aplica operatiile cu caracter general.
Pentru exemplul luat in considerare, macrodefinita Formatare, se selecteaza anterior momentului de
start al inregistrarii oricare celula din foaia de lucru. Inregistrarea va contine doar operatiile de centrare a
valorii celulei, precum si cele de aplicare a efectelor bold si italic.
Se observa din figura 2 ca s-a asociat macrodefinitiei si un short-cut Ctrl+Shift+F care sa permita
executia rapida a acesteia prin intermediul tastaturii.
Pentru a vizualiza sau modifica codul din spatele macrodefinitiei se deschide biblioteca de macrodefinitii
asociata registrului de lucru curent prin optiunea Tools > Macro > Macros.

Figura 2. Colectia de macrodefinitii din registrul de lucru.


Pentru macrodefinita Formatare codul inregistrat este:

Sub Formatare()
'
' Formatare Macro
' Formatare celule prin centrare text si aplicare efecte de tip bold, italic.
'
' Keyboard Shortcut: Ctrl+Shift+F
'
With Selection
.HorizontalAlignment = xlCenter 'Efect centrare
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Font.Bold = True 'Efect bold
Selection.Font.Italic = True 'Efect italic
End Sub
Din codul descris anterior se observa ca macrodefinitia este o functie scrisa in Visual Basic.
Se defineste functia utilizator numita PrimaCraciun ce ofera angajatilor unei firme, un bonus a carui
valoarea este determinata in functie de nivelul salariului, vechime si numarul de copii.
Editarea functiei se realizeaza prin intermediul editorului Visual Basic atasat aplicatiei Excel. Deschiderea
acestuia se realizeaza prin Tools > Macro > Visual Basic Editor, figura 3.

Figura 3. Mediul de lucru din Visual Basic Editor.


Inainte de a declara functiile utilizatorului, trebuie definit un modul care sa contina aceste functii. Pentru
aceasta se insereaza in proiect un modul de functii prin Insert > Module din meniul Editorului Visual
Basic.
In zona de cod a acestuia se defineste functia PrimaCraciun() al carui cod este:

Function PrimaCraciun(salariu, vechime, numarCopii, primaCopil)


If vechime < 10 Then
PrimaCraciun = 0.1 * salariu
Else
If vechime >= 10 And vechime < 15 Then
PrimaCraciun = 0.15 * salariu
Else
spor = 0.25 * salariu
End If
End If
PrimaCraciun = PrimaCraciun + numarCopii * primaCopil
End Function
Dupa cum se observa salariatul primeste o prima de craciun egala cu sporul de vechime plus o prima
acordata pentru fiecare copil al acestuia.
Sporul de vechime este egal cu 10% din salariu de baza daca salariatul are o vechime mai mica de 10
ani, 15% pentru o vechime mai mica de 15 ani si 25% pentru o vechime mai mare de 15 ani.
Macrodefinitiile sunt accesibile in interiorul registrului de lucru prin intermediul optiunii Insert >
Function si apoi selectand categoria de functii User Defined.

Figura 4. Inserarea unei functii utilizator.

De asemenea, utilizatorul are posibilitatea de a crea si utiliza formulare de controale prin intermediul
carora sa insereze aplicatii VBA in Excel. Pentru a exemplifica se considera formularul ce permite:

inserarea a doua valori;

adunarea, respectiv, scaderea valorilor cu afisarea rezultatului;

inserarea rezultatului operatiei in celula activa din foaia de lucru;

inchiderea formularului.

Pentru a realiza acest lucru, in Editorul Visual Basic:


1.

se insereaza un formular care sa contina controalele prin intermediul carora sa fie citite valorile
de la tastatura, sa fie aleasa operatia si sa fie afisate rezultatele; formularul este descris in figura5;
formularul este creat prin optiunea Insert > UserForm a meniului editorului VisualBasic;

Figura 5. Generarea unui formular de catre utilizator.


1.

din caseta de controale predefinite, ToolBox, se pun pe formular componentele necesare


realizarii operatiilor, figura 6.

Figura 6. Formular utilizator.


1.

se adauga cod Visual Basic pentru cele patru butoane existente in formular; definirea codului
pentru diferitele componente din formular se face realizand cu mouse-ul dublu clic pe elementul
respectiv; in fereastra de cod devenita vizibila, figura 7, se scriu secventele de cod asociate
operatiilor dorite; se observa ca editorul Visual Basic asociaza implicit o functie fiecarei
componente, pentru butoane selectand functia aferenta evenimentului de selectie a butonului;

Figura 7. Editorul de cod din Visual Basic.


1.

pentru butonul de adunare, numit CommandButton1, se adauga functia:

Private Sub CommandButton1_Click()


suma = Int(TextBox1) + Int(TextBox2)
TextBox3 = suma
End Sub

se observa ca numele TexBox-ului aferent primei valori se numeste TextBox1, pentru ce de-a doua
valoarea se numeste TextBox2 si rezultatul este trecut in TextBox3;
pentru butonul de scadere, numit CommandButton3, se adauga functia:

Private Sub CommandButton3_Click()


diferenta = Int(TextBox1) - Int(TextBox2)
TextBox3 = diferenta
End Sub
pentru butonul de inchidere a formularului, numit CommandButton2, se adauga functia:

Private Sub CommandButton2_Click()


UserForm1.Hide
End Sub

pentru butonul de salvare a rezultatului in celula activa a foii de lucru curente, butonulCommandButton4,
codul functiei este:

Private Sub CommandButton4_Click()


Application.ActiveCell.Value = Int(TextBox3)
With ActiveCell.Font
.Bold = True
.Italic = False
.Color = RGB(255, 0, 0)
End With
End Sub
ultima functie pune valoarea rezultatului in celula activa si formateaza aceasta celula.
Odata creat formularul si definite rutinele din spatele componentelor sale, acesta trebuie sa fie activat
din foaia de lucru pentru a permite utilizarea sa; pentru acest lucru se insereaza in foaia de lucru curenta
un buton care sa deschida formularul construit anterior:

1.

in foaia de lucru curenta se activeaza bara de controale, View > Toolbars > Control

ToolBox,
butonul

, sau din bara de editare Visual Basic se selecteaza


;

2.

se insereaza in foaia de lucru un control de tip CommandButton;

3.

prin butonul

din bara Control ToolBox se deschide pagina de proprietati a butonului creat si

se modifica valoarea proprietatii Caption in FORMULAR;


4.

se defineste codul asociat butonului; pentru a deschide editorul de cod fie se executa dublu clic
pe buton fie se selecteaza butonul View Code,

5.

, din bara Control ToolBox;

codul butonului este

Private Sub CommandButton1_Click()


UserForm1.Show
End Sub
1.

se iese din modul editare, deselectand butonul

, din bara Control ToolBox sau Visual

Basic;
2.

se selecteaza celula in care sa fie inserata noua valoare;

3.

se activeaza formularul;

4.
se salveaza rezultatul operatiei in celula activa.
Figura 8 descrie seria de sapte etape ce trebuie realizate pentru a implementa in foia de lucru Excel
formularul utilizatorului.

Figura 8. Implementarea formular utilizator in foaia de lucru.