Sunteți pe pagina 1din 25

Obiectele Microsoft Excel

Obiectul Application Obiectul Workbook

Deschiderea unui Workbook


Metoda GetOpenFilename

Crearea/salvarea unui Workbook


Metoda Add (colecia Workbooks) Metoda aveAs Metoda ave Metoda Get aveAsFilename

!nchiderea unui Workbook


Metoda Close Obiectul Range

"e#erine de tip A$ sau nume de domeniu %tili&area indicilor de linii 'i coloane %tili&area propriet(ii O##set %tili&area propriet(ilor Current"e)ion 'i %sed"e)ion *arcur)erea unui domeniu de celule
%tili&area instruciunii For +ach,-e.t %tili&area instruciunii Do,/oop %tili&area propriet(ii Address Evenimentele din Excel 97

*ermiterea 'i inhibarea evenimentelor %tili&area evenimentelor +venimentele obiectului Worksheet


+.emplu

+venimentele obiectului Chart


+.emplu +.emplu

+venimentele obiectului Workbook +venimentele obiectului Application %tili&area modulelor clas( cu evenimente Visual Basic suport un set de obiecte care corespund direct elementelor din Microsoft Excel, cele mai multe identificabile dup denumirea uzual din mediul Excel. Astfel, obiectul Workbook reprezint un caiet, obiectul Worksheet reprezint o foaie de calcul iar obiectul Ran e reprezint un domeniu de celule dintr!o foaie de calcul. "iecare element din Microsoft Excel # caiet, foaie, dia ram, celul etc. # poate fi reprezentat printr!un obiect $n Visual Basic. %rin scrierea unor proceduri, care controleaz aceste obiecte, se pot automatiza opera&iile efectuate $n Excel. %entru a 'edea modelul de obiecte pentru Microsoft Excel, se 'a cuta (Microsoft Excel )b*ects( $n +elp. %entru a 'edea fi,ierele de +elp necesare se 'a urma calea- Visual Basic Editor Help Contents and Index (Contents tab) Microsoft Excel Visual Basic Reference Shortcut to Microsoft Excel Visual Basic Reference. "i,ierele sunt disponibile dac la instalarea aplica&iei s!a marcat boxa Online Help for Visual Basic.

.intre cele peste /00 de obiecte care alctuiesc ierarhia de obiecte Excel, 'om prezenta $n acest capitol doar pe cele mai importante. %rezentarea este simplificat ,i din cauz c prezentarea obiectelor Word a conturat problematica modelelor de obiecte )ffice ,i a fixat anumite re uli de operare cu aceste obiecte.

O iectul !pplication
1ele mai multe propriet&i ale obiectului !pplication Excel controleaz atributele de 'izualizare ale ferestrei aplica&iei sau comporatrea lobal a aplica&iei. .e exemplu, 'aloarea propriet&ii "ispla#$or%ulaBar este 2rue dac bara de formule este 'izibil, iar 'aloarea propriet&ii Screen&pdatin' este "alse dac actualizarea ecranului este inhibat. 3n plus, propriet&ile obiectului !pplication ofer acces la obiectele situate mai *os $n ierarhie de obiecte 4constituie ceea ce s!a numit accesori5. Astfel, proprietatea (indo)s d acces la colec&ia (indo)s 4reprezent6nd toate ferestrele deschise $n aplica&ie5, proprietatea (or* oo*s d colec&ia (or* oo*s a tutror caietelor deschise etc. .in aceast cate orie enumermo o o o o o o o

Charts, colec&ia tuturor foilor de tip chart, "ialo's, colec&ia tuturor dialo urilor predefinite $n mediul Excel, +a%es, colec&ia tutror numelor create $n caietul acti', Recent$iles, colec&ia fi,ierelor utilizate recent 4dup lista din meniul "ile5, Sheets, colec&ia tutror foilor deschise $n caietul acti', (indo)s, (or* oo*s, (or*sheets, colec&ia tuturor foilor de calcul din caietul acti'.

Returnarea unui obiect particular din colec&ie se efectueaz dup procedurile enerale, explicate $n capitolele introducti'e. 3n cate oria accesorilor mai pot fi $ncadrate propriet&ile care returneaz un obiect Ran'e- !cti,eCell, Cells, Ro)s, Colu%ns, Selection 4dac este selectat un domeniu de celule5. %ropriet&ile !cti,e(or* oo*- !cti,eSheet- !cti,eChart ,i !cti,e(indo) returneaz obiectele care reprezint elementele acti'e corespunztoare din Excel. Anumite metode ,i propriet&i care se aplic obiectului !pplication se aplic ,i unor obiecte situate mai *os $n ierarhie. 7tilizarea acestor propriet&i ,i metode la ni'elul !pplication 'or modifica toate caietele, foile deschise. .e exemplu, metoda Calculate aplicat la ni'elul !pplication produce recalcularea tuturor foilor, din toate caietele, pe c6nd utilizat la ni'el de (or* oo* sau de (or*sheet produce recalcularea doar a foilor locale.

O iectul (or* oo*


.up cum se ,tie, similarul unui document din Word este $n Excel caietul 48orkbook5. .eschiderea sau $nchiderea unui fi,ier $n Excel implic deci deschiderea sau $nchiderea unui caiet. 9n Visual Basic, metodele utilizate la lucrul cu fi,iere sunt metode ale obiectului (or* oo* sau ale colec&iei (or* oo*s.

"eschiderea unui (or* oo*


%entru a deschide un caiet se utilizeaz metoda Open. Metoda este aplicat $ntotdeauna colec&iei (or* oo*s, returnat prin proprietatea lobal cu aceea,i denumire. Exemplul urmtor deschide caietul (Book/.xls( din folderul curent ,i afi,eaz apoi 'aloarea din prima celul a primei foiub Open0ook$() et m10ook 2 Workbooks3Open(Filename4250ook$3.ls5) Ms)0o. m10ook3Worksheets($)3"an)e(5A$5)36alue +nd ub

Este de remarcat c obiectul (or* oo* returnat de metod se refer la caietul deschis, care rm6ne acti'. Asupra utilizrii utilizrii sau nu a cii pe care se se,te fi,ierul se 'or reciti cele spuse la deschiderea documentelor Word. Exist dou foldere remarcabile pentru care se poate ob&ine $n mod automat caleafolderul cu fi,ierele Excel executabile ,i folderul :ibrar; 4creat automat la instalarea aplica&iei5. )b&inerea acestor ci se realizeaz prin propriet&ile .ath ,i /i rar#.ath ale obiectului !pplication5. Astfel
+7+*ath 2 Application3*ath 8 Application3*ath eparator /ib*ath 2 Application3/ibrar1*ath 8 Application3*ath eparator

returneaz, respecti', calea ctre fi,ierele executabile Excel ,i calea ctre fi,ierele de bibliotec. ) cale returnat se termin cu separatorul adec'at sistemului pe care se execut aplica&ia, astfel $nc6t codul este independent de platform Windo8s sau Macintosh5. 9nstruc&iunile
#-ame 2 /ib*ath 8 50ook$3.ls5 et m10ook 2 Workbooks3Open(Filename42#-ame)

considerate $mpreun cu atribuirea 'ariabilei :ib%ath de mai sus, realizeaz deschiderea fi,ierului Book/.xls din folderul :ibrar;. <e poate lsa utilizatorului op&iunea de a decide aupra numelui fi,ierului care se deschide. Acest lucru se poate realiza prin metoda 0etOpen$ilena%e a obiectului !pplication.

Metoda afi,eaz cutia de dialo standard Open- dar, $n loc s deschid fi,ierul selectat, returneaz un ,ir cu numele complet calificat al fi,ierului. 7rmtorul exemplu demonstreaz metodaub DemoG+tOpenFilename() Do #-ame 2 Application3GetOpenFilename /oop %ntil #-ame 9: False Ms)0o. 5Openin) 5 8 #-ame et m10ook 2 Workbook3Open (Filename42#-ame) +nd ub

Metoda 0etOpen$ilena%e
Afi,eaz dialo ul Open ,i returneaz numele de fi,ier selectat fr a deschide efecti' fi,ierul. expression.0etOpen$ilena%e4"ile"ilter, "ilter9ndex, 2itle, Button2ext, Multi<elect5 unde expression este o expresie care returneaz un obiect Application. FileFilter este de tip Variant, op&ional. Este un ,ir specific6nd criteriile de filtrare a fi,ierelor listate $n dialo . =irul const $n perechi formate din ,irul de filtrare ,i din specificarea filtrului $n format M<!.)<, toate elementele fiind separate prin 'ir ule. 3n partea rezer'at, dou filtre M<!.)< sunt separate prin (>(. Exemple- (2ext "iles 4?.txt5,?.txt,Add!9n "iles 4?.xla5,?.xla(, (Visual Basic "iles 4?.bas> ?.txt5,?.bas>?.txt(, implicit se consider (All "iles 4?.?5,?.?(. FilterIndex este de tip Variant, op&ional. <pecific indexul criteriului de filtrare implicit. de la / la numrul de filtre specificat $n FileFilter. 9mplicit se consider /. Title este de tip Variant, op&ional. <pecific titlul boxei de dialo . 9mplicit este ()pen(. Button2ext este specific pentru Macintosh. MultiSelect este de tip Variant, op&ional. Este 2rue atunci c6nd se pot selecta mai multe nume de fi,iere, "alse dac este permis selectarea unui sin ur fi,ier. 9mplicit este "alse. 3n cazul selec&iei multiple se 'a returna un tablou de denumiri 4chiar dac este selectat un sin ur fi,ier5. Metoda returneaz numele fi,ierului selectat sau numele introdus de utilizator. 3n cazul c6nd utilizatorul anuleaz boxa 4prin Cancel5, se returneaz "alse. Metoda poate schimba at6t folderul curent c6t ,i unitatea.

Crearea 1i sal,area unui (or* oo*

<e creeaz un nou caiet prin aplicarea metodei !dd la colec&ia (or* oo*s. Valoarea returnat se 'a atribui 4prin <et5 unei 'ariabile obiect pentru a putea referi noul caiet $n pro ram. @oul 8orkbook de'ine acti'.

Metoda !dd (colec2ia (or* oo*s)


Returneaz un obiect (or* oo*. <intaxa expression.Add42emplate5 unde expression este o expresie care returneaz un obiect (or* oo*s. 4Metoda se poate aplica, cu parametri specifici, tuturor colec&iilor.5 Template este de tip Variant, op&ional. .etermin modul de creare a noului caiet. .ac ar umentul este un ,ir cu numele 4posibil cu cale5 unui fi,ier Excel, noul caiet este deschis dup modelul fi,ierului specificat. Ar umentul poate fi o constant 4de tipul enumerat AlWBA2emplate5, caz $n care se 'a crea un caiet cu o sin ur foaie de tipul determinat de constant. Valorile posibile sunt- xlWBA21hart, xlWBA2ExcelB9ntlMacro<heet, xlWBA2ExcelBMacro<heet sau xlWBA2Worksheet. .ac ar umentul este omis, atunci se creeaz un caiet cu un numr de foi e al cu proprietatea SheetsIn+e)(or* oo* a obiectului !pplication5. <al'area unui caiet se efectueaz prin metoda Sa,e!s 4la prima sal'are5 sau prin metoda Sa,e. Exist, similar metodei 0etOpen$ilena%e, metoda 0etSa,e!s$ilena%e 4pentru !pplication5.

Metoda Sa,e!s
are sintaxa expression.Sa,e!s4"ilename, "ile"ormat, %ass8ord, WriteRes%ass8ord, Read)nl;Recommended, 1reateBackup, AccessMode, 1onflictResolution, Add2oMru, 2ext1ode%a e, 2extVisual:a;out5 unde expression returneaz un obiect (or* oo*. Filename, op&ional, Variant. 1on&ine numele noului fi,ier, poate include o cale. FileFormat, op&ional, Variant. <pecific formatul de fi,ier utilizat la sal'are. :ista formatelor admise 4cele care se pot selecta ,i la sal'area din Excel5 se se,te $n +elp la proprietatea $ile$or%at.

Password, op&ional, Variant. 7n ,ir unde capitalizarea este considerat 4cel mult /C caractere5 care con&ine parola de prote*are a fis,ierului. WriteResPassword, op&ional, Variant. 7n ,ir care con&ine parola necesar pentru scrierea fi,ierului. .ac la deschidere nu se d parola exact, fi,ierul este deschis doar $n citire. ReadOnlyRecommended, op&ional, Variant. Este 2rue pentru a afi,a, la deschidere, un mesa* cu recomandarea de a deschide fi,ierul doar $n citire. 1reateBackup, op&ional, Variant. Este 2rue dac se creeaz o copie backup. AccessMode, op&ional, Variant. 1on&ine modul de acces la 8orkbook. %oate fi una dintre constantele 4din tipul Al<a'eAsAccessMode5- xl<hared 4shared list5, xlExclusi'e 4exclusi'e mode5 sau xl@o1han e 4nu se modific modul de acces5. 7ltima 'aloare este cea implicit. Ar umentul este i norat dac se sal'eaz xl<hared fr a schimba numele fi,ierului. %entru schimbarea modului de acces se utilizeaz metoda Exclusi,e!ccess. ConflictResolution, op&ional, Variant. <pecific modul de rezol'are a conflictelor de schimbare $n cazul c6nd fi,ierul este shared. %oate fi una dintre constantele 4de tip Al<a'e1onflictResolution5- xlUserResolution 4afi,eaz un dialo pri'ind conflictul ,i rezol'area55, xl:ocal<ession1han es 4accept automat modificrile locale5 sau xl)ther<ession1han es 4accept celelalte schimbri $n locul modificrilor locale5. %rima constant este 'aloarea implicit. AddToMru, op&ional, Variant. Este 2rue dac se adau numele fi,ierului la lista fi,ierelor utilizate recent. 9mplicit este "alse. TextCodePage, Text isual!ayout, op&ionale, Variant. @eutilizate $n 'ersiunea 7.<. En lish.

Metoda Sa,e
<al'eaz modificrile caietului specificat. expression.Sa,e unde expression returneaz un obiect Workbook. %entru marcarea unui fi,ier drept sal'at fr a!l scrie efecti' pe disc, se 'a atribui 'aloarea 2rue propriet&ii Sa,ed.

Metoda 0etSa,e!s$ilena%e

<imilar metodei 0etOpen$ilena%e, aceast metod afi,eaz dialo ul standard Sa,e !s, returneaz un nume de fi,ier, dar nu sal'eaz nici un fi,ier. expression.0etSa,e!s$ilena%e49nitial"ilename, "ile"ilter, "ilter9ndex, 2itle, Button2ext5 unde expression este o expresie care returneaz un obiect !pplication. InitialFilename, op&ional, Variant. <pecific numele de fi,ier propus. .ac acest nume este omis, atunci se 'a utiliza numele caietului acti'. FileFilter, op&ional, Variant. =irul care specific criteriul de filtrare. %entru structura ,irului se 'a re'edea metoda 0etOpen$ilena%e de la deschiderea documentelor. FilterIndex, op&ional, Variant. Este indicele criteriului de filtrare, de la / la numrul de filtre dat la "ile"ilter. 9mplicit este /. Title, op&ional, Variant. 2itlul boxei de dialo . "uttonText este specific Macintosh. Metoda returneaz numele de fi,ier selectat sau cel introdus de utilizator. @umele returnat poate include ,i calea. Metoda returneaz "alse dac dialo ul este $nchis de utilizator prin 1ancel. Metoda poate schimba folderul sau unitatea curent. 7rmtorul exemplu creaz un nou caiet ,i!l sal'eaz prin metoda 0etSa,e!s$ilena%eub CreateAnd ave() et ne;0ook 2 Workbooks3Add Do #-ame 2 Application3Get aveAsFilename /oop %ntil #-ame 9: False ne;0ook3 aveAs Filename42#-ame +nd ub

3nchiderea unui (or* oo*


%entru a $nchide un 8orkbook, se 'a aplica metoda Close a obiectului (or* oo*. 3nchiderea poate a'ea loc cu sau fr sal'area modificrilor.

Metoda Close
%roduce $nchiderea obiectului. Aplicat colec&iei Workbooks are sintaxa expression.Close

unde expression returneaz un obiect (or* oo*s. .ac exist modificri ale caietelor, se 'a afi,a dialo ul de intero are asupra e'entualei sal'ri. Aplicat obiectelor (indo) ,i (or* oo* metoda are sintaxa expression.Close4<a'e1han es, "ile@ame, RouteWorkbook5 unde expression este o expresie care returneaz un obiect (or* oo* sau (indo). Sa#eC$anges este op&ional, Variant. .ac nu exist modificri, ar umentul este i norat. .ac exist modificri $n caiet dar caietul mai apare ,i $n alt fereastr deschis, atunci ar umentul este de asemenea i norat. .ac exist modificri ,i caietul nu mai apare $n alt fereastr, atunci sal'area se efectueaz dup 'alorile- 2rue # sal'area modificrilor sub numele dat la "ile@ame sau dialo <a'e As> "alse # nu se sal'eaz modificrile> ar ument omis # intero are utilizator. File%ame este op&ional, Variant. <al'eaz modificrile sub acest nume. RouteWor&'oo& este op&ional, Variant. .ac nu este indicat nici o rutare 4nu exist nici un Routin'Slip ata,at5, ar umentul este i norat. Altfel, Excel efectueazrutarea documentului dup 'alorile acestui ar ument- 2rue # trimite caietul la urmtorul recipient> "alse # caietul nu este transmis mai departe> omis # intero area utilizatorului asupra trimiterii. 3nchiderea unui 8orkbook din Visual Basic nu execut macrourile !utoDClose din 8orkbook. <e 'a utiliza metoda Run!utoMacros pentru executarea macrourilor automate de $nchidere. Aceste macrouri sunt men&inute $n Excel din moti'e de compatibilitate, deci se refer la foi automatizate $n 'ersiuni Excel mai 'echi. Exemplul urmtor arat deschiderea unui caiet, modificri temporare ale caietului ,i $nchiderea fr sal'area modificrilorub OpenChan)eClose() Do #-ame 2 Application3GetOpenFilename /oop %ntil #-ame 9: False et m10ook 2 Workbooks3Open (Filename42#-ame) < Aici se modi#ic( #oile de calcul m10ook3Close aveChan)es42False +nd ub

O iectul Ran'e

%rin intermediul unui obiect Ran'e se poate referi o sin ur celul, un domeniu de celule, o $ntrea linie sau coloan, o selec&ie cu arii multiple sau un domeniu E!.. .in acest moti' obiectul Ran'e este oarecum neuzual prin aceea c poate reprezenta at6t o sin ur celul c6t ,i o mul&ime de celule. @u exist un obiect colec&ie pentru Ran'e, as c un obiect Ran'e poate fi 6ndit fie ca un obiect, fie ca o colec&ie, dup situa&ie. Exist foarte multe propriet&i ,i metode care returneaz un obiect Ran e-

Acti'e1ell BottomRi ht1ell 1ells 1han in 1ells

.irect.ependents Ro8"ields .irect%recedents Entire1olumn EntireRo8 Ro8Ran e Ro8s <election 2ableRan e/ 2ableRan eF 2op:eft1ell 7sedRan e VisibleRan e

1ircularReference @ext 1olumns 1urrentArra; 1urrentRe ion .ependents )ffset %a eRan e %recedents Ran e

%entru specificarea exact a acestor propriet&i ,i metode se 'or cuta subiectele respecti'e $n +elp. 3n continuare sunt men&ionate, mai mult prin exemple, moduri de lucru cu obiecte Ran'e.

Referin2e de tip !4 sau nu%e de do%eniu


7nul dintre modurile uzuale de returnare a unui obiect Ran e este acela al utilizrii unei referin&e de tip A/ sau al unui nume definit.

inserarea unei 'alori $ntr!o celul-

Worksheets(5 heet$5)3"an)e(5A$5)36alue 2 = inserarea unei formule $ntr!o celul"an)e(50$5)3Formula 2 52>?$@A"A-D()5 inserarea aceleea,i 'alori $ntr!un $ntre "an)e(5C$4+=5)36alue 2 B ,ter erea con&inutului unor

domeniu de celule-

celuledomeniu numit 4la ni'el de 8orkbook5celule dintr!un domeniu numit 4la ni'el de

"an)e(5A$5C5+=5)3ClearContents <tabilirea stilului bold pentru un

"an)e(5m1"an)e5)3Font30old 2 Drue Atribuirea aceleea,i 'alori fiecrei

foaie5"an)e(5 heet$E1our"an)e5)36alue 2 = <etarea unei 'ariabile obiect la un domeniuet obF"an)e 2 "an)e(5m1"an)e5)

Este de men&ionat c expresiile care nu sunt calificate se refer la foaia curent, deci multe din exemplele de mai sus nu ar opera dac foaia curent este o foaie de tip chart. ) cauz frec'ent de erori este utilizarea propriet&ii Ran'e ca ar ument al altei metode fr calificarea complet a obiectului (or*sheet cruia i se aplic Ran'e. Exemplul urmtor
ort"an)e() Worksheets(5 heet$5)3"an)e(5A$40$@5)3 ort G He1$42"an)e(5A$5)C Order$42.lDescendin) +nd ub ub

nu 'a func&iona corect dec6t dac <heet/ este foaia acti', altminteri calificarea ar umentului Ge;/ nu este complet. %entru o execu&ie independent de context ar trebui folosit
He1$42Worksheets(5 heet$5)3"an)e(5A$5)

&tili5area indicilor de linii 1i coloane


) celul specific poate fi returnat utiliz6nd indicii numerici de linie ,i coloan pentru celula referit.

%entru a da o 'aloare celulei A/ se poate utilizaacti'-

Worksheets(5 heet$5)3Cells($C$)36alue 2 = %entru a insera o formul $n celula B/ din foaia

Cells($CI)3Formula 2 52>?$@A"A-D()5 %entru a fixa o 'ariabil obiect la domeniul

format din celula A/

et obF"an)e 2 Worksheets(5 heet$5)3Cells($C$)

Referin&ele prin indici sunt utile mai ales la parcur erea unui bloc de celule prin instruc&iuni de ciclare. Exemplul urmtor anuleaz toate celulele din domeniul A/-./0, cu o 'aloare mai mic dec6t 0.0/ub "oundDoJero() For r;Knde. 2 $ to $@ For colKnde. 2 $ to L K# Worksheets(5 heet$5)3Cells(r;Knde.CcolKnde.) 9 @3@$ Dhen Worksheets(5 heet$5)3Cells(r;Knde.CcolKnde.)36alue 2 @ +nd K# -e.t colKnde& -e.t r;Knde. +nd ub

3n exemplul urmtor se arat o solu&ie la listarea, $ntr!o foaie separat, a tuturor denumirilor create $n caietul acti' ,i a domeniilor referite de acestea.
ub /ist-ames() et ne; heet 2 Worksheets3Add K 2 $ For +ach nm in ActiveWorkbook3-ames -e; heet3Cells(iC$)36alue 2 nm3-ame -e; heet3Cells(iCI)36alue 2 5< 5 8 nm3"e#ersDo -e.t nm -e; heet3Columns(5A405)3AutoFit +nd ub

&tili5area propriet62ii Offset


Atunci c6nd este necesar referirea la un domeniu prin deplasri relati'e la alt domeniu de celule, se poate utiliza proprietatea Offset, a obiectului Ran'e, care $n ar umentele RowOffset ,i ColumnOffset arat deplasarea fa& de obiectul Ran'e curent. Este returnat un nou obiect Ran'e. Exemplul urmtor determin c6te'a tipuri de date din celulele domeniului A/-A/0, tipurile determinate fiind $nscrise, ca text, $n celula corespunztoare din dreapta, B/-B/0.
ub canColumn () For +ach c Kn Worksheets(5 heet$5)3"an)e(5A$4A$@5)3Cells K# Application3KsDe.t(c36alue) Dhen c3O##set(@C$)36alue 2 5De.t5 +lseK# Application3Ks-umber (c36alue) Dhen c3O##set(@C$)36alue 2 5-umber5 +lseK# Application3Ks/o)ical (c36alue) Dhen c3O##set(@C$)36alue 2 50oolean5 +lseK# Application3Ks+rror (c36alue) Dhen

c3O##set(@C$)36alue 2 5+rror5 +lseK# c36alue 2 55 Dhen c3O##set(@C$)36alue 2 5(blank cell)5 +nd K# -e.t c +nd ub

&tili5area propriet62ilor CurrentRe'ion 1i &sedRan'e


Aceste dou propriet&i, explicate $n continuare, sunt utile atunci c6nd nu se ,tie de la $nceput c6t de mare este domeniul pe care se opereaz. %rin re'iunea curent6 se $n&ele e un domeniu dreptun hiular de celule, limitat de linii ,i coloane oale, e'entual de mar inile foii de calcul ,i de linii ,i coloane oale. %roprietatea CurrentRe'ion se aplic unui obiect Ran'e ,i pot fi mai multe re iuni curente pe o foaie de calcul, dup obiectul Ran'e cruia i se aplic proprietatea. %roprietatea returneaz un obiect Ran'e, reflect6nd extensia, $n sensul prezentat mai sus, al obiectului Ran'e cruia i se aplic proprietatea. "o%eniul utili5at este determinat de celule ne'ide situate cel mai la st6n a sus ,i cel mai la dreapta *os $ntr!o foaie de calcul. 7n asemenea domeniu con&ine toate celule ne'ide din foaie, ca ,i celule 'ide interpuse p6n la completarea unui domeniu dreptun hiular ,i este unic pe o foaie de calcul. Este natural ca proprietatea &sedRan'e s se aplice obiectului (or*sheet ,i nu unui obiect Ran'e. %roprietatea returneaz un obiect Ran'e. 7rmtorul exemplu aplic celulelor cu 'alori numerice dintr!o list, care $ncepe $n celula A/, formatul numeric 0.0ub Format"an)e () et m1"an)e 2 Worksheets(5 heet$5)3"an)e(5A$5)3Current"e)ion M1"an)e3-umberFormat 2 5@3@5 +nd ub

Exemplul care urmeaz presupune c foaia acti' con&ine date dintr!un experiment desf,urat $n timp- prima coloan con&ine datele calendaristice, a doua coloan con&ine ora $nre istrrii 'alorilor, coloanele a treia ,i a patra con&in msurtorile experimentului. %rocedura prezentat combin primele dou coloane $ntr!o sin ur 'aloare de tip .ate, con'erte,te 'aloarea ob&inut din HM2 4Hreen8ich Mean 2ime5 $n %<2 4%acific <tandard 2ime5 ,i le formateaz. .eoarece nu se ,tie dac exist ,i coloane oale $ntre cele patru coloane cu date, se utilizeaz &sedRan'e.
ub ConvertDates () et m1"an)e 2 Active heet3%sed"an)e m1"an)e3Columns(5C5)3Knsert et dateCol 2 m1"an)e3Columns(5C5) For +ach c Kn dateCol3Cells K# c3O##set(@CM$)36alue 9:55 Dhen c3Formula"$C$ 2 52"CNMIOP"CNM$O M (Q/IL)5 +nd K#

-e.t c dateCol3-umberFormat 2 5mmmMddM1111 hh4mm5 dateCol3Cop1 dateCol3*aste pecial *aste42.l6alues m1"an)e3Columns(5A405)3Delete dateCol3AutoFit +nd ub

Exist ,i alte propriet&i ,i metode care produc fie subdomenii, fie supradomenii pornind de la un obiect Ran'e. %rintre acestea enumerm- !reas- Cells- Colu%nsEntireColu%n- EntireRo)- Ran'e ,i Ro)s.

.arcur'erea unui do%eniu de celule


.intre multiplele moduri de parcur ere a celulelor dintr!un domeniu, se prezint parcur erile prin instruc&iunile $or Each 7 +ext ,i "o 7 /oop, unele fiind de*a utilizate $n exemplele anterioare.

&tili5area instruc2iunii $or Each 7 +ext


Acesta este modul recomandat de parcur ere a elementelor unei colec&ii. 7n exemplu anterior de'ine
ub "oundDoJero () For +ach r Kn Worksheets( heets$5)3"an)e(5A$4D$@5)3Cells K# Abs(r36alue) 9 @3@$ Dhen r36alue 2 @ +nd K# -e.t r +nd ub

%entru ca opera&iunea anterioar s aib loc pe un domeniu selectat de utilizator, se poate utiliza metoda InputBox, specific6ndu!i utilizatorului s selecteze un domeniu de celule. Metoda returneaz un obiect Ran'e care reprezint selec&ia. 1odul este completat cu instruc&iuni de tratare a erorilor uzuale.
ub "oundDoJero () Worksheets(5 heet$5)3Activate On +rror GoDo *ressedCancel et r 2 Application3Knput0o.( G *rompt425 elect a ran)e o# cells5C G D1pe42Q) On +rror GoDo @ For +ach c Kn r3Cells K# Abs(c36alue) 9 @3@$ Dhen c36alue 2 @ +nd K# -e.t c +.it ub

*ressedCancel4 "esume +nd ub

.ac nu se dore,te selectarea de ctre utilizator a domeniului procesat, se poate utiliza proprietatea CurrentRe'ion sau proprietatea &sedRe'ion pentru a returna obiectul Ran'e prelucrat. .e exemplu, dac se ,tie c domeniul $ncepe cu celula A/ ,i nu include linii sau coloane 'ide, atunci se poate utiliza
et r 2 Worksheets(5 heet$5)3"an)e(5A$5)3Current"e)ion

pentru a returna $ntre ul domeniu 4compact5 de celule care se prelucreaz. 7rmtoarele dou exemple arat cum se poate ascunde fiecare a doua coloan din domeniul utilizat $n <heet/. %rimul exemplu, utiliz6nd "or EachI@ext
ub RideColumns () et r 2 Worksheets(5 heet$5)3%sed"an)e For +ach col Kn r3Columns K# col3Column Mod I 2 @ Dhen col3Ridden 2 Drue +nd K# -e.t col +nd ub

Al doilea exemplu, utiliz6nd "orI@extub RideColumns () et r 2 Worksheets(5 heet$5)3%sed"an)e For i 2 $ Do r3Columns3Count K# i Mod I 2 @ Dhen r3Columns(i)3Ridden 2 Drue +nd K# -e.t i +nd ub

