Documente Academic
Documente Profesional
Documente Cultură
VBA
Cuprins
O introducere n programare3
Macrocomenzi5
nregistrarea unei macrocomenzi VBA5
Rezumat10
Editorul VBA11
Lansarea editorului VBA11
Mediul de editare VBA11
Module VBA13
Proceduri13
Identificarea modulelor15
Rularea modulelor16
Save i Open pentru aplicaiile Office i modulele asociate16
Sistemul de asisten la scrierea codului16
Formulare VBA18
Crearea unui formular18
Rularea unui formular18
Proprietile formularului19
Rezumat21
Constante i variabile27
Constante27
Variabile28
Instruciunea de atribuire29
Liste (arrays) de variabile30
Liste dinamice30
Aplicaii31
Funcia Format33
Funcii matematice34
Funcii financiare34
Funcii pe iruri de caractere36
Funcii pentru dat calendaristic i timp37
Funcii pentru conversii37
Funcii pentru testarea tipului de date37
Aplicaii38
Structurile de control42
Aplicaii48
Module VBA51
Variabile locale (private) 51
Variabile publice (globale) 51
Variabile private52
Formulare VBA60
Formulare (form-uri) 60
Proprieti i metode61
Proprietatea Caption62
Proprietatea StartUpPosition63
Proprietatea Height i Width63
Proprietile ForeColor i BackColor64
Utilizarea controalelor64
65
65
68
70
72
73
74
77
79
80
O introducere n programare
O introducere n programare
Un program de calculator este o list de instruciuni care spun unui calculator ce
sarcini are de ndeplinit. Calculatorul ruleaz instruciunile pn cnd ajunge la sfritul
programului. Fiecare linie dintr-un program este, de obicei, o singur comand pe care
calculatorul trebuie s o execute, cum ar fi adunarea a dou numere. Cu o succesiune
de comenzi calculatorul poate realiza mai multe: bilanul unui carnet de cecuri, tiprirea
unui document, desenarea de imagini.
Programul de calculator (program surs) poate fi scrise n limbaje diferite.
Calculatoarele neleg numai limbajul main (program obiect) un ir de bii. Limbajele
de programare ca BASIC (limbaj procedural simplu, creat n 1964) permit oamenilor s
scrie programe ntr-un limbaj asemntor limbii engleze. Unele limbaje de calculator,
cum ar fi cteva versiuni de BASIC, convertesc treptat un program n limbajul main,
pe msur ce programul ruleaz, folosind ceea ce se numete interpretor. Alte limbaje,
cum ar fi Pascal i C, folosesc un compilator pentru a converti integral programul,
nainte de a-l rula. Un compilator transform programul ntr-un fiier executabil (.exe)
care poate fi rulat n mod direct. Cu cteva excepii, majoritatea limbajelor de
programare ale calculatoarelor sunt nsoite de un compilator. n orice caz, toate
programele pot s fie citite de oameni i trebuie s fie convertite n limbaj main,
pentru a putea fi interpretate de calculator.
Exist multe limbaje de programare: Pascal, C, Fortran, Oracle, FoxPro, Java, Basic.
La fel, exist multe versiuni ale limbajului Basic. Versiunile mai vechi de DOS (dinainte de
5.0) aveau o versiune de Basic inclus, numit GW-Basic. Versiunile mai noi de DOS
includ QBasic. Toate aceste pachete de programe permit crearea programelor de
calculator cu BASIC, dar ele implementeaz limbajul BASIC puin diferit. n Windows
este implementat limbajul Visual Basic care permite scrierea unor aplicaii Windows.
Adesea, numele limbajului BASIC este ortografiat cu litere mici (Basic). Cu toate
acestea, BASIC i-a fcut de fapt debutul ca un acronim, reprezentnd prescurtarea de
la Beginner's All-purpose Symbolic Instruction Code (codul de instruciuni simbolice
generale pentru nceptori). Ca limbaj de programare, Visual Basic este un dialect BASIC.
El este logic, seamn cu limba englez i este uor de neles. Fiind un mediu de
programare vizual, acesta permite programatorilor s asambleze vizual programul,
ntr-o fereastr, folosind componentele dintr-o cutie cu instrumente (toolbox) utile
pentru realizarea aplicaiilor. Printre aceste instrumente se includ: un editor de texte
pentru scrierea programului surs, un compilator pentru limbaj i alte faciliti pentru
testarea i verificarea aplicaiei (de natura depanatoarelor).
O introducere n programare
Semnificaie
Observaii
Indicaii, meniuni
Aplicaii
Rezumat
le
Macrocomenzi
Macrocomenzi
Limbajul Visual Basic for Applications (VBA), integrat n editoarele din familia
Microsoft Office (Word, Excel, PowerPoint, Acces, Outlook), constituie un mediu de
programare puternic, asemntor celui din Visual Studio (Visual Basic, C++, Java,
etc.). Acest limbaj de programare poate fi utilizat pentru:
nregistrarea aciunilor utilizatorului (de exemplu: introducerea i formatarea unui
text, rularea unor comenzi de meniu, lansarea opiunilor din casetele de dialog
etc.) prin transpunerea lor n secvene de instruciuni Basic, care definesc un
script numit macrocomand;
gestionarea coninutului documentului Office, cu care VBA-ul poate comunica;
dezvoltarea unor programare independente de coninutul documentului Office
(este necesar deschiderea, cel puin formal, unei aplicaii Word, Excel, etc.).
O macrocomand (apelat printr-o comand de meniu, apsarea unei taste sau a
unui buton dintr-o bar de instrumente) reprezint o list de instruciuni - instruciuni
de macrocomand (macro statements). Unele instruciuni execut operaii specifice
macrocomenzii, ns cele mai multe corespund aciunilor nregistrate ale utilizatorului.
Este, astfel, posibil automatizarea activitilor de rutin sau repetitive i derularea lor,
prin lansarea macrocomenzilor.
Mediul de programare abordat este Visual Basic for Applications inclus n Microsoft
Office 2007 dar, informaiile sunt, n general, valabile i pentru suita Office 2003.
Acesta conine un instrument complet de dezvoltare VBA, numit Visual Basic
Editor.
nregistrarea unei macrocomenzi VBA
Cea mai simpl metod de creare a unei macrocomenzi este
utilizarea resursei Macro Recorder. Prin aceast metod, operaiunile
dorite a fi automatizate sunt nregistrate pas cu pas (editare text,
comenzi de meniu, casete de dialog ). Macro Recorder-ul transform
toate operaiile n instruciuni Basic corespunztoare (module VBA).
n Word, Excel sau PowerPoint (celelalte programe din pachetul Office nu posed
funcii de nregistrare ale macrocomenzilor) nregistrarea unei macrocomenzi ncepe
prin stabilirea unui nume pentru macrocomand (cum ar fi Macro1), dar acest nume se
poate schimba cu orice alt nume, n caseta de text Macro name:
Macrocomenzi
numele nu pot avea mai mult de 255 de caractere, dar este recomandat
specificarea unor nume scurte, uor accesibile;
primul caracter trebuie s fie o liter sau o liniu de subliniere (_);
n nume nu sunt permise spaiile sau punctele.
Exemple______________________________________________________________________________________________
n Word, macrocomanda poate fi asociat
cu un buton (Button) de pe o bar de instrumente, sau, cu o combinaie de taste
(Keyboard) Alt+, Ctrl+. Ea se poate stoca
(Store macro in) n orice ablon deschis
(devine astfel disponibil pentru orice document
care folosete ablonul) sau n orice document
deschis (va putea fi utilizat doar n documentul
respectiv). Caseta de text Description conine,
opional, descrierea macrocomenzii.
n Excel, macrocomanda va fi plasat n
registrul de lucru curent,
ntr-un registru de
lucru nou sau n registrul Personal Macro Workbook
(macrocomenzile vor fi disponibile n toate
registrele de lucru).
______________________________________________________________________________________________Exemple
Macrocomenzi
Exemplu______________________________________________________________________________________________
Adugarea (Word) unui buton de rulare a unei macrocomenzi, n Quick Access
Toolbar:
Quick Access Toolbar
se acioneaz butonul
):
Macrocomenzi
Macrocomenzi
Exemplu______________________________________________________________________________________________
se deschide n editare un document (Excel);
se poziioneaz cursorul (de exemplu n celula B2);
;
se iniiaz nregistrarea unei macrocomenzi,
se stabilete numele macrocomenzii (aici Data) care va fi asociat cu combinaia
de taste Ctrl +d ;
n celula curent se introduce funcia TODAY():
Workbook ;
se deschide documentul Excel, dndu-se permisiunea
macrocomenzilor:
, Enable this content ;
de
executare
se poate introduce data curent, n orice celul (de exemplu n D4) utiliznd
shortcut-ul Ctrl +d :
10
Macrocomenzi
______________________________________________________________________________________________Exemplu
11
Editorul VBA
Editorul VBA
Programele din suita Office au asociate un editor VBA numit VBE care faciliteaz
scrierea i editarea unor secvene program n limbajul Visual Basic (n cercurile
programatorilor profesioniti, Visual Basic Editor este numit mediu integrat de dezvoltare
sau IDE). VBE transpune aciunile utilizatorului n instruciuni Basic sub forma
macrocomenzilor, prin procedeul de nregistrare. Se pot edita ns i macrocomenzi
proprii, fie pornind de la zero, fie utiliznd ca punct de plecare o macrocomand
nregistrat.
12
Editorul VBA
MenuBar
ToolBar
Fereastra
Project
Fereastra
de cod
Fereastra
Properties
13
Editorul VBA
Module VBA
din Toolbar).
Proceduri
Un modul este compus din una sau mai multe uniti de baz numite proceduri.
Exist dou tipuri de proceduri:
proceduri Sub (subrutine)
proceduri Function (funcii)
Pentru lucrul cu procedurile trebuie avut n vedere, n primul rnd, definirea
grupului de instruciuni care vor constitui corpul procedurii i, n al doilea rnd apelul lor
(de cte ori este nevoie).
14
Editorul VBA
Procedura apelant este ex1(), iar cea apelat este ex2() are 2 argumente:
______________________________________________________________________________________________Exemple
Proceduri Function
O funcie definit de utilizator reprezint un grup de instruciuni care primete un
set de parametrii (argumentele funciei) de la programul apelant i i returneaz
acestuia valoarea. Numele unei funcii poate intra n componena expresiilor de calcul
ca operand.
Definiia sintactic este:
Function NumeFuncie (argument1, argument2, ) [As <tip>]
<instruciuni VBA>
[Exit Function]
<instruciuni VBA>
End Function
15
Apelul
funciei
se
realizeaz
parametrilor, pus ntre paranteze.
Editorul VBA
prin
numele
funciei
urmat de lista
Exemple______________________________________________________________________________________________
Din procedura Sub ex1() este apelat procedura Function ex2() funcie fr nici
un argument:
O funcie ValoareTva, pentru calculul valorii TVA, poate fi definit ntr-un modul:
______________________________________________________________________________________________Exemple
Identificarea modulelor
Atunci cnd se introduce un modul nou ntr-un proiect, VBA i atribuie un nume
generic, cum ar fi Module1, Module2, . Practic este necesar utilizarea unor nume
sugestive pentru ca, prin acestea, modulele s poat fi difereniate. Pentru a schimba
numele unui modul:
Se selecteaz modulul n fereastra Project Explorer.
n fereastra Properties, proprietatea (Name), se tasteaz numele modulului.
Numele utilizat ncepe cu o liter, nu conine spaii sau semne de punctuaie
(liniuele de subliniere sunt acceptate) i nu are mai mult de 31 de caractere.
16
Editorul VBA
Rularea modulelor
Modulele includ o secven de instruciuni Basic care trebuie s fie corecte din
punct de vedere sintactic. Detectarea erorilor se poate efectua prin compilare (Debug,
Compile Project).
n aplicaiile Office exist mai multe metode de rulare a modulelor, ns cel mai
des utilizate sunt urmtoarele dou:
n cadrul editorului, se acioneaz, de obicei,
butonul
din ToolBar.
17
Editorul VBA
Poziionarea n listele respective se face mai uor prin tastarea primelor litere ale
cuvntului dorit (Int" pentru Integer). Scrierea efectiv a cuvntului dorit are loc prin
apsarea tastei Enter, tasta virgul" dac se scriu elementele unei liste.
Cuvintele cheie sunt schimbate n formatul potrivit (dac se tasteaz end sub,
VBA transform expresia n End Sub la apsarea tastei Enter.
Verific erorile de sintax, adic erorile care apar atunci cnd un cuvnt este
ortografiat greit, o funcie este introdus incorect, etc. VBA semnaleaz o eroare
de sintax, fie afind o caset de dialog, fie neafind cuvntul, n formatul i
culoarea corespunztoare.
Exemplu______________________________________________________________________________________________
ntr-un modul se tasteaz
sub Salut,
______________________________________________________________________________________________Exemplu
18
Editorul VBA
Formulare VBA
Cu ajutorul formularelor (se poate utiliza i termenul form) se definete
interfaa grafic, asemntoare cu cea editat n mediile de programare Visual Studio,
astfel c practica n VBA poate fi considerat introductiv ctre acestea.
n formular se pot introduce controale ActiveX (obiecte OLE) care permit
interaciunea cu utilizatorul. Un control are atribute (proprieti) ajustabile i sesizeaz
evenimente (este viu). Controalelor li se asociaz secvene de cod, sub forma unor
proceduri, numite proceduri eveniment.
Crearea unui dialog utilizator (termenul utilizator este adugat pentru
diferenierea de dialogurile ncorporate mediului) necesit parcurgerea mai multor
etape:
crearea unui formular (UserForm), care constituie suportul pe care sunt
adugate controalele;
plasarea controalelor pe formular;
stabilirea proprietilor pentru controale;
scrierea procedurilor asociate controalelor, de rspuns la evenimentele
declanate prin acionarea lor.
Crearea unui formular
n Visual Basic Editor crearea unui formular (prin meniu, Insert,
sau
utiliznd butonul
din Toolbar) se realizeaz n modul de proiectare (design mode).
Rularea unui formular
n modul de execuie (run mode) controalele rspund evenimentelor. Pentru
rularea unui formular se acioneaz, de obicei, butonul
din ToolBar (aceeai
comanda se poate lansa i prin meniu: Run, Run Sub/UseForm). Se pot rula doar
proiectele corecte sintactic (verificare prin compilare: Debug, Compile Project).
19
Design
Mode
Project
Explorer (Ctrl+R)
Editorul VBA
Properties
Window (F4)
Formular
Toolbox
Caseta cu
instrumente
(Toolbox)
Proprietile formularului
Proprietile formularului sunt afiate, alfabetic (Alphabetic) sau pe categorii
(tab-ul Categorized):
Aparen (Appearence) : culorile utilizate, efectele vizuale de umplere etc.
Comportare (Behaviour) : modul de continuare a aciunilor la prsirea
ultimului control de pe formular (Cycle) sau accesul utilizatorului la obiect
(Enabled).
Font (Font) : fontul implicit (poate fi modificat pentru fiecare control n parte).
Diverse (Misc) : numele formei, imaginea mouse-ului etc.
Imagine (Picture) : imagini utilizate.
Poziie (Position) : poziie i dimensiuni.
Pentru a aduga un control n formular se execut clic pe pictograma
corespunztoare din Toolbox i se traseaz n fereastra formularului.
20
Editorul VBA
Atunci cnd se execut dublu clic pe control, limbajul VBA afieaz fereastra
de cod n care sunt incluse i liniile de cod implicite (procedur). Procedura
Private Sub CommandButton1_ Click() se va executa ori de cte ori
utilizatorul, n faza de execuie, acioneaz butonul (procedura este un
eveniment pe care Windows l transmite programului spre a fi administrat).
Programatorul poate aduga propriul lui cod surs. De exemplu instruciunea
MsgBox (Bun venit in VBA) spune limbajului VBA s afieze o
caset de mesaj:
La rularea programului (
Bun venit in VBA:
21
Editorul VBA
______________________________________________________________________________________________Exemplu
VBA se poate lansa dintr-o aplicaie Office, cel mai adesea utiliznd shortcut-ul
Alt+F11.
Dup lansarea mediului de programare VBA se pot edita module i formulare noi
sau se pot edita cele existente (stocate mpreun cu documentele Office sau
exportate ca fiiere cu extensia .bas).
Fereastra Project Explorer arat modulele i formularele din proiect. Un proiect are
cel puin un modul sau un formular.
Pentru a crea o aplicaie VBA e necesar scrierea codului surs al programului i
apoi compilarea programului (Debug, Compile Project) pentru eliminarea
eventualelor erori de sintax.
Instruciunile programului se introduc n fereastra de cod VBA.
Fereastra Properties afieaz atributele unui obiect din proiect.
Caseta de instrumente Toolbox conine controale care se pot folosi pentru a
realiza interfaa cu utilizatorul programului.
Se poate construi o interfa cu utilizatorul plasnd controale din Toolbox pe un
formular.
Se pot redimensiona controalele (i formularul) trgnd de punctele de
dimensionare ale controalelor, care apar atunci cnd este selectat controlul.
O modalitate de afiare a ferestrei de cod este executarea unui dublu clic pe
obiectul pentru care se dorete scrierea codului de program.
Atunci cnd utilizatorul apas pe un buton dintr-un formular creat, VBA genereaz
un eveniment Click. Codul de program care se adaug la procedura de eveniment
Click a butonului determin ce anume face butonul.
22
O linie poate ocupa i dou rnduri, reunite prin spaiu i linie de subliniere
( _) la sfritul primului rnd.
O linie de program poate conine mai multe instruciuni separate prin
:(dou puncte), lucru nerecomandabil datorit dificultilor de citire a
programului.
Nu este permis tierea cuvintelor !
23
Exemple______________________________________________________________________________________________
Valoare = pret * _
cantitate
este echivalent cu:
Valoare = 2
cantitate = 50
______________________________________________________________________________________________Exemple
Comentariile
Un comentariu constituie o linie de cod care nu se execut, avnd n cuprins explicaii
asupra altor poriuni de cod (care, de regul, urmeaz). n acest fel, la o parcurgere
ulterioar a codului, va fi facilitat nelegerea acestuia. Comentariile incluse de
programatori la scrierea unei aplicaii ajut foarte mult la modificarea sau ntreinerea
acesteia.
Un comentariu este deci un mesaj inclus ntr-o secven de program cu diferite
scopuri, precum:
o identificarea programului;
o descrierea obiectivului general al programului;
o descrierea scopului fiecrei proceduri n parte;
o explicarea secvenelor sau a calculelor mai complexe.
n Basic exist dou variante:
o Utilizarea instruciunii REM: desemneaz un comentariu care se ntinde pe
ntreg rndul;
o Utilizarea unui apostrof (') la nceputul comentariului: n acest caz se pot scrie
comentarii i dup o instruciune, pe acelai rnd.
Liniile de comentarii nu sunt executate i nu sunt vizibile n momentul execuiei
aplicaiei - Basic ignor la execuie liniile care ncep cu REM sau apostrof.
Exemplu______________________________________________________________________________________________
REM Programator: Parvulescu Andrei
REM Program de calcul al salariilor
'...
REM Aici sunt alte instructiuni
'...
24
Tipuri de date
Exist 3 mari categorii de date: numerice, ir de caractere (string) i speciale.
ncadrarea unei date ntr-o anume categorie este absolut necesar pentru a putea
efectua calcule sau alte prelucrri. Un ir de caractere este o secven de zero sau mai
multe caractere care sunt tratate ca o entitate. Visual Basic lucreaz cu iruri de
caractere de lungime fix sau variabil. Tipul de dat considerat implicit este Variant,
care indic o dat de tip nespecificat. La preluarea acestei date ntr-o secven de cod
este necesar conversia ei n tipul corespunztor prelucrrii ce urmeaz.
Tipul
Descriere
Lungime
Interval de valori
(byte)
Boolean
Byte
Integer
Numere ntregi
Long
Currency
Format monetar
Single
0 255
-32.768 32.767
-2.147.483.648 2.147.483.647
-922.337.203.685.477,5808
922.337.203.685.477,5807
1.401298E-45 3.4028235E+38
Numere zecimale n
Double
virgul flotant
(pentru aplicaii
-3.4028235E+38 -1.401298E-45
-1,797.693.134.86232E308
-4,940.656.458.41247E-324 i
tiinifice)
4,940.656.458.41247E-324
1,797.693.134.86232E308
Date
Date calendaristice
i de timp
String
ir de caractere
25
Object
Obiecte (cum ar fi
controale i
formulare)
Variant
Pentru scrierea valorilor numerice sunt folosite, uneori, literele E sau D. E"
provine de la exponent" iar D" de la exponent dubl precizie". Prin exponent se
nelege o putere a lui 10 cu care se nmulete o alt valoare.
Literele E i e (sau D i d) sunt utilizate ntr-o notaie special, denumit
tiinific. Notaia tiinific este o reprezentare prescurtat, utilizat pentru numere
foarte mari sau foarte mici. Se consider c aceast notaie este mai inteligibil dect
repetarea unui numr mare de zerouri. Convertirea la valoarea real se poate face
oricnd, astfel:
calculeaz 10 la puterea dat de numrul care urmeaz dup D sau E;
o valoarea obinut se nmulete cu numrul care-l precede pe D sau E.
o
Exemplu______________________________________________________________________________________________
87,972E+6 nseamn 87,972 * 106 adic 87.972.000.000
______________________________________________________________________________________________Exemplu
Descriere
adunare
scdere
26
nmulire
mprire
Mod
ridicare la putere
Descriere
<
>
egalitate
diferit
Descriere
NOT
(nu)
AND
(i)
OR
(sau)
XOR
(sau exclusiv)
Prioritate
0 (maxim)
Operatorii relaionali
Operatorii logici
27
Prioritate
Ridicarea la putere
nmulirea i mprirea
Adunarea i scderea
25
102 / 4
25.5
102 \ 4
25
102 Mod 4
______________________________________________________________________________________________Exemplu
Constante i variabile
Ca toate limbajele de programare, Basic permite utilizarea memoriei calculatorului
pentru stocarea datelor utilizate de programele ce se execut. Coninutul acestor zone
de stocare este asociat unor identificatori, cuvinte crora li se asociaz o valoare
definit prin unul din tipurile de date menionate.
de subliniere
alte caractere
n Basic (de
poate utiliza
Constante
O constant este un identificator a crui valoare asociat nu se modific pe
parcursul unui program. Constantele se pot declara (explicit) cu instruciunea:
Const <NumeConstant> [As <tip>] = <expresie>
28
Exemplu______________________________________________________________________________________________
Const PI As Double = 3.1416, Raza As Integer = 25
Const LungimeCerc = 2 * PI * Raza
_____________________________________________________________________________________________Exemplu
Exemplu______________________________________________________________________________________________
"Parvulescu Andrei"
"Constanta"
"204712"
"Str Trifoiului nr 5"
"#%$"
"" 'este irul nul pentru c intre ghilimele
'nu este specificat nici un caracter
_____________________________________________________________________________________________Exemplu
Constantele de tip Date se scriu ntre 2 caractere # (diez). Data i ora se pot
#17/1/2007#
#1:12:00 PM#
#17/1/2007 1:12:00 PM#
_____________________________________________________________________________________________Exemplu
Variabile
Numai o parte a datelor dintr-o aplicaie sunt constante. O variabil este un
identificator al unei poriuni din memoria calculatorului, a crui coninut poate fi schimbat
prin program. Fiecare variabil este de un anumit tip care impune lungimea zonei de
memorie ocupat de aceasta.
Pentru declararea explicit a variabilelor se utilizeaz instruciunea Dim. Aceasta este
plasat la nceputul programului, indicnd c, undeva pe parcurs, vor fi necesare variabilele
declarate. Formatul instruciunii de declarare este:
Dim <NumeVariabil> As <tip>
29
Pentru ca Visual Basic s atribuie unei constante sau unei variabile un tip
Tip dat
String
&
Long
Single
Double
Currency
Exemplu______________________________________________________________________________________________
Const Sold = 100@
'constanta sold este de tip Currency
Const Raza = 25.0!
'constanta Raza este de tip Single
Dim D!
'este echivalen cu: Dim D As Single
Dim A$, B$, C$
'este echivalen cu: Dim A, B, C As String
_____________________________________________________________________________________________Exemplu
Instruciunea de atribuire
Prin instruciunea de atribuire, unei variabile i se asociaz valori. Formatul ei este:
<NumeVariabil> = <expresie>
<expresie> poate fi o constant, o expresie matematic sau o alt variabil.
Exemplu______________________________________________________________________________________________
Dim Pretul As Single, Valoarea As Single
Dim Cantitatea As Integer
'...
Pretul = 34.3
Cantitatea = 10
Valoarea = Pretul * Cantitatea
_____________________________________________________________________________________________Exemplu
30
_____________________________________________________________________________________________Exemplu
list reunete mai multe variabile care au acelai nume, fiind identificate n
cadrul listei printr-un indice. Limita minim implicit a indicelui este zero !.
Exemplu______________________________________________________________________________________________
'...
Dim Salariu(25) As Single
'salariul a 25 persoane
Dim Masiv3D(5, 6, 7) As Integer 'Tablou cu 3 dimensiuni
'...
Salariu(0) = 1546.23 'Salariul primei persoane
Salariu(1) = 1265.7 'Salariul celei de a doua persoane
'...
Masiv3D(2, 5, 6) = 11
_____________________________________________________________________________________________Exemplu
Liste dinamice
Prin instruciunea Dim se declar o list cu numr finit de elemente. Exist
instruciunea ReDim care permite crearea de liste dinamice. Redim urmeaz unei
instruciuni Dim la care nu se precizeaz nici o limit. Nu se poate utiliza ReDim pentru a
redimensiona o list care s-a declarat deja cu un numr finit de elemente.
ReDim poate include i clauza Preserve pentru a se conserva vechile valori ale listei.
31
Exemplu______________________________________________________________________________________________
Dim Salariu() As Single
'...
'list dinamic
ReDim Salariu(25)
'...
Salariu(0) = 1546.23
Salariu(9) = 1366.7
'...
ReDim Salariu(30)
'...
Aplicaii
Sub DatePersonale()
Dim nume As String, prenume As String
Dim varsta As Integer, anul As Integer
Dim taxa As Boolean
nume = "Parvulescu"
prenume = "Andrei"
varsta = 21
anul = 2
taxa = True
MsgBox(nume & " " & prenume & " Vrsta " &
varsta & " Anul " & anul & " Taxa " & taxa)
End Sub
Ca urmare a executrii secvenei se va afia urmtoarea caset de text:
32
Secvena:
Sub Salarii()
Dim Sal(25) As Single
Sal(0) = 1543.1
Sal(1) = 1447.76
Sal(2) = 1633.34
MsgBox("Salariul mediu " & (Sal(0) + Sal(1) + Sal(2)) / 3)
End Sub
Va determina afiarea urmtoarei casete de text:
MyFV = Pmt *
(1 + Rate) Nper 1
Rate
Unde:
Pmt reprezint plile,
Rate este rata dobnzii,
Nper numrul de perioade.
S se scrie un program pentru calculul depunerilor bneti cu dobnd.
Secvena:
Sub CalculFV()
Plata = 100
'Suma depus lunar
Dobanda = 0.06 'Dobnda este de 6%
Numar = 15
'Se fac 15 depuneri
Valoare = Plata * ((1 + Dobanda) ^ Numar - 1) / Dobanda
MsgBox("Sold " & Valoare)
End Sub
Va determina afiarea urmtoarei casete de text:
33
Exemple
Format(8.6, "#.#")
8,6
Format(8.6, "#.00")
8,60
Format(8.76, "#.00")
8,76
Format(8.76, "#.0")
8,8
Format(0.1, "Percent")
10,00 %
10 %
Format(10000,"###,### lei")
10.000 lei
Format monetar
Format(10, "Currency")
10,00 lei
Format(10.236, "Fixed")
10,24
Format tiinific
Format(1233.07, "Scientific")
1,23E+03
Format(0, "True/False")
False
este #0 sau 0
Format(12.1, "Yes/No")
Yes
Format("SALUT", "<")
salut
Format("salut", ">"
SALUT
Format procentual
Formatarea string-urilor
Formatarea datelor
calendaristice
27 martie 2007
34
Funcii matematice
Funciile matematice i trigonometrice au ca argumente i ca rezultate valori
numerice.
Funcia
Int
Fix
Descriere
Numrul ntreg mai mic sau egal
Partea ntreag
Exemple
Int(-8.4)
-9
Int(8.4)
Fix(-8.4)
-8
Fix(8.4)
Abs
Valoarea absolut
Abs(-7.2)
7,2
Sgn
Sgn(-2/3)
-1
Rnd
Int((100 * Rnd) + 1)
83 ?
e la puterea x
e = Exp(1)
2,7182
Log
Log(e)
n baza 10 : log(x)/log(10)
Log(1000)/Log(10)
Sqr
Radical indice 2
Sqr(9)
Atn
Arctangent
Pi = 4*Atn(1)
3,1415
Sin
Sinus
Sin(Pi/2)
Cos
Cosinus
Cos(Pi)
-1
Tan
Tangent
Tan(Pi/4)
Funcii financiare
Funciile financiare efectueaz calcule obinuite pentru afaceri, ca de exemplu
determinarea plii pentru un mprumut, valoarea viitoare sau valoarea net actualizat
a unei investiii i valorile obligaiunilor sau cupoanelor.
Argumentele comune pentru funciile financiare includ:
Valoarea viitoare (fv) valoarea investiiei sau mprumutului dup ce s-au
efectuat toate plile.
Numrul de perioade (nper) numrul total de pli sau perioade ale unei
investiii.
Valoarea actualizat (pv) valoarea unei investiii sau a unui mprumut la
nceputul perioadei de investiie. De exemplu, valoarea actualizat a unui
mprumut este capitalul de baz care este mprumutat.
Rata (rate) rata dobnzii sau rata de actualizare pentru un mprumut sau o
investiie.
Tip (type) intervalul la care sunt efectuate plile n timpul perioadei de
plat, ca de exemplu la nceputul unei luni sau la sfritul acesteia ( 0 sau 1,
implicit 0).
35
Descriere
Calculeaz valoarea viitoare a unei investiii
bazate pe pli periodice i constante i o rat a
dobnzii constant.
Exemple______________________________________________________________________________________________
a) Pentru 13 depuneri lunare, a 100 uniti monetare, cu dobnd anual 10%,
soldul atins se poate calcula astfel:
' Definirea formatului monetar.
Fmt = "###,##0.00"
sold = FV(10 / 100 / 12, 13, -100)
MsgBox(Format(sold, Fmt))
36
Descriere
Exemple
Asc
Asc("B")
66
Len
Len("Visual Basic")
12
Ucase
Litere mari
UCase("abc")
"ABC"
Lcase
Litere mici
LCase("ABC")
"abc"
LTrim
LTrim(" def")
"def"
RTrim
RTrim("def ")
"def"
Trim
"def"
Mid
Extrage un subir
Mid("abcdef", 3, 2)
"cd"
Space
Genereaz spaii
"a
Replace
nlocuiete un ir cu alt ir
Replace("As","s","ce")
"Ace"
Left
Left("abcef", 3)
"abc"
Right
Right("abcef", 3)
"cef"
b"
37
Descriere
Exemple
Now
Now
Date
Data curent
Date
17.03.2007
Time
Ora curent
Time
17:01:08
Day
Ziua
Day(Date)
17
Month
Luna
Month(Date)
Year
Anul
Year(Date)
2007
DateSerial
Data specificat
DateSerial(2007,2,17)
17.02.2007
TimeSerial
Ora specificat
TimeSerial(18, 5, 27)
18:05:27
DateAdd***
Adun la o dat
04.07.2007
DateDiff***
DateDiff("d", Date, x)
10
Un interval de timp
DatePart("m", Date)
DatePart
***
17.03.2007 17:01:08
***
Exemple
Chr
Chr(65)
"A"
Str
Str(-14.34)
"-14.34"
Val
1615198
CBool
CBool(4 > 5)
False
CByte
CByte(12 * 13)
156
CInt
CInt(1725.6 - 1700)
26
CSng
CSng(17 / 18)
0,9444444
CDbl
CDbl(1 / 2.0E+99)
5E-100
CDate
CDate(#3/17/2007#)
17.03.2007
38
Funcia
Descriere
Exemple
IsDate
Argumentul este o
IsDate(#3/17/2007#)
True
IsNumeric
expresie
IsNumeric(12.3)
True
VarType
Argumentul este o
VarType("Basic")
variabil
0 - Empty
1 - Null
2 - Integer
3 - Long
4 - Single
5 - Double
6 - Currency
7 - Date
8 - String
Aplicaii
1. S se calculeze valoarea funciei f(x) pentru diferite valori ale argumentului x>0 :
f ( x) = x 2 + x + 1 + e x
x = 7 ' x se initializeaza cu diverse valori
E = Exp(1)
f = Sqr(x ^ 2 + x + 1) + E ^ x
MsgBox ("Valoarea lui f : " & f)
DataNasterii = #3/20/1990#
MsgBox(DateDiff("d", DataNasterii, Date))
4. O persoan fizic depune 500 lei ntr-un cont de economii cu o dobnd anual de
11% i i planific s mai depun cte 50 de lei la nceputul fiecreia din urmtoarele
39
12 luni. Ci bani va avea n cont la sfritul celor 12 luni (atenie, argumentul type
este 1)?
Rspuns: 1.194,84 lei
6. Dup cte luni se va atinge un sold propus de 3 mii lei pentru depuneri lunare de 150
lei i la o rat a dobnzii anuale de 14% ?
Rspuns: 22,907 23 luni
7. Ct trebuie s economisii lunar ca, dup 10 ani, contul n banc s fie de 15 mii lei
la o dobnd lunar de 1% ?
Rspuns: -65,20 lei
40
41
Instruciune 2
Instruciune n
True
Instruciune 1
Condiie
False
Instruciune 2
Ciclul (iteraia) cu test iniial sau cu test final (atta timp ct, pn cnd) - Do
While, Do Until.
Instruciuni
Condiie
Instruciuni
Condiie
______________________________________________________________________________________________Exemplu
42
MsgBox
Funcia MsgBox este utilizat, de obicei, pentru afiarea unui mesaj, dar poate
recepiona i un rspuns concretizat prin apsarea unor butoane (Ok, Cancel, Abort,
Retry, Yes, No)
<variabil> = MsgBox(<mesaj> [,<constant>] [,<titlu>])
<constant> poate fi:
O(zero)
- va aprea doar butonul Ok
1
- butoanele Ok i Cancel
2
(<variabil> va fi 1 sau 2)
- butoanele Abort Retry i Ignore
(<variabil> va fi 3, 4 sau 5)
- butoanele Yes No i Cancel
(<variabil> va fi 6, 7 sau 2)
- butoanele Yes No
(<variabil> va fi 6 sau 7)
Exemplu______________________________________________________________________________________________
Sub test()
raspuns = MsgBox("TEST", 1)
MsgBox(raspuns)
End Sub
______________________________________________________________________________________________Exemplu
Structurile de control
Structurile selective
Instruciunea de selecie simpl
If <condiie> Then
<instruciuni 1>
[Else
<instruciuni 2>]
End If
43
______________________________________________________________________________________________Exemplu
Instruciunea de selecie multipl
Pentru a codifica mai multe alternative, este posibil nlnuirea mai multor instruciuni
If, dar cu ct numrul acestora este mai mare, cu att urmrirea lor devine mai dificil.
Alternativ pentru astfel de situaii este instruciunea Select Case.
Select Case <expresie>
Case <list de valori 1>
Is <condiie 1>
<instruciuni 1>
<instruciuni n>
[Case Else
<instruciuni>]
End Select
44
______________________________________________________________________________________________Exemplu
Selecie dup condiie. Pentru a extinde posibilitile de utilizare a structurii
alternative, se folosete un format care permite compararea expresiei cu o
valoare, folosind alt operator dect cel de egalitate (clauza Is).
Exemplu______________________________________________________________________________________________
Pentru citirea a dou note de la tastatur i afiarea unor calificative se poate utiliza
urmtoarea secven program:
Dim Nota1 As Integer, Nota2 As Integer
Nota1 = InputBox("Prima nota este:")
Nota2 = InputBox("A doua nota este:")
Media = (Nota1 + Nota2) / 2
Select Case Media
Case Is < 5
Calificativ = "Nesatisfacator"
Case Is <= 7
Calificativ = "Slab"
Case Is <= 8
45
Calificativ = "Bine"
Case Is < 10
Calificativ = "Foarte bine"
Case 10
Calificativ = "Felicitari"
Case Else
Calificativ = "Eroare"
End Select
r = MsgBox(Calificativ, , Media)
______________________________________________________________________________________________Exemplu
Structurile repetitive
Ciclul Do While cu test iniial (execut ct timp)
Do While <condiie>
<instruciuni>
[Exit Do]
<instruciuni>
Loop
ntr-un ciclu Do While grupul de instruciuni care constituie corpul ciclului este
executat att timp ct este ndeplinit condiia. Clauza Exit Do impune abandonarea
execuiei instruciunii (salt dup Loop). Ciclul se poate executa de zero, unu sau mai
multe ori.
Ciclul Do Until cu test iniial (execut pn cnd)
Do Until <condiie>
<instruciuni>
[Exit Do]
<instruciuni>
Loop
ntr-un ciclu Do Until grupul de instruciuni care constituie corpul ciclului este
executat pna cnd este ndeplinit condiia. Clauza Exit Do impune abandonarea
execuiei instruciunii (salt dup Loop). Ciclul se poate executa de zero, unu sau mai
multe ori.
46
Exemplu______________________________________________________________________________________________
Pentru scrierea unui numr natural zecimal n baza de numeraie 2, se poate
folosi metoda mpririlor succesive la 2, pn la obinerea primului ct egal cu zero.
Exemplu:
6:2=3:2=1:2=0
6
2
0 _
0
1
1
Rezult c 6 (10) = 110 (2)
Dim NumarZecimal As Integer
Dim SirulResturilor(30) As Integer
Dim NumarBinar As String
NumarBinar = ""
NumarZecimal = InputBox("Numarul zecimal")
ctul = NumarZecimal
indice = 0
Do While ctul > 0
SirulResturilor(indice) = ctul Mod 2
ctul = ctul \ 2
indice = indice + 1
Loop
Do Until indice = 0
indice = indice - 1
NumarBinar = NumarBinar & SirulResturilor(indice)
Loop
r = MsgBox(NumarBinar, , NumarZecimal)
47
Do
<instruciuni>
[Exit Do]
[<instruciuni>]
Loop While
Until <condiie>
______________________________________________________________________________________________Exemplu
48
Aplicaii
Trei segmente de dreapt pot forma un triunghi dac fiecare este strict mai
mic ca suma celorlalte dou.
Dim a As Single, b As Single, c As Single
a= InputBox("Latura a")
b = InputBox("Latura b")
c = InputBox("Latura c")
If a < b + c And b < a + c And c < a + b Then
perimetrul = a + b + c
Select Case True
Case a = b And b = c
mesaj = "Tringhiul este echilateral"
Case a = b Or a = c Or b = c
mesaj = "Tringhiul este isoscel"
Case Else
mesaj = "Triunghiul este oarecare"
End Select
MsgBox(mesaj & " iar perimetrul este: " & perimetrul)
Else
MsgBox("Cele trei segmente nu formeaza un triunghi")
End If
49
4. Se consider polinomul:
P(x) = a n xn + a n-1 xn-1 + + a 1 x + a 0
S se calculeze valoarea P(b) a polinomului pentru o valoare dat, b, a
necunoscutei x.
i=n-1, ,1, 0
Dim n As Integer
'n trebuie sa fie pozitiv
Do
n = InputBox("n=")
Loop While n <= 0
suma = 0 : i = 0
Do While i < n
suma = suma + i
i = i + 2
Loop
r = MsgBox(suma, , n)
Dim n As Integer
'n trebuie sa fie pozitiv
Do
n = InputBox("n=")
Loop Until n > 0
suma = 0 : i = 0
Do Until i >= n
suma = suma + i
i = i + 2
Loop
r = MsgBox(suma, , n)
50
min = sir(0)
suma = 0
For i = 0 To n - 1
suma = suma + sir(i)
If min > sir(i) Then
min = sir(i)
End If
If max < sir(i) Then
max = sir(i)
End If
Next
MsgBox("Maxim " & max & " Minim " & min & " Suma " & suma)
7. ntr-un sondaj de opinie este intervievat un eantion de n persoane, pe grupuri de
vrst. Rspunsurile posibile sunt: d (da), n (nu), x (nu tiu). S se editeze o
secven program care s contorizeze i s afieze rspunsurile intervievailor.
contor = 1
Do
raspuns = InputBox("Raspuns:", contor)
Select Case raspuns
Case "d"
da = da + 1
Case "n"
nu = nu + 1
Case "x"
x = x + 1
Case Else
Exit Do
End Select
contor = contor + 1
Loop While raspuns = "d" Or raspuns = "n" Or raspuns = "x"
MsgBox("Da:" & da & " Nu:" & nu & " Nu stiu:" & x)
51
Module VBA
Module VBA
Programarea modular este un procedeu prin care mai multe instruciuni sunt
grupate n proceduri (Sub i Function) destinate realizrii n mod repetat a unor
aciuni. Acestea pot fi definite n cadrul limbajului (proceduri standard) sau de ctre
programator (proceduri utilizator). Programarea structurat combinat cu programarea
modular contribuie la creterea eficienei i productivitii n proiectarea de aplicaii.
Procedurile de dimensiuni mici, scrise pentru realizarea diverselor sarcini, n locul
programelor vaste, monolitice, concretizeaz programarea structurat. Prin divizarea
aplicaiei n mai multe proceduri se reduce efortul, o dat cu numrul de erori n
scrierea programelor. De asemenea, este simplificat ntreinerea aplicaiei.
n general, programatorii prefer s pun procedurile de utilitate general n
module. Se includ aici procedurile necesare n mai multe aplicaii. Pentru a aduga un
modul extern se acioneaz butonul
(Module), din linia de butoane standard (prin
meniu Insert, Module). Noul modul apare n structura proiectului iar n fereastra de cod
se poate scrie codul necesar.
Din punct de vedere al referirii variabilelor de lucru, din diferite zone ale
programului, se deosebesc dou tipuri de variabile:
Variabile
locale
accesibile
doar
n
procedura
n
care au fost definite. Ele sunt declarate prin Dim, Redim sau Static.
Variabilele declarate cu Static i pstreaz valorile pe tot timpul execuiei
programului, spre deosebire de cele declarate prin Dim sau Redim care sunt
52
Module VBA
Exemplu______________________________________________________________________________________________
Sub test()
Static Dobanda As Single
Dobanda = 3 / 100
'...
End Sub
'...
Public rataDobanzii As Single
'...
______________________________________________________________________________________________Exemplu
Exemplu______________________________________________________________________________________________
'...
Private rataDobanzii As Single
'...
______________________________________________________________________________________________Exemplu
Observaii:
Exemple______________________________________________________________________________________________
()
O procedur ValoareTva, pentru calculul valorii TVA (Tva este variabil cu atribut
Public), poate fi definit ntr-un modul extern:
53
Module VBA
()
Se editeaz o procedur, inclus ntr-un modul, pentru ordonarea unui ir de
numere prin metoda interschimbrii.
Explicarea metodei interschimbrii:
Se compar, pe rnd cte dou elemente ale irului. Dac valorile lor corespund
criteriului de ordonare (cresctor sau descresctor) atunci ele rmn pe aceeai
poziie, dac nu, se interschimb:
a 1 a 2 a 3 a n-1 a n
54
Module VBA
55
Module VBA
Exemplu______________________________________________________________________________________________
Procedura Sub ValoareTva, pentru calculul valorii TVA, transmiterea parametrilor
prin referin:
Sub ValoareTva(ByRef valoare, ByRef Tva)
Tva = Valoare * 0.19
End Sub
Apelul procedurii i transmiterea parametrilor Valoare i Tva:
Sub Test()
Dim Valoare As Single, Tva As Single
Valoare = InputBox("Care este valoarea?")
'
Call ValoareTva(Valoare, Tva) 'apelul procedurii Sub
'
MsgBox("Valoarea Tva:" & Tva)
End Sub
______________________________________________________________________________________________Exemplu
Funcii recursive
O funcie este recursiv dac se apeleaz pe ea nsi.
Exemplu______________________________________________________________________________________________
Pentru calculul funciei factorial, fact, este definit urmtoarea secven de
instruciuni:
Function fact(ByVal n As Byte) As Integer
If n = 0 Then
fact = 1
Else
fact = n * fact(n - 1)
End If
End Function
Apelul funciei i
Sub
Dim
n =
'
transmiterea parametrului n:
Test()
n As Byte, f As Integer
InputBox("?n")
56
Module VBA
Aplicaii
(1 + Rate) Nper 1
MyFV = Pmt *
Rate
Unde:
Pmt reprezint plile,
Rate este rata dobnzii,
Nper numrul de perioade.
Funcia
Apel
End Function
Sub Test()
Dim Rate As Double, Nper As Double, Pmt As Double
Rate = InputBox("Rata Dobanzii")
Nper = InputBox("Numarul de perioade")
Pmt = InputBox("Plata")
r1 = MyFV(Rate, Nper, Pmt)
r2 = FV(Rate, Nper, Pmt)
MsgBox(r1 & " " & r2)
End Sub
57
Module VBA
k
Funcia
Apel
Fib ( n ) 1, n 1
Funcia
Apel
58
Module VBA
4. S se calculeze cel mai mare divizor comun a dou numere, conform relaiei
recursive a lui Euclid:
x, dac y 0
cmmdc( x, y )
cmmdc( y, x mod y ) dac y 0
unde mod este operatorul modulo.
Funcia
Apel
5. S se editeze propria funcie de calcul a numrului lui Euler (e) cu patru zecimale
exacte (2,7182) folosind formula:
e 1
1 1
1
...
1! 2 ! 3!
59
Module VBA
Funcia
Apel
60
Formulare VBA
Formulare (form-uri)
Limbajul Basic faciliteaz crearea interfeelor cu utilizatorul prin intermediul unui
set de controale, din caseta cu instrumente (Toolbox).
Un proiect VBA grupeaz unul sau mai multe formulare i module. n formulare
(UserForm) se poziioneaz controale (obiecte de interfa) care permit introducerea
sau extragerea datelor utilizatorului n mod interactiv. Controalelor din formular le sunt
asociate proprieti i metode (proceduri eveniment). Procedurile eveniment sunt
secvene de instruciuni care pot fi modificate, ca de altfel i proprietile controalelor
incluse n formular. Modificrile efectuate se reflect n aspectul formularului i n
comportamentul acestuia n diferite situaii..
n varianta Visual Basic i a produselor similare, proiectul (programul) este un
ansamblu de proceduri eveniment, cele mai multe avnd dimensiuni reduse i fiecare
tratnd un eveniment individual. O astfel de procedur este ataat unui control i se
execut numai cnd controlul respectiv intercepteaz evenimentul pentru care a fost
scris. Altfel spus, un program va rspunde unui eveniment care se produce la execuie
numai dac a fost scris o procedur pentru evenimentul respectiv; n caz contrar,
evenimentul va fi ignorat. Fiecare control al unui formular (ca i formularul nsui)
suport mai multe evenimente. De exemplu, un buton poate rspunde la evenimentul
clic dac pentru acest eveniment este scris o procedur. Atunci cnd aplicaia se va
lansa n execuie, iar utilizatorul va efectua clic pe buton (se produce n acest fel
evenimentul), va fi lansat automat n derulare procedura definit.
61
Formulare VBA
Proprieti i metode
Un formular poate conine mai multe obiecte (controale), el nsui fiind considerat
un obiect. Fereastra Properties permite alegerea controlului i a proprietii a crei
valoare se schimb, ca de exemplu:
Proprietatea Caption este destinat stabilirii unui titlu (denumire) pentru
formular sau control.
Proprietatea (Name) permite atribuirea unor nume controalelor. VBA stabilete
valori implicite proprietii (Name) cum ar fi:
UserForm1, UserForm2
pentru formulare (prin convenie, numele
formularelor utilizator vor fi prefixate de cuvntul frm, de exemplu:
frmPrincipal, frmCalcul);
Label1, Label2 pentru etichete (prefix convenional: lbl);
CommandButton1, CommandButton2 pentru butoane (prefix: btn);
TextBox1, TextBox2 pentru casete de text (prefix: txt).
Aceste nume ale controalelor pot fi folosite aa cum au fost definite de VBA ns
utilizatorul are posibilitatea stabilirii unor denumiri proprii.
______________________________________________________________________________________________Exemplu
62
Formulare VBA
Proprietatea Caption
n general, proprietatea Caption a unui obiect controleaz textul pe care
respectivul obiect l afieaz. Proprietatea Caption a unui formular stabilete titlul
form-ului.
Dac nu este afiat fereastra de controale (Toolbox), avnd formularul deschis n
mediul de proiectare, din meniul View (afiare) se selecteaz opiunea Toolbox sau se
apas butonul
63
Formulare VBA
Proprietatea StartUpPosition
Proprietatea StartUpPosition determin poziia unui formular atunci cnd este
executat prima oar. De obicei, atunci cnd un formular ruleaz, utilizatorul l poate
muta.
Pentru a amplasa un formular n mijlocul ecranului folosind fereastra de
proprieti:
64
Formulare VBA
Utilizarea controalelor
Includerea controalelor n cadrul unui formular se realizeaz prin introducerea
(drag&drop) unor obiecte (CommandButton, Label, TextBox, etc.) n acest
formular. Pentru aceasta, se acioneaz butonul corespunztor din Toolbox i se
stabilete poriunea dreptunghiular (zona) din formular unde va fi afiat obiectul.
65
Formulare VBA
startul evenimentelor,
pentru
Controlul Label este utilizat pentru afiarea unor texte care nu pot fi editate de
utilizator. Este util pentru descrierea altor obiecte din formular cum ar fi TextBox,
66
Formulare VBA
ListBox, etc.
Proprietile cele mai importante ale controlului Label:
Proprietate
Name
Nume VBA: Label1, Label2, Convenie prefix: lbl.
AutoSize
Proprietate de tip boolean care definete modalitatea de dimensionare a etichetei
(automat - True, manual - False). Implicit este False (dimensiune fix). Dac se
fixeaz la valoarea True nlimea etichetei se autoregleaz n funcie de textul
introdus.
BackColor
Culoarea de fundal a textului de pe etichet. Sunt disponibile 2 palete de culori:
Palette i System.
BorderStyle
Stilul marginii (cadrului) etichetei: FmBackStyleOpaque,
FmBackStyleTranparent.
Caption
Este proprietatea cea mai des utilizat i se refer la coninutul efectiv al
etichetei. Poate fi stabilit att la proiectare, ct i n momentul execuiei.
ControlTipText
Afieaz un indicator textual, atunci cnd se plaseaz cursorul mouse-ului n zona
etichetei.
Font
Fontul (stilul caracterelor) cu care este afiat textul de pe etichet. Este o
proprietate care fixeaz atribute pentru tip, mrime, stil de afiare.
ForeColor
Culoarea cu care este scris textul n cadrul etichetei. Are aceeai plaj de
valori ca i BackColor.
Heigth
nlimea etichetei, n pixeli.
Picture
Imaginea care apare pe fundalul etichetei. Aceast proprietate reprezint de
fapt o referin ctre un fiier de tip imagine (bmp, jpg, gif, ico, etc).
PicturePosition
Alinierea imaginii n cadrul etichetei.
TextAlign
67
Formulare VBA
Visible
Permite ascunderea etichetei sau (re)afiarea ei pe ecran, n funcie de
valorile care i sunt atribuite: False, True.
Width
Limea etichetei, n pixeli.
Exemplu______________________________________________________________________________________________
Pe un formular se introduce o etichet cu numele
lblPoza, proprietatea Visible avnd valoarea
False. O imagine de
proprietatea Picture:
fundal
este
fixat
prin
apsrii
butonului,
la
rularea
______________________________________________________________________________________________Exemplu
68
Formulare VBA
Acest control este unul dintre cele mai folosite n programarea interfeelor grafice
datorit avantajelor pe care le ofer la introducerea datelor i la manipularea lor.
Definete un cmp de editare n care utilizatorul poate introduce un text. Controlul
TextBox afieaz mai multe linii atunci cnd proprietatea Multiline este setat pe
True. Aspectul textului afiat este determinat de proprietile Font i ForeColor. La
fel ca i la alte controale, proprietile pot fi modificate prin cod program, n timpul
rulrii aplicaiei.
Caseta de text este foarte flexibil n VBA, permind introducerea datelor pe una
sau mai multe linii de text, folosirea barelor de derulare (Scrollbars), etc. De asemenea,
o caset de text poate fi folosit n modul activ (utilizatorul are acces la coninutul su)
sau n modul inactiv (utilizatorul poate doar s vizualizeze coninutul, textul fiind
protejat n cazul n care se ncearc modificarea sa).
Principalele proprieti, ale unei casete de text, sunt rezumate n tabelul urmtor:
Proprietate
Name
Nume VBA: TextBox1, TextBox2, Convenie prefix: txt.
BackColor
Culoarea de fundal a casetei de text. n momentul proiectrii (la plasarea
casetei pe formular) se pot alege valori din 2 categorii: Palette, System,
fiecare cu propria sa palet de culori.
BorderStyle
Tipul marginii casetei de text. Sunt disponibile 2 variante:
0-FmBackStyleTransparent;
1-FmBackStyleOpaque.
Enabled
Proprietate de tip boolean care permite utilizatorului s modifice coninutul
casetei (True - implicit) sau protejeaz textul mpotriva modificrilor (False).
ForeColor
Culoarea textului care este afiat n interiorul casetei. Maniera de selectare
este asemntoare cu cea asociat proprietii BackColor.
MaxLength
Numrul maxim de caractere care pot fi introduse n caseta de text. Poate fi
modificat la o valoare de tip Integer pozitiv.
MousePointer
Stabilete felul cursorului mouse-ului atunci cnd acesta se afl pe caseta de text.
69
Formulare VBA
Valorile pot fi alese dintr-o list: AppStarting, Arrow, Cross, Ibeam, NoDrop,
SizeAll
Multiline
Precizeaz dac textul din caset poate fi plasat pe mai multe rnduri. Este o
proprietate de tip boolean (implict False).
PasswordChar
Definete care este caracterul (de exemplu *) ce se va afia n mod repetat,
astfel nct textul din interior s nu poat fi descifrat. Util pentru proceduri
de introducere a parolelor sau a cuvintelor-cheie.
ScrollBars
Stilul barelor de derulare aferente casetei:
None (nu este prezent nici o bar de derulare);
Horizontal (bar de derulare orizontal, sub caseta de text);
Vertical (bar de derulare vertical, n dreapta casetei de text);
Both (bare de derulare vertical i orizontal). n cazul n care se
alege aceast variant, se recomand testarea ei n acelai timp cu
proprietatea Multiline.
TextAlign
Alinierea textului introdus n caseta de text. Alinierea poate fi :Left (implicit),
Right, Center.
Exemplu______________________________________________________________________________________________
Se editeaz un formular care s permit urmtoarele operaiuni:
introducerea numelui (mrcii) unui autoturism;
introducerea preului autoturismului, n Euro;
cursul, la zi, a monedei europene;
n funcie de cursul monedei Euro se calculeaz preul autoturismului n
lei;
confirmarea stocului existent;
confirmarea includerii de taxe;
opiunea de culoare;
afiarea informaiile despre autoturism: marca, preul n lei, culoare,
dac se afl n stoc, dac preul are taxele incluse.
Pentru informaiile introduse de la tastatur, textbox-urilor li se atribuie nume
semnificative (txtMarca, txtPretEuro, txtCursEuro). Butonul de comand
(btnInfo) determin afiarea - n eticheta lblInfo - informaiilor necesare.
Proprietatea Font a acestor controale poate fi modificat pentru o afiare mai
vizibil (de exemplu Bold):
70
Formulare VBA
txtMarca
txtCursEuro
txtPretEuro
lblInfo
btnInfo
71
Formulare VBA
Principalele proprieti:
Proprietate
Name
Nume VBA: CheckBox1, CheckBox2, Convenie prefix: chk.
Alignment
Specific locul de plasare a cadrului de bifare n cadrul controlului. Aceast
proprietate poate lua valorile Left i Right. Right este implicit.
Enabled
Este proprietate de tip boolean care stabilete dac checkbox-ul este sau nu
activ.
Font
Stilul fontului cu care este scris textul nsoitor.
ForeColor
Culoarea cu care este scris textul nsoitor.
Caption
Proprietate ce determin textul nsoitor (explicativ) al casetei de validare.
Value
Proprietate important cu urmtoarele valori:
True, dac este bifat caseta;
False, dac este debifat caseta (implicit).
Visibile
Dac este True (implicit), caseta de validare este vizibil pe formular. n caz
contrar, este invizibil.
Exemplu______________________________________________________________________________________________
Pe formularul anterior se introduc dou CheckBox-uri (chkStoc, chkTaxe). n
procedura eveniment btnInfo_Click se adaug urmtoarele instruciuni:
If chkStoc.Value Then
Stoc = "Se afla in stoc"
Else
Stoc = "Nu se afla in stoc"
End If
If chkTaxe.Value Then
Taxe = "Toate taxele incluse!"
Else
Taxe = "Nu include taxe"
End If
lblInfo.Caption = "Autoturismul " & txtMarca.Text & vbCrLf &
"Are pretul " & PretLei & " lei (cu TVA)" &
vbCrLf & Stoc & vbCrLf & Taxe
72
Formulare VBA
checkBox bifat
Rezultatul prelucrrii
______________________________________________________________________________________________Exemplu
Rolul controlului de tip Frame este de a grupa dou sau mai multe controale (de
regul, CheckBox sau OptionButton) astfel nct s formeze un set de elemente ntre
care se stabilete o relaie. De exemplu n cazul controlului CheckBox, utilizatorul poate
bifa un control indiferent de starea celorlalte.
Exist ns situaii n care este de dorit ca starea unei opiuni s elimine n mod
automat celelalte opiuni i astfel se ajunge la utilizarea butoanelor de opiune
structurate ntr-un grup.
Principalele proprieti ale unui Frame sunt:
Proprietate
Name
Nume VBA: Frame1, Frame2, Convenie prefix: frm.
Caption
Textul care apare n antetul grupului.
Enabled
Dac este True, elementele din grup vor putea fi accesate. Dac este False,
elementele din grup nu pot fi manipulate de utilizator.
Font
Tipul fontului cu care este scris titlul grupului.
Visible
Dac este True, grupul este vizibil pe formular; n caz contrar, grupul este
invizibil.
73
Formulare VBA
Este controlul care se folosete atunci cnd trebuie selectat doar o singur
opiune din mai multe posibile. De regul, aceste butoane sunt comasate ntr-un cadru
de grupare, asigurndu-se, n acest fel, selectarea doar a unei singure opiuni.
Proprietile cele mai importante ale unui control de tip buton radio sunt:
Proprietate
Name
Nume VBA: OptionButton1, OptionButton2, Convenie prefix: rbn.
Alignment
Locul de plasare a cadrului de bifare n cadrul controlului. Aceast proprietate
poate lua valorile Left i Right. Right este implicit.
Caption
irul de caractere care nsoete butonul radio.
TextAlign
Modalitatea de aliniere a textului n cadrul controlului. Poate lua valorile Left,
Center, Right. Implicit: Left.
Value
Este proprietatea cea mai folosit, indicnd dac butonul este selectat - True
sau nu False (implicit).
Visible
Proprietate de tip boolean care stabilete dac butonul radio este sau nu vizibil
pentru utilizator.
Exemplu______________________________________________________________________________________________
Se plaseaz pe formular obiectul de tip Frame, cu proprietatea Name,
frmCuloare. Se aduc, n interiorul acestui control, din cutia cu instrumente, trei
butoane radio: rbnAlb, rbnGri, rbnRosu (pentru selectarea unei culori).
Controlul Frame are rolul de container pentru butoanele radio iar deplasarea lui
determin i deplasarea elementelor pe care le conine.
74
Formulare VBA
______________________________________________________________________________________________Exemplu
Controlul ListBox dintr-un formular afieaz o list de una sau mai multe
elemente. Dac numrul total al elementelor excede numrul celor care pot fi afiate,
un scroll bar este automat adugat la acel control. Prin proprietatea MultiSelect
elementele listei pot fi afiate n coloane multiple (implicit MultiSelect este
fmMultiSelectSingle).
Funcia ListIndex returneaz o valoare ntreag care corespunde primului
element selectat din list. Dac nu este selectat nici un element, valoare lui ListIndex
75
Formulare VBA
este -1. Dac este selectat primul element din list, valoarea lui ListIndex este 0.
Funcia ListCount furnizeaz numrul elementelor listei.
n esen, controlul ListBox
Name
Nume VBA: ListBox1, ListBox2, Convenie prefix: lst.
BorderStyle
Marginea casetei cu list:
None: nu apare nici o bordur;
Single - bordur.
ColumnWidths
Limea (n numr de puncte) fiecrei coloane n cazul n care lista suport
coloane multiple.
Enabled
Proprietate de tip boolean care, atunci cnd are valoarea True, permite
utilizatorului s selecteze elemente din list. n caz contrar, lista este vizibil,
dar inactiv.
Font
Stilul fontului pentru elementele din cadrul listei.
ColumnCount
Lista este afiat pe un numr de coloane stabilit prin aceast proprietate.
MultiSelect
Poate lua una dintre valorile:
Single: utilizatorul poate selecta doar un singur element din list la
un moment dat (implicit);
Multi: pot fi selectate mai multe valori, prin simpla apsare a
butonului din stnga al mouse-ului;
Extended: pot fi selectate mai multe valori, prin folosirea mouseului i a tastei Ctrl, precum i prin deplasarea mouse-ului n timp ce
butonul din stnga este apsat.
TextAlign
Implicit, elementele unei liste sunt aliniate la stnga. Se pot face i alinieri la
76
Formulare VBA
dreapta (de regul pentru elemente de tip numeric) sau la centrul listei.
Visible
Dac este True, lista este vizibil; n caz contrar, ea exist ca obiect n
memorie, dar nu este vizibil pe ecran.
Exemplu______________________________________________________________________________________________
Cea mai utilizat operaiune este cea de adugare a elementelor n list (aici
lstAuto). n momentul proiectrii interfeei, cu ajutorul procedurii Sub
UserForm_Initialize(), se introduc elementele listei (aici, mrci de
autoturisme). Utilizndu-se o singur coloan (lstAuto.ColumnCount = 1)
lista (lstAuto.List()) se preia din tabloul Lista(5).
lstAuto
btnAdauga
btnSterge
77
Formulare VBA
______________________________________________________________________________________________Exemplu
78
Formulare VBA
Name
Nume VBA: ComboBox1, ComboBox2, Convenie prefix: cbo.
DropButtonStyle
Modul de vizualizare a butonului de derulare a listei:
Plain: ;
Arrow (implict): buton de selecie marcat cu sgeat:
Ellipses: ;
Reduce: .
ColumnWidths
Limea fiecrei coloane n cazul n care lista suport coloane multiple.
Enabled
Dac este True, lista este activ; dac este False, caseta este vizibil pe
ecran, dar nu poate fi selectat nici un element.
Font
Stilul caracterelor folosite pentru afiarea elementelor.
ListWidth
Limea, n pixeli, a listei care apare n momentul cnd se apas butonul de
selecie. Valoarea stabilit nu poate fi mai mic dect limea ComboBoxului.
MaxLength
Numrul maxim de caractere care pot fi introduse de utilizator. Implicit,
aceast proprietate are valoarea zero (pot fi introduse oricte caractere).
TextAlign
Implicit, elementele unei liste sunt aliniate la stnga. Se pot face i alinieri la
dreapta (de regul pentru elemente de tip numeric) sau la centrul listei.
Text
Stabilete sau returneaz elementul curent care este selectat n caset.
Visible
Dac este True, controlul este vizibil pe formular; n caz contrar, nu este
vizibil pentru utilizator.
Exemplu______________________________________________________________________________________________
n exemplul urmtor se utilizeaz dou ComboBox-uri (cboMarca i cboPret).
Cu ajutorul procedurii Sub UserForm_Initialize(), se introduc elementele
listei (la fel ca n exemplul anterior - pentru ListBox):
79
Formulare VBA
cboMarca
cboPret
btnInfo
lblInfo
Acest control permite afiarea pe suprafaa formularului a unor imagini preluate din
fiiere grafice. Formatele suportate sunt multiple: bmp, gif, jpg, ico etc. Referitor la
aspectul vizual, cele mai importante proprieti sunt urmtoarele:
Proprietate
Name
Nume VBA: Image1, Image2, Convenie prefix: img.
80
Formulare VBA
BackStyle
Fundalul casetei:
Opaque (implicit);
Transparent.
BorderStyle
Stilul marginii casetei:
None: nici o bordur;
Single: bordur (implicit);
Picture
Imaginea care se va afia n caset. n momentul proiectrii, aceast
imagine poate fi preluat prin indicarea fiierului care o conine.
Controlul SpinButton ofer o modalitate de a selecta o valoare numeric dintrun anumit interval.
Proprietile definitorii ale generatorului de valori sunt urmtoarele:
Proprietate
Name
Nume VBA: SpinButton1, SpinButton2, Convenie prefix: spb.
Enabled
Proprietate de tip boolean:
True: controlul este disponibil pentru a fi modificat de utilizator;
False: utilizatorul nu poate modifica starea controlului.
SmallChange
Stabilete pasul cu care se modific valoarea curent din generator atunci
cnd utilizatorul acioneaz butoanele de incrementare sau decrementare.
Valoarea incrementului trebuie s fie un numr ntreg mai mare sau egal cu
zero (implicit 1).
Max
Limita superioar a intervalului de valori. Aceast valoare trebuie s fie mai
mare sau egal cu Min.
Min
Limita inferioar a intervalului n care poate naviga utilizatorul.
Orientation
Orientarea butoanelor de incrementare/decrementare:
Auto;
81
Formulare VBA
Vertical;
Horizontal
Value
Reprezint valoarea curent a generatorului.
Visibile
Dac este True, generatorul este vizibil pentru utilizator; dac este False,
este ascuns.
Exemplu______________________________________________________________________________________________
ntr-un formular se introduc urmtoarele controale:
Controlul spbVarsta (cu proprietile Min = 1, Max = 120);
Eticheta lblInfo.
Incrementarea valorii curente
lblInfo
82
Formulare VBA
End Sub
______________________________________________________________________________________________Exemplu
Cnd se impune modificarea mai multor proprieti ale unui control se utilizeaz,
de multe ori, structura:
With <control>
<instruciuni>
End With
Exemplu______________________________________________________________________________________________
Se creeaz un formular;
Se introduce, n formular, controlul ListBox cu numele lstCardinale;
Codul urmtor realizeaz iniializarea valorilor din list:
Private Sub UserForm_Initialize()
With lstCardinale
.AddItem "Nord"
.AddItem "Sud"
.AddItem "Est"
.AddItem "Vest"
.ListIndex = 3
End With
End Sub
83
Formulare VBA
Rularea formularului:
______________________________________________________________________________________________Exemplu
______________________________________________________________________________________________Exemplu
84
Formulare VBA
______________________________________________________________________________________________Exemplu
Valorile introdu-se, utiliznd controalele TextBox, sunt de tip String. Pentru
colectarea unor valori numerice este necesar o conversie (de obicei cu funcia Val).
Deoarece conversia string numeric ia n considerarea caracterele, pn la primul ce
nu reprezint informaie numeric, se impune validarea irului introdus prin funcia
IsNumeric.
Exemplu______________________________________________________________________________________________
Pe un formular se introduc dou casete de text i un buton (btnValidare).
Procedura care trateaz evenimentul Click al butonului afieaz un mesaj de
eroare realiznd focusul pe TextBox-ul care a generat eroarea:
Private Sub btnValidare_Click()
If Not IsNumeric(TextBox1.Text) Then
MsgBox ("Eroare 1")
TextBox1.SetFocus
End If
If Not IsNumeric(TextBox2.Text) Then
MsgBox ("Eroare 2")
TextBox2.SetFocus
End If
End Sub
Efect cnd se introduce, de exemplu, o valoare eronat n al doilea TextBox:
85
Formulare VBA
______________________________________________________________________________________________Exemplu
La nchiderea unui dialog, toate datele introduse de utilizator se pierd. Din acest
motiv, informaia necesar a fi reutilizat trebuie s fie salvat n variabile de la nivelul
modul, naintea descrcrii formularului. nchiderea (descrcarea) formularului se
realizeaz prin instruciunea Unload.
Exemplu______________________________________________________________________________________________
Pe un formular se introduc un TextBox (txtMem) i un buton (btnStop) iar
String-ul introdus n TextBox e necesar a fi salvat:
86
Formulare VBA
Aplicaii
Controale
Control
Tip
Proprietate
Valoare
proprietate
Formular
Caption
Calculator
Label1
Etichet
Caption
Primul operand
Label2
Etichet
Caption
Al doilea operand
Label3
Etichet
Caption
Rezultatul->
txtA
TextBox
TextAlign
Right
ForeColor
Blue
Font, Size
10
Font,FontStyle
Bold
TextAlign
Right
ForeColor
Green
Font, Size
10
Font,FontStyle
Bold
ForeColor
Red
Font, Size
12
Font,FontStyle
Bold
UserForm1
txtB
lblRezultat
TextBox
Etichet
87
lblOperator
btnAdun
btnScad
btnInm
btnImp
btnPt
Etichet
Buton
Buton
Buton
Buton
Buton
Formulare VBA
TextAlign
Center
Font, Size
10
ForeColor
Red
Font,FontStyle
Bold
Caption
ForeColor
Blue
Font, Size
18
Font,FontStyle
Bold
Caption
ForeColor
Red
Font, Size
18
Font,FontStyle
Bold
Caption
ForeColor
Green
Font, Size
18
Font,FontStyle
Bold
Caption
ForeColor
Purple
Font, Size
18
Font,FontStyle
Bold
Caption
ForeColor
Black
Font, Size
18
Font,FontStyle
Bold
Metode
Control
Secvena de cod
88
Formulare VBA
End Sub
Observaii:
Controale
Control
Tip
Proprietate
Valoare
proprietate
Formular
Caption
Calcule financiare
Label1
Etichet
Caption
Rata dobanzii
Label2
Etichet
Caption
Numarul de perioade
Label3
Etichet
Caption
Valoare
Label4
Etichet
Caption
Rezultat
UserForm1
89
TextBox
txtD
Formulare VBA
TextAlign
Right
Font, Size
10
Font,FontStyle
Bold
txtN
TextBox
La fel cu txtD
txtV
TextBox
La fel cu txtD
Etichet
Font, Size
12
Font,FontStyle
Bold
ForeColor
Red
Caption
Functia
Caption
FV
ForeColor
Red
Font,FontStyle
Bold
Value
True
Caption
PV
ForeColor
Green
Font,FontStyle
Bold
Caption
Pmt
ForeColor
Blue
Font,FontStyle
Bold
Caption
Calculeaza
Font, Size
12
Font,FontStyle
Bold
lblRezultat
frmFunctia
B
Frame
rbnFV
u
t
rbnPV
e
Radio
rbnPmt
Buton
btnCalcul
Metode
Control
UserForm1
rbnFV
rbnPV
Secvena de cod
90
rbnPmt
Formulare VBA
End Sub
Private Sub rbPmt_Click()
selectie = 3
End Sub
Private Sub btnCalcul_Click()
If IsNumeric(txtD.Text) And
IsNumeric(txtN.Text) And
IsNumeric(txtV.Text) Then
D = Val(txtD.Text)
N = Val(txtN.Text)
V = Val(txtV.Text)
Select Case selectie
Case 1
lblRezultat.Caption = FV(D, N, V)
Case 2
lblRezultat.Caption = PV(D, N, V)
Case 3
lblRezultat.Caption = Pmt(D, N, V)
End Select
Else
MsgBox("Eroare! Valoare numeric!")
End If
End Sub
91
Controalele ActiveX
Controalele ActiveX (n cazul formularelor mai sunt denumite i controale OLE,
pentru a face diferenierea) pot fi plasate i direct n documentele aplicaiilor:
documente Word, foi de calcul Excel, diapozitive PowerPoint. Inserarea lor este facilitat
de tab-ul Developer, Controls. Aceste controale au atribute cu proprieti ajustabile,
recunosc evenimente. Prin scrierea procedurilor eveniment, interfaa cu utilizatorul
proiectului poate fi personalizat i definit corespunztor.
Pot fi adugate controale unui document, foi de calcul electronic sau slide pentru
a le transforma n obiecte interactive, n acelai mod n care controalele se adaug unui
formular. Astfel, unui document, i se pot aduga casete de text, liste, butoane radio,
pentru a-l transforma ntr-un formular activ (online). Se pot aduga controale (Form
Controls) pe o foaie de calcul pentru a executa proceduri macro uzuale etc.
Dei modul de operare al controalelor ActiveX este foarte asemntor cu cel al
controalelor OLE exist unele deosebiri:
Editarea lor este permis n modul Design mode iar activarea lor n Run
Mode. Bascularea ntre cele dou moduri este realizat n Word (dar i n
Excel) prin acionarea butonului
, din tab-ul Developer. n
PowerPoint se trece n Slide Show pentru a se ajunge n Run Mode i se
revine ntr-un context de editare pentru Design Mode.
Proprietile controalelor se stabilesc dup ce se acioneaz butonul
.
92
Word
Controale ActiveX
Pentru editarea i utilizarea documentelor Word active se impune respectarea
urmtoarelor reguli:
Controalele ActiveX se pot aduga stratului (layer-ului) de text. Controlul
este inserat ca un caracter, respectndu-se atributele liniei i paragrafului.
Controalele nu pot fi aduse prin drag&drop, cu mouse-ul, n document. La
click pe un control, acesta este inserat n punctul de inserie pe text.
n Design Mode, controalele ActiveX sunt disponibile pentru editare.
n Run Mode controalele reacioneaz la evenimente.
Exemplu______________________________________________________________________________________________
Un co de cumprturi online...
Se creeaz un tabel Word cu urmtorul coninut:
Produs
Pre
Aparat foto
Sony digital DSC-H2
1188
Laptop
Acer TM2492NWLMi
1978
http://www.sony.com/
http://global.acer.com/
Telefon GSM
Motorola V3
428
http://www.motorola.com/
Coul de cumprturi:
Goleste Cosul
Pe layer-ul de text:
Se introduc textele: Produs, Pre, Aparat foto, Laptop, Telefon GSM, Coul de
cumprturi:, Suma totala de plat:.
Se includ imaginile (Insert Picture).
Se stabilesc Hyperlink-urile:http://www.sony.com/, http://global.acer.com/,
http://www.motorola.com/ care pot fi activate prin Ctrl+Click.
93
Tip
lblArt1
Etichet
Caption
lblArt2
Etichet
Caption
Acer TM2492NWLMi
lblArt3
Etichet
Caption
Motorola V3
lblPret1
Etichet
Caption
1188
lblPret2
Etichet
Caption
1978
lblPret3
Etichet
Caption
428
lblTotal
Etichet
Caption
cboCos
Proprietate
Valoare proprietate
ComboBox
btnAdaug1
Buton
Caption
btnAdaug2
Buton
Caption
btnSterg
Buton
Caption
btnReset
Buton
Caption
94
cboCos.Clear
End Sub
Private Sub btnSterg_Click()
If cboCos.ListCount >= 1 Then
If cboCos.ListIndex <> -1 Then
lblTotal.Caption = Val(lblTotal.Caption) -
Val(cboCos.Text)
cboCos.RemoveItem (cboCos.ListIndex)
cboCos.ListIndex = -1
cboCos.Text = "" 'valoarea afiat este nul
'(irul vid)
End If
End If
End Sub
Cteva precizri:
Proprietile controalelor au fost tratate, mai pe larg, ntr-un capitol
anterior.
Prin acionarea butonului
95
Picture
Combo Box
Rich Text
Drop-Down List
Date Picker
Rich Text
Paragraf
Text
Picture
Combo Box
Drop-Down List
Date Picker
Proprieti:
generale: Title, Tag;
pentru redactare: tergere, editare;
pentru caracteristici specifice (n cazul de fa pentru un control Drop-down
List).
96
Exemplu______________________________________________________________________________________________
ntr-un document Word se creeaz un formular pe care se introduc urmtoarele
controale Content: Text, Drop-Down List, Rich Text, Date Picker:
Text
Drop-Down List
Rich Text
Date Picker
97
Controlul Drop-Down
dou elemente:
Dup ieirea din
______________________________________________________________________________________________Exemplu
Excel
Apare necesitatea, de multe ori, ca acelai proces de calcul, s se desfoare n mai
multe zone (domenii de celule) ale foii de calcul electronic. Prin procedeul Recording se fac
limitri la domeniul de celule curent, memornd-se adresele de celule.
Exemplu______________________________________________________________________________________________
Crearea unei macrocomenzi pentru calcule financiare (funcia FV):
Record Macro (Macro Name : functiaFV, Shortcut key: Ctrl+f);
Editarea datelor pentru calcul i a funciei FV:
98
Range("A3").Select
ActiveCell.FormulaR1C1
Range("A4").Select
ActiveCell.FormulaR1C1
Range("C1").Select
ActiveCell.FormulaR1C1
Range("C2").Select
ActiveCell.FormulaR1C1
Range("C3").Select
ActiveCell.FormulaR1C1
Range("C4").Select
ActiveCell.FormulaR1C1
End Sub
= "Plata"
= "Valoare FV"
= "0.1"
= "2"
= "100"
= "=FV(R[-3]C,R[-2]C,R[-1]C)"
99
Cteva precizri:
Variabilele l i c rein adresa (colul stnga sus al noului domeniu de celule);
Cu Cells(, ...).Value se afieaz valorile textuale i numerice (datele de intrare
sunt iniializate cu zero);
Cu Cells(, ...).Activate sunt activate celule de calcul pentru a reine adresele
lor;
a1, a2, a3 sunt adresele celulelor ce conin datele necesare calculului;
Funcia FV este scris textual i rezult prin concatenarea unor iruri de
caractere.
Macroinstruciunea definit anterior se lanseaz prin shortcut-ul Ctrl+f, dar
poate fi asociat i unui control (ActiveX sau Form).
Se pot aduga controale, la caiete sau foi de calcul, lng datele pe care le
controleaz, astfel nct operarea n foaia de calcul s se efectueze ct mai cursiv i mai
pe neles.
n Excel, controalele din grupul Controls al tab-ului Developer,
sunt de dou tipuri:
Form Controls sunt controale crora li se asociaz
macrocomenzi;
ActiveX Controls sunt controale de tipul celor tratate
anterior.
Form Controls devin active imediat dup ce au fost introduse, acionarea lor
ducnd la rularea macroinstruciunii asociate. Butoanele Design Mode i Properties nu
vizeaz acest grup de controale, ci doar controalele ActiveX.
100
Exemplu______________________________________________________________________________________________
ntr-un document Excel se introduce un Button (Form Control).
______________________________________________________________________________________________Exemplu
101
'
Sheet2.CommandButton1.Caption = "Run"
'
Aplicaii