&tili5area instruc2iunii "o7/oop


Atunci c6nd procesarea unui domeniu modific domeniul 4de exemplu prin ,ter erea unor liniiJcoloane5, utilizarea instruc&iunii "or EachI@ext nu produce cele mai bune rezultate. <olu&ia este atunci utilizarea instruc&iunii .oI:oop. Exemplul urmtor sorteaz o list ,i elimin liniile elementelor duplicateub "emoveDuplicates () Worksheets(5 heet$5)3"an)e(5A$5)3 ort G He1$42Worksheets(5 heet$5)3"an)e(5A$5) et currentCell 2 Worksheets(5 heet$5)3"an)e(5A$5) Do While -ot Ks+mpt1(currentCell) et ne.tCell 2 currentCell3O##set($C@) K# ne.tCell36alue 2 currentCell36alue Dhen currentCell3+ntire"o;3Delete

+nd K# et currentCell 2 ne.tCell +nd /oop ub

Este de notat c structura repetiti' poate fi $nlocuit prin


Do While currentCell36alue 9: 55 < instruciunile de eliminare a liniilor cheilor duplicate /oop

&tili5area propriet62ii !ddress


Aplicarea propriet&ii Address returneaz adresa de celule a domeniului, adresa fiind sub forma de ,ir de caractere. Aceast utilizare este util, $n eneral, pentru 'erificare ,i depanarea codului. Exemplul urmtor arat o form de completare a unei proceduri anterioare cu instruc&iuni de control a mersului pro ramului
ub RideColumns () et r 2 Worksheets(5 heet$5)3%sed"an)e Ms)0o. r3Address < doar pentru depanare For i 2 $ Do r3Columns3Count K# i Mod I 2 @ Dhen r3Columns(i)3Ridden 2 Drue Ms)0o. r3Columns(i)3Address < doar pentru depanare +nd K# -e.t i +nd ub

Acela,i efect se poate ob&ine prin stabilirea unor expresii de urmrire 48atch expressions5 de forma r(Address ,i r(Columns)i*(Address+ 'alorile respecti'e pot fi examinate $n fereastra I%%ediate. %entru o discu&ie mai pe lar se 'a studia capitolul dedicat depanrii ,i mane'rrii erorilor.

E,eni%entele din Excel 89


) bun parte din codul scris $ntr!o aplica&ie este con&inut $n proceduri de rspuns la e'enimente. 1unoa,terea e'enimentelor ,i ale erea unor rspunsuri adec'ate produc o aplica&ie senziti', 'ie, care interac&ioneaz bine cu utilizatorul. 3n Microsoft Excel KL se pot scrie proceduri e'eniment la ni'elurile- 8orksheet, chart, 8orkbook ,i application. 3n plus fa& de 'ersiuni anterioare, sunt posibile ,i proceduri e'eniment cu ar umente. %rocedurile de rspuns la e'enimente la ni'elurile Worksheet ,i Workbook sunt create $n mod implicit pentru orice foaie de calcul, foaie de dia ram sau caiet. %entru a scrie proceduri de rspuns la e'enimentele de la ni'elul 1hart sau pentru Application, trebuie

s se creeze un nou obiect utiliz6nd cu'6ntul cheie (ithE,ents $ntr!un modul clas. 4'ezi discu&ia din sec&iunea dedicat subiectului $n acest capitol5.

.er%iterea 1i inhi area e,eni%entelor


3n mod uzual, toate e'enimentele sunt permise. 1u alte cu'inte e'enimentele au loc, sunt recunoscute ca atare ,i se execut procedurile corespunztoare fiecrui e'eniment. 3n cazul c6nd nu se dore,te executarea procedurii de rspuns, acest lucru este controlat prin inhibarea e'enimentului, cu efectul nerecunoa,terii e'enimentului de ctre sistem ,i, drept urmare, neexecutarea procedurii asociate. %roprietatea EnableE'ents, a obiectului Application, poate primi 'aloarea 2rue sau "alse dup cum e'enimentele sunt permise sau inhibate. 7rmtorul exemplu execut sal'area caietului fr producerea e'enimentului Before<a'eApplication3+nable+vents 2 False ActiveWorkbook3 ave Application3+nable+vents 2 Drue

&tili5area e,eni%entelor
1ompletarea procedurilor implicite de rspuns la e'enimente se efectueaz prin accesul la codul procedurilor ,i scrierea de cod $n mod uzual. %entru a 'edea procedurile de e'eniment ale unei foi 4de calcul sau dia ram5o

click dreapta pe cotorul foii 4pe bara de *os, unde se 'd cotoarele tuturor foilor din caietul acti'5, comanda Vie) Code din meniul contextual, ale erea numelui e'enimentului $n lista derulant .rocedure, sau meniul :ools, comanda Macro ,i selectarea op&iunii Visual Basic Editor. <e selecteaz foaia dorit $n %ro*ect Explorer, butonul Vie) Code ,i se ale e numele e'enimentului din lista .rocedure.

E,eni%entele o iectului (or*sheet


E,eni%ent !cti,ate "escriere Apare atunci c6nd utilizatorul acti'eaz foaia. Acest e'eniment se 'a utiliza $n locul propriet&ii OnSheet!cti,ate

Before"ou leClic*

Apare atunci c6nd utilizatorul execut un dublu click $ntr!o celul a foii. <e 'a utiliza $n locul propriet&ii On"ou leClic*. Apare atunci c6nd utilizatorul execut un click dreapta $ntr!o celul a foii. Apare c6nd utilizatorul recalculeaz foaia. Acest e'eniment se 'a utiliza $n locul propriet&ii OnCalculate. Apare atunci c6nd utilizatorul schimb o formul dintr!o celul. <e 'a utiliza $n locul propriet&ii OnEntr#. Apare atunci c6nd foaia este acti' ,i utilizatorul acti'eaz o alt foaie. @u apare atunci c6nd utilizatorul mut focusul de la o fereastr la alt fereastr a aceleea,i foi. Acest e'eniment se 'a utiliza $n locul propriet&ii OnSheet"eacti,ate. Apare atunci c6nd utilizatorul selecteaz o celul din foaie.

BeforeRi'htClic*

Calculate

Chan'e

"eacti,ate

SelectionChan'e

) prezentare complet ,i exemple se sesc $n intrrile respecti'e din +elp.

Exe%plu
3n codul care urmeaz, se rea*usteaz dimensiunea coloanelor la fiecare recalculare*rivate ub WorksheetGCalculate () Columns(5A4F5)3AutoFit +nd ub

Este de remarcat c modelul procedurii este accesat printr!una din tehnicile descrise la (7tilizarea e'enimentelor(.

E,eni%entele o iectului Chart

.eclan,ate atunci c6nd utilizatorul acti'eaz sau modific o dia ram, e'enimentele recunoscute de obiectul 1hart sunt prezentate $n tabelul urmtor.

E,eni%ent !cti,ate

"escriere Apare atunci c6nd utilizatorul acti'eaz foaia dia ram 4nu apare la dia ramele scufundate5. Acest e'eniment se 'a utiliza $n locul propriet&ii OnSheet!cti,ate Apare atunci c6nd utilizatorul execut un dublu click pe dia ram. <e 'a utiliza $n locul propriet&ii On"ou leClic*. Apare atunci c6nd utilizatorul execut un click dreapta pe dia ram. Apare c6nd utilizatorul reprezint $n dia ram date noi sau modificate. Apare atunci c6nd foaia este acti' ,i utilizatorul acti'eaz o alt foaie. @u apare atunci c6nd utilizatorul mut focusul de la o fereastr la alt fereastr a aceleea,i foi. Acest e'eniment se 'a utiliza $n locul propriet&ii OnSheet"eacti,ate. Apare atunci c6nd utilizatorul dra heaz date peste dia ram. Apare atunci c6nd utilizatorul dra heaz un domeniu de celule peste dia ram. Apare atunci c6nd utilizatorul execut un click cu un buton al mouse!ului $n timp ce pointerul acestuia este pozi&ionat pe dia ram. Apare la mi,carea pointerului mouse!ului peste dia ram.

Before"ou leClic*

BeforeRi'htClic*

Calculate

"eacti,ate

"ra'O,er

"ra'.lot

Mouse"o)n

MouseMo,e

Mouse&p

Apare atunci c6nd utilizatorul elibereaz un buton al mouse!ului $n timp ce pointerul acestuia este pozi&ionat pe dia ram. Apare la redimensionarea dia ramei. Apare la selectarea unui element al dia ramei. Apare atunci c6nd utilizatorul modific 'aloarea unei punct de pe dia ram.

Resi5e Select SeriesChan'es

E'enimentele foilor de dia rame sunt permise $n mod implicit. %entru a scrie proceduri de e'eniment pentru dia ramele scufundate, trebuie s se creeze un nou obiect utiliz6nd (ithE,ents $ntr!un modul de clas.

Exe%plu
<e schimb culoarea chenarului unui punct atunci c6nd utilizatorul schimb 'aloarea punctului*rivate eriesKnde. As /on)C G 016al *ointKnde. As /on)) et p 2 ActiveChart3 eriesCollection( eriesKnde.)3*oints(*ointKnde.) p30order3ColorKnde. 2 = +nd ub ub ChartG eriesChan)e (016al

E,eni%entele o iectului (or* oo*


Aceste e'enimente se declan,eaz atunci c6nd utilizatorul schimb un caiet sau orice foaie din caietul respecti'.

E,eni%ent !cti,ate

"escriere Apare atunci c6nd utilizatorul acti'eaz caietul. Apare atunci c6nd utilizatorul instaleaz caietul ca un add!in. <e 'a utiliza $n locul macro!ului AutoDAdd.

!ddInInstall

!ddIn&ninstall

Apare atunci c6nd utilizatorul dezinstaleaz caietul ca un add!in. <e 'a utiliza $n locul macro!ului AutoDRemo'e. Apare $naintea $nchiderii caietului. <e 'a utiliza $n locul macro!ului AutoD1lose. Apare $naintea tipririi caietului. Apare $nainte ca utilizatorul s sal'eze foaia. Acest e'eniment se 'a utiliza $n locul propriet&ii OnSa,e. Apare atunci c6nd caietul este acti' ,i utilizatorul acti'eaz un alt caiet. Apare dup ce utilizatorul creeaz o nou foaie. Apare la deschiderea caietului. E'enimentul se 'a utiliza $n locul macroului AutoD)pen. Apare la acti'area unei foi din caiet. <e 'a utiliza $n locul propriet&ii OnSheet!cti,ate. Apare la dublu click pe o celul 4nu este utilizat cu foile dia ram5. <e 'a utiliza $n locul propriet&ii On"ou leClic*. Apare la click dreapta pe o celul a unei foi din caiet 4nu este utilizat cu foile dia ram5. Apare la recalcularea unei foi 4nu este utilizat cu foile dia ram5. <e utilizeaz $n locul propriet&ii OnCalculate.

BeforeClose

Before.rint BeforeSa,e

"eacti,ate

+e)Sheet

Open

Sheet!cti,ate

SheetBefore"ou leClic*

SheetBeforeRi'htClic*

SheetCalculate

SheetChan'e

Apare la modificarea formulei dintr!o celul 4nu este utilizat cu foile dia ram5. <e utilizeaz $n locul propriet&ii OnEntr#. Apare la acti'area altei foi din caiet. <e utilizeaz $n locul propriet&ii OnSheet"eacti,ate. Apare la modificarea selec&iei dintr!o foaie de calcul 4nu func&ioneaz cu foile dia ram5. Apare atunci c6nd utilizatorul mut focusul pe orice fereastr a caietului. <e utilizeaz $n locul propriet&ii On(indo). Apare atunci c6nd utilizatorul mut focusul $n afara oricrei fereastre a caietului. <e utilizeaz $n locul propriet&ii On(indo). Apare atunci c6nd utilizatorul deschide, redimensioneaz, maximizeaz sau minimizeaz orice fereastr a caietului.

Sheet"eacti,ate

SheetSelectionChan'e

(indo)!cti,ate

(indo)"eacti,ate

(indo)Resi5e

%entru explica&ii se 'or studia intrrile corespunztoare din +elp.

Exe%plu
.eschiderea caietului maximizeaz fereastra aplica&iei Excelub WorkbookGOpen () Application3Windo; tate 2 .lMa.imi&ed +nd ub

E,eni%entele o iectului !pplication


Aceste e'enimente se declan,eaz la creareaJdeschiderea unui caiet sau atunci c6nd este modificat orice foaie din orice caiet deschis.

E,eni%ent

"escriere

(pentru !pplication) +e)(or* oo* Sheet!cti,ate Apare la crearea unui nou caiet. Apare atunci c6nd utilizatorul acti'eaz o foaie dintr!un caiet deschis. <e 'a utiliza $n locul propriet&ii OnSheet!cti,ate. Apare la dublu click pe o celul dintr!un caiet deschis 4nu este utilizat cu foile dia ram5. <e 'a utiliza $n locul propriet&ii On"ou leClic*. Apare la click dreapta pe o celul a unei foi dintr!un caiet deschis 4nu este utilizat cu foile dia ram5. Apare la recalcularea unei foi 4nu este utilizat cu foile dia ram5. <e utilizeaz $n locul propriet&ii OnCalculate. Apare la modificarea formulei dintr!o celul 4nu este utilizat cu foile dia ram5. <e utilizeaz $n locul propriet&ii OnEntr#. Apare la acti'area altei foi dintr!un caiet. <e utilizeaz $n locul propriet&ii OnSheet"eacti,ate. Apare la modificarea selec&iei dintr!o foaie de calcul 4nu func&ioneaz cu foile dia ram5. Apare atunci c6nd utilizatorul mut focusul pe orice fereastr deschis $n aplica&ie. <e utilizeaz $n locul propriet&ii On(indo). Apare atunci c6nd utilizatorul mut focusul $n afara oricrei fereastre a aplica&iei. <e

SheetBefore"ou leClic*

SheetBeforeRi'htClic*

SheetCalculate

SheetChan'e

Sheet"eacti,ate

SheetSelectionChan'e

(indo)!cti,ate

(indo)"eacti,ate

utilizeaz $n locul propriet&ii On(indo). (indo)Resi5e Apare atunci c6nd utilizatorul redimensioneaz, maximizeaz sau minimizeaz orice fereastr deschis $n aplica&ie. Apare atunci c6nd se mut focusul pe un caiet deschis Apare la instalarea unui 8orkbook ca un add! in. Apare la dezinstalarea unui 8orkbook ca un add!in. Apare $nainte ca un caiet deschis s fie $nchis. Apare $nainte ca un caiet deschis s fie tiprit. Apare $nainte ca un caiet deschis s fie sal'at. Apare atunci c6nd utilizatorul mut focusul $n afara unui caiet deschis. Apare la adu area unei noi foi la un caiet deschis. Apare atunci c6nd utilizatorul deschide un caiet.

(or* oo*!cti,ate

(or* oo*!ddInInstall

(or* oo*!ddIn&ninstall

(or* oo*BeforeClose (or* oo*Before.rint (or* oo*BeforeSa,e (or* oo*"eacti,ate

(or* oo*+e)Sheet

(or* oo*Open

&tili5area %odulelor clas6 cu e,eni%ente


.eoarece dia ramele scufundate $ntr!o foaie de calcul ,i obiectul !pplication nu au e'enimente permise $n mod implicit, trebuie s se urmeze urmtoarele etape pentru a utiliza e'enimentele recunoscute de aceste obiecte.

<e creeaz un modul de tip clas ,i se declar un obiect de tip Chart sau !pplication cu e'enimente. %entru crearea modulului clas se d comanda Class Module din meniul Insert. %entru permiterea e'enimentelor obiectului !pplication se adau declara&ia din modulul clas ,i se pot scrie procedurile e'enimentelor pentru noul obiect. <e conecteaz obiectul declarat $n modul la obiectul !pplication. %entru aceast opera&iune, $n orice modul se d instruc&iunea

*ublic With+vents App As Application )biectul nou creat apare $n boxa O ;ect

*ublic 7 As -e; +ventClass

unde E'ent1lass este numele dat, de exemplu, modulului clas creat, similar pentru A.

dup crearea instan&ei A a obiectului E'ent1lass se poate stabili obiectul App al clasei E'ent1lass e al cu obiectul !pplication Microsoft Excel.

ub Knitiali&eApp () et 73App 2 Application +nd ub .up executarea procedurii

de ini&ializare, obiectul App din modulul E'ent1lass puncteaz ctre obiectul !pplication Microsoft Excel ,i procedurile e'eniment din modulul clas 'or fi executate la declan,area e'enimentelor.

.e,i procedura poate prea laborioas, ideea poate fi utilizat pentru ca acelea,i proceduri e'eniment s fie asociate mai multor obiecte. < presupunem c am efectuat etapele precedente pentru un obiect dia ram. <!a utilizat astfel declara&ia
*ublic With+vents cht As Chart

$n etapa F ,i codul urmtor


Dim C$ As -e; +ventClass Dim CI As -e; +ventClass ub Knitiali&eCharts () et C$3cht 2 Worksheets ($)3ChartObFects($)3Chart et CI3cht 2 Worksheets ($)3ChartObFects(I)3Chart +nd ub

pentru ini&ializare.

Aceea,i tehnic se poate utiliza ,i pentru obiectele (or*sheet ,i (or* oo* pentru a utiliza e'enimentele noii clase cu mai multe foi de calcul, $n plus fa& de e'enimentele implicite.

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