Sunteți pe pagina 1din 86

INTRODUCERE N Visual Basic for Applications (VBA)

Parte dintro serie de cinci parte a !lo"uri


Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$ #acest articol$
%. &rearea unui program 'rima VBA
(. )crierea de cod VBA #Visual Basic pentru Applciations$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
)cris de Andre. /ould ziua 0! "ulie %0!! 1 !2 comentarii
Introducere #n VBA
Visual Basic for Applications, sau VBA pentru scurt, este un puternic limba3 de
programare care este ncorporat n fiecare produs de Microsoft ffice. Dac utilizai
4ord, E5cel sau 'o.er'oint, esti doar vreodat c-teva clicuri de mouse distan de a
ncepe s scrie propriile programe.
'entru c vom folosi VBA n at-t de multe de blog-urile noastre, ne-am g-ndit c ar fi util
s aib un articol care introduce neiniiai la te6nicile cele mai fundamentale de care
avei nevoie pentru a ncepe lucrul cu VBA. Deci, c6iar dac nu ai scris o linie de cod,
sau a nregistrat un singur macro , pornii aplicaia de birou preferat i citii mai departe
pentru a face primii pai pe drumul de a deveni un programator VBA7
Noiuni de !a$% pentru Visual Basic Editor
"ndiferent de aplicaie Microsoft ffice se nt-mpl s fie folosind, putei fi siguri c
ncorporat n ea este o alt aplicaie numit Visual Basic Editor. Aceasta este aplicaia pe
care o utilizai pentru a scrie cod VBA. E5ist diferite opiuni de meniu sau panglic care
v va duce la VB Editor, n funcie de care cererea i ce versiune de ffice pe care l
utilizai, dar putei obine ntotdeauna s VB Editor cu o comand rapid de la tastatur.
'entru a face acest lucru, inei apsat tasta A89 de pe tastatur, apoi apsai :!!.
Acesta este modul n care VB Editor ar trebui s arate prima dat c-nd o desc6idei.
;n diagrama de mai sus, cele dou ferestre pe care le-am evideniat sunt<
!. Pro&ect E'plorer
%. :ereastra Properties
&ererea VB Editor este aceeai, indiferent de ceea ce aplicaii ffice v aflai n c-nd l
desc6idei. Vei vedea lucruri uor diferite n fereastra Pro&ect E'plorer i Properties(
n funcie de aplicaia pe care l utilizai - diagrama de mai sus este folosind E5cel %002.
'utei utiliza comenzi rapide A89 = :!! n orice moment, pentru a comuta ntre Editor
VB i aplicaia ffice n care lucrai inc6 mult mai rapid dec-t clic cu mouse-ul7
Dac nu putei vedea cele dou ferestre pe care le-am evideniat n imaginea de mai sus,
putei s mergei la meniul Vi$uali$are din partea de sus a VB Editor pentru a le afia.
Avei posibilitatea s facei clic pe opiunile prezentate aici pentru a demonstra cele dou
ferestre relevante, sau de a folosi comenzile rapide de la tastatur care sunt listate l-ng
opiunile din meniu.
)ucrul cu proiecte
>n proiect este numele pentru colectarea de obiecte VBA care fac parte din dosar la care
lucrai. >n proiect este creat n mod automat atunci c-nd desc6idei un nou fiier ffice
#cum ar fi un registru de lucru E5cel, documente 4ord, sau prezentare 'o.er'oint$, i
putei avea un singur proiect asociate cu un fiier.
)ingurul lucru util care le putei face ntr-adevr cu un proiect n acest moment este s-l
redenumii. 'entru a face acest lucru<
!. :acei clic pe proiectul din Pro&ect E'plorer*
%. "ntroducei un nou nume pentru proiect n fereastra Properties*
>n nume de proiect nu poate conine spaii i diverse alte semne de punctuaie - cel mai
bine este s rm-nem la te5t i numere.
Dei putei avea doar un singur proiect VBA pentru fiecare fiier ffice, s-ar putea
vedea, de asemenea, alte proiecte enumerate atunci c-nd te duci n editorul VB. Aceste
proiecte suplimentare includ lucruri cum ar fi registrul de lucru E5cel Personal Macro,
ablonul Normal 4ord, E5cel Add-in-uri, precum i situaia proiectului Global.
VB Editor de la Microsoft 'ro3ect conine
ntotdeauna proiectul Pro&ect+lo!al VBA.
Acest proiect este ataat fiierul ablon
+lo!al*,pt*
;n Microsoft 4ord, vei vedea mereu un
proiect VBA asociat cu ablonul documentul
se bazeaz pe - de obicei, acest lucru va fi
ablonul Nor,al*
)ucrul cu ,odule
;nainte de a putea ncepe s scrie orice cod, avei nevoie pentru a introduce un modul. >n
modul este ec6ivalentul electronic de o bucat de 6-rtie goal. :iecare proiect poate
contine mai multe module - numrul e5act avei va depinde de dimensiunea i
comple5itatea sistemului ce sunt n curs de dezvoltare, precum i preferinele personale
cu privire la modul de a organiza codul.
'entru a introduce un nou modul, facei clic dreapta pe proiectul VBA pe care dorii s
introducei modulul de n, i, din meniul alege< Insert - .odule
De fapt, avei posibilitatea s facei clic dreapta oriunde n proiect la care lucrai pentru a
face acest lucru, dar este mai uor de la faa locului te5tul bold de numele proiectului
atunci c-nd avei mai multe fiiere desc6ise.
&-nd ai fcut acest lucru, vei vedea un nou element n fereastra Pro&ect E'plorer( i
marea ntindere alb a modulului tocmai l-ai creat iniierea cea mai mare din partea
dreapt a ecranului.
Avei posibilitatea s redenumii un modul n acelai mod n care redenumit un proiect
mai devreme< selectai modul n Pro&ect E'plorer( i tastai un nume nou n fereastra de
propriet%i* Din nou, nu avei posibilitatea s utilizai spaii sau cele mai multe dintre
persona3ele de punctuaie - stic? la te5t i numere pentru a fi n siguran7
Acum, c ai introdus i redenumit un modul, putei s facei clic pe ea cu mouse-ul i
ncepei s tastai codul VBA. &itii urmtoarea parte a acestei serii pentru a afla e5act
ceea ce avei nevoie s tastai7
INTRODUCERE N Visual Basic for Applications (VBA)
Parte dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$ #acest articol$
%. &rearea unui program 'rima VBA
(. )crierea de cod VBA #Visual Basic pentru Applciations$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a doua dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA #acest articol$
(. )crierea de cod VBA #Visual Basic pentru Applciations$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
)cris de Andre. /ould ziua 0! "ulie %0!! 1 !2 comentarii
Crearea unui pro"ra, Pri,a VBA
;n prima parte a acestei serii blog am vzut cum s obinei n aplicaia VB Editor i
introduce un modul. Acum suntei gata pentru a ncepe s scrie primul program VBA7
Crearea o su!rutin%
&el mai comun tip de program este foarte probabil s scrie n VBA este numit o
subrutin, sau sub pentru scurt. 'utei ncepe s scrie o subrutin prin tastarea cuv-ntul
su! partea de sus a modulului ai creat mai devreme #suntem folosind E5cel pentru
aceast demonstraie$.
"ntroducei n cuv-ntul su!( urmat de un spaiu pentru a ncepe cu subrutina
dumneavoastr.
Vei auzi o mulime de cuvinte folosite pentru a se referi la o subrutin - program de,
procedura, macro, i sub-de e5emplu. 9oate acestea nseamn, n esen, acelai lucru -
un set de instruciuni pe care o aplicaie va urma atunci c-nd e5ecutai subrutina.
>rmtorul lucru ce trebuie s facei este s tastai un nume pentru subrutin
dumneavoastr. @ume pentru subrutine urmeze aceleai reguli ca i nume de proiecte i
module< nu folosii spaii i s ncerce s evite semne de punctuaie. Dac se poate face
numele de programul unic i descriptiv, apoi cu at-t mai bine7 'rogramul vom scrie n
acest prim e5emplu, va crea pur i simplu un nou registru de lucru E5cel i s scrie un
titlu n celula A! pe prima foaie de lucru. Vom numi CreateAnd)a!elNe/0ile nostru
subrutin. Acest tip n modul dumneavoastr dup cuv-ntul su!*
bservai c am tastat n su! cuv-nt cu litere mici, dar folosit ma3uscule pentru a ncepe
fiecare cuv-nt n numele subrutina. Aceasta este o convenie comun folosit n programare
VBA pentru a face mai uor de citit numele de lucruri.
)ingurul lucru ce trebuie s facei pentru a crea subrutina este s apsai Enter pe
tastatur, astfel face doar asta7
:elicitri, ai creat o subrutin7 Evident, ea nu face de fapt nimic nc, dar ne apropiem
de acea parte.
'resupun-nd c nu ai vedea un mesa3 de eroare, mai multe lucruri ar trebui s se nt-mple
n mod automat atunci c-nd apsai tasta Enter<
&uv-ntul su! sunt capitalizate la su!*
&uv-ntul 1u! este colorat n albastru nc6is.
>n set de paranteze este adugat la sf-ritul numelui subrutina.
&uvintele End 1u! apar pe linia de 3os cursorul te5tul.
9oate aceste lucruri sunt importante, dar VB Editor functioneaza pentru tine - e ca o
versiune mai util i fantezie a cererii @otepad.
Dac ceva nu a mers bine i ai vzut un mesa3 de eroare c-nd ai apsat Enter, cele dou
motive cele mai probabile sunt<
!. Ai pus un spaiu sau alt caracter nepermis n numele.
%. Ai scris un nume, care este rezervat de limba3ul VBA.
Dac vedei acest mesa3 de eroare, doar facei clic pe A i asigurai-v c numele sub
dvs. nu conine spaii sau semne de punctuaie.
;n cazul n care nu funcioneaz, ncercai s sc6imbai numele de sub dumneavoastr i
ncercai din nou.
'-n n prezent, codul pe care l-am scris nu efectua de fapt, orice aciuni utile. Asta e
ceva ce vom rezolva n urmtorul articol din aceast serie, dar n primul r-nd ar trebui s
nvee un pic despre modul n care s se stabileasc n codul frumos.
I,portana de Neat Cod )a2out
Dup ce ai creat subrutina dvs., putei ncepe s tastai codul VBA pe linia urmtoare.
'roblema cu acest lucru este c atunci c-nd te-ai ntors s se uite la codul mai t-rziu vei
gsi te 6olbezi la o bucat oribil n cutarea de te5t care este foarte greu de citit.
'utei face viaa mult mai uoar prin utilizarea linii goale pentru a separa pri din cod,
i crestarea de te5t ntr-o subrutin pentru a face mai uor pentru a vedea unde se ncepe
i se termin. 'entru a face acest lucru, o dat ce ai creat subrutina dvs. prin apsarea
tastei Enter, apsai Enter o dat mai mult pentru a crea un gol ca i apoi apsai 9ab de
pe tastatur pentru a liniu codul.
&ursor te5tul ar trebui s nceap de aici ... ... i se termin aici.
'oate prea un lucru pedant de a face, i punct de vedere te6nic nu este c6iar necesar, dar
se va face cu siguranta viata mai usoara pe termen lung. Avei ncredere n noi7 'utei
vedea, sperm, beneficiile acestei abordri prin compararea celor dou imaginile de mai
3os #c6iar dac nu nelege codul actual7$.
:r un aspect elegant pentru codul este
e5trem de dificil de a lucra n ceea ce se
nt-mpl n aceast subrutin.
)impla adugare a c-teva linii goale i liniu
face tot subrutina mult mai uor de citit.
Ad%u"area de co,entarii la Codul ta
>n alt lucru care v va a3uta enorm atunci c-nd se uit la codul dvs. mai t-rziu este o
serie de comentarii care e5plic ceea ce face programul. 'utei aduga un comentariu, fie
pe o linie separat sau la sf-ritul unei linii de cod prin tastarea un apostrof. Avei
posibilitatea s tastai apoi orice dorii i apsai Enter de la captul liniei pentru a crea
comentariul.
Dup apostrof, tastai n comentariu.
Apsai Enter i te5tul se va transforma de
culoare verde nc6is pentru a indica faptul c
acesta este un comentariu.
'utei vedea mai multe informaii cu privire la arta de a comenta cod aici . Ar putea
prea ca o mulime de efort, dar te vei mulumi pentru a face aceasta mai t-rziu7
Acum, c am creat o subrutin i prevzute de cod n mod corect, suntem gata s nceap
s scrie un cod real. &itii urmtoarea parte a acestei serii pentru a afla cum.
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a doua dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA #acest articol$
(. )crierea de cod VBA #Visual Basic pentru Applciations$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a treia dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA
(. )crierea VBA &ode #Visual Basic pentru Applciations$ #acest articol$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
)cris de Andre. /ould ziua 0! "ulie %0!! 1 !2 comentarii
1crierea de cod VBA
Dac ai fost n urma acestei serii blog p-n acum ar trebui s avei o subrutin nou
create, cu un cursor de te5t intermitent gata i gata s scrie un cod real. Acest articol va
e5plica unele dintre regulile de baz ale scris VBA i s v arate un cuplu de trucuri
pentru a v crea cod c-t mai repede posibil.
+ra,atica de !a$% a VBA
VBA este un limba3, i ca orice limb are reguli gramaticale de care avei nevoie s
urmai dac dorii pentru a face sens atunci c-nd eti BvorbindB, se. ;n general, atunci
c-nd scrii programe VBA, cele mai multe ori vei fi ncercarea de a efectua un fel de
aciune pe un fel de obiect. )tructura de o linie de cod care realizeaz o aciune pe un
obiect este foarte consistent n VBA - ncepe ntotdeauna sentina de referindu-se la ceea
ce vrei s faci ceva pentru, urmat de aciunea pe care dorii s o efectuai, i s utilizai
un punct pentru a separa cele dou. Deci, foarte general vorbind, o propoziie de baz n
VBA ar arata astfel<
T3in"*Action
;n termeni VBA, partea T3in" a pedepsei de mai sus s-ar fi punct de vedere te6nic numit
fie o colecie sau un obiect. 'artea de aciune a pedepsei ar fi mentionat ca o metod.
Deci, modul te6nic de a reprezenta fraza de mai sus ar arata astfel<
O!&ect*.et3od
sau
Collection*.et3od
Av-nd n vedere acest lucru, am de g-nd s scrie o linie de cod care se va aplica metoda
de a ad%u"a la colecia de re"istre de lucru*
1crierea pri,a linie de cod
;n prima noastr linie de cod, partea de colectare a sentinei este cuv-ntul Re"istre de
lucru* Re"istrele de lucru este numele pentru colectarea de toate fiierele E5cel n
prezent desc6ise. "ntroducei-l n codul dvs. i urmai-l imediat cu un punct.
9astarea ntr-un punct dup un cuv-nt care VBA recunoate v prezint o list cu alte
cuvinte pe care le putei utiliza pentru a termina teza.
'utei identifica metode din lista de simbolul lor Bcrmid zbor verdeB.
Dup introducerea n staia de complet ar trebui s vedei o list de cuvinte c6eie apar n
mod automat. Aceast caracteristic este menionat ca Intellisense - nume oribil,
caracteristic util7 >rmtoarea seciune descrie mai multe moduri de a folosi
Intellisense pentru a economisi c-t mai mult tastarea ca posibil.
Utili$area Intellisense a finali$a o propo$itie
Dup ce lista Intelli1ense apare putem finaliza propoziie nostru ntr-un numr de
moduri. 'artea metoda de linia noastr de cod este cuv-ntul Add - pentru a obine acest
cuv-nt n codul dvs. ai putea face oricare dintre urmtoarele<
Opiune Efect
9astai cuv-ntul manual.
&uv-ntul i e tastat i cursorul
rm-ne la captul liniei.
:olosi mouse-ul pentru a defila la cuv-ntul pe care
dorii i dublu-clic pe ea.
&uv-ntul este introdus n mod
automat i cursorul apare imediat
dup cuv-ntul.
>tilizai tastele sgeat sau ncepei s tastai
primele litere ale cuv-ntului pentru a evidenia n
list, apoi apsai 9ab de pe tastatur.
&uv-ntul este introdus n mod
automat i cursorul apare imediat
dup cuv-ntul.
>tilizai tastele sgeat sau ncepei s tastai
primele litere ale cuv-ntului pentru a evidenia n
list, apoi apsai Enter de pe tastatur.
&uv-ntul este introdus n mod
automat i cursorul apare pe o linie
nou sub cel precedent.
'robabil cel mai rapid te6nica de a utiliza n acest e5emplu este s tastai n scrisoarea A,
care va selecta automat cuv-ntul Ad%u"ai n list, i apoi apsai Enter.
:elicitri, ai scris n cele din urm prima linie de cod7 &-nd vom a3unge n 3urul valorii
de la care ruleaz subrutin noastr, aceast linie va crea un nou registru de lucru.
Adugarea de elemente la o colecie este o modalitate standard de a crea noi obiecte n
VBA. &apturi de ecran de mai 3os prezint e5emple de a face acest lucru n 4ord i
'o.er'oint.
;n 4ord, colecia de fiiere desc6ise se numete Docu,ente*
;n 'o.er'oint, colecia de fiiere desc6ise se numete Pre$ent%ri*
1c3i,!area )ucrurile #n VBA folosind Properties
'-n acum am vzut cum de a crea un nou registru de lucru n E5cel VBA prin aplicarea
metodei Add pentru colecia Re"istre de lucru* Acum, c am fcut acest lucru avem
nevoie pentru a aduga un te5t la unele dintre celule n fiierul pe care tocmai am creat.
Vom face acest lucru prin modificarea o proprietate a unui obiect. 'roprieti sunt ca
metode n care acestea apar ntotdeauna dup obiectul sau colecia ntr-o propoziie
VBA. )pre deosebire de metodele, avei posibilitatea s atribuii o valoare pentru o
proprietate s-l sc6imbe ntr-un fel. /ramatica de baz a unei linii de cod pentru a face
acest lucru ar arata astfel<
O!&ect*Propert2 C omeValue
sau
Collection*Propert2 C omeValue
biectul ne intereseaz este o celul, care este menionat ca un Ran"e n E5cel VBA,
iar proprietatea vrem s sc6imbm se numete 4aloare* 9astai urmtoarele n codul<
'utei identifica proprietile din lista de lor B, art-nd cu degetul la o bucat de 6-rtieB
simbol.
+eferindu-se la un obiect Ran"e este puin mai complicat dec-t se refer la colectarea
Re"istre de lucru( deoarece avem de spus care celule noi sunt interesat :acem acest
lucru prin tastarea o referin de celul #aici este A5) n interiorul un set de paranteze
rotunde i dublu- citate. Apoi, am posibilitatea s tastai ntr-un punct pentru a afia lista
de proprieti i metode.
&el mai rapid mod de a selecta proprietatea Valoare de pe lista este de a face
urmtoarele<
!. "ntroducei n litera V pentru a trece la 4alidarea cuv-nt.
%. Apsai n 3os tasta sgeat de pe tastatur pentru a selecta 4aloarea*
(. Apsai 9ab.
Acest lucru ar trebui s v las cu o subrutin aratand ca aceasta<
8ucru numai rmas este de a spune ceea ce vrem pentru a modifica valoarea celulei de.
'utem spune acum ceea ce te5tul vrem s apar n celula. 'entru a face acest lucru avem
nevoie s tastai semnul egal, C urmat de te5tul. 9ot te5tul literal n VBA trebuie incluse
ntr-un set de g6ilimele. 9ip n cele ce urmeaz i apsai Enter de la captul liniei.
&-nd apsai Enter la sf-ritul liniei ar trebui s vedei un spaiu apare pe fiecare parte a
semnului egal.
&a o nfloritur final n programul nostru de foarte de baz, suntem de g-nd s scrie o
linie care va pune data de astzi, ntr-o alt celul de pe foaia de calcul. Aceast linie va
arata foarte similar cu cel pe care tocmai l-am creat, deci tastai codul de mai 3os.
;ncercai s v amintii cel mai rapid mod de a utiliza lista de Intellisense - indiciu< nu
implica mouse-ul7
Apsai Enter la captul liniei i ar trebui s vedei data cuv-nt devine ma3uscul.
Mai degrab dec-t a pune in data ca un ir de te5t literal, am folosit un built-in funcie
VBA numit Data* Aceasta functie calculeaza ce data de astzi este de fiecare dat c-nd
codul se e5ecut #bazat pe ceasul computerului$ i pune rezultatul calculului in celula.
De lucru Out Cu, de a face alte lucruri
Dei ne-am zg-riat abia suprafaa de ceea ce se poate face cu VBA, care le-ai nvat
c-teva reguli de baz ale gramaticii, care v va a3uta ca s nvee cum s faci lucruri noi.
modalitate destul de bun pentru a afla cum de a face alte lucruri n VBA este de a
nregistra un macro . ;nregistrarea unui macro nseamn c putei face o gramada de
lucruri ntr-o aplicaie ffice, formatare unele celule din E5cel, de e5emplu, i s aib
aplicaia scrie cod VBA pentru tine, ca o faci. Aceasta te6nica are unele limitri, dar este
un mod elegant de a descoperi noi metode i proprieti.
Testarea i Rularea o su!rutin%
Deci, ai scris un program, dar nu ai nici o idee n cazul n care se va merge7 >rmtorul
articol din aceast serie v arat cum s e5ecutai un program din punct de vedere al unui
dezvoltator i e5plic c-teva te6nici utile pentru a lsa alte persoane rula cod care le-ai
scris.
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a treia dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA
(. )crierea VBA &ode #Visual Basic pentru Applciations$ #acest articol$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
&omentarii pe acest blog
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a treia dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA
(. )crierea VBA &ode #Visual Basic pentru Applciations$ #acest articol$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
)cris de Andre. /ould ziua 0! "ulie %0!! 1 !2 comentarii
1crierea de cod VBA
Dac ai fost n urma acestei serii blog p-n acum ar trebui s avei o subrutin nou
create, cu un cursor de te5t intermitent gata i gata s scrie un cod real. Acest articol va
e5plica unele dintre regulile de baz ale scris VBA i s v arate un cuplu de trucuri
pentru a v crea cod c-t mai repede posibil.
+ra,atica de !a$% a VBA
VBA este un limba3, i ca orice limb are reguli gramaticale de care avei nevoie s
urmai dac dorii pentru a face sens atunci c-nd eti BvorbindB, se. ;n general, atunci
c-nd scrii programe VBA, cele mai multe ori vei fi ncercarea de a efectua un fel de
aciune pe un fel de obiect. )tructura de o linie de cod care realizeaz o aciune pe un
obiect este foarte consistent n VBA - ncepe ntotdeauna sentina de referindu-se la ceea
ce vrei s faci ceva pentru, urmat de aciunea pe care dorii s o efectuai, i s utilizai
un punct pentru a separa cele dou. Deci, foarte general vorbind, o propoziie de baz n
VBA ar arata astfel<
T3in"*Action
;n termeni VBA, partea T3in" a pedepsei de mai sus s-ar fi punct de vedere te6nic numit
fie o colecie sau un obiect. 'artea de aciune a pedepsei ar fi mentionat ca o metod.
Deci, modul te6nic de a reprezenta fraza de mai sus ar arata astfel<
O!&ect*.et3od
sau
Collection*.et3od
Av-nd n vedere acest lucru, am de g-nd s scrie o linie de cod care se va aplica metoda
de a ad%u"a la colecia de re"istre de lucru*
1crierea pri,a linie de cod
;n prima noastr linie de cod, partea de colectare a sentinei este cuv-ntul Re"istre de
lucru* Re"istrele de lucru este numele pentru colectarea de toate fiierele E5cel n
prezent desc6ise. "ntroducei-l n codul dvs. i urmai-l imediat cu un punct.
9astarea ntr-un punct dup un cuv-nt care VBA recunoate v prezint o list cu alte
cuvinte pe care le putei utiliza pentru a termina teza.
'utei identifica metode din lista de simbolul lor Bcrmid zbor verdeB.
Dup introducerea n staia de complet ar trebui s vedei o list de cuvinte c6eie apar n
mod automat. Aceast caracteristic este menionat ca Intellisense - nume oribil,
caracteristic util7 >rmtoarea seciune descrie mai multe moduri de a folosi
Intellisense pentru a economisi c-t mai mult tastarea ca posibil.
Utili$area Intellisense a finali$a o propo$itie
Dup ce lista Intelli1ense apare putem finaliza propoziie nostru ntr-un numr de
moduri. 'artea metoda de linia noastr de cod este cuv-ntul Add - pentru a obine acest
cuv-nt n codul dvs. ai putea face oricare dintre urmtoarele<
Opiune Efect
9astai cuv-ntul manual.
&uv-ntul i e tastat i cursorul
rm-ne la captul liniei.
:olosi mouse-ul pentru a defila la cuv-ntul pe care
dorii i dublu-clic pe ea.
&uv-ntul este introdus n mod
automat i cursorul apare imediat
dup cuv-ntul.
>tilizai tastele sgeat sau ncepei s tastai
primele litere ale cuv-ntului pentru a evidenia n
list, apoi apsai 9ab de pe tastatur.
&uv-ntul este introdus n mod
automat i cursorul apare imediat
dup cuv-ntul.
>tilizai tastele sgeat sau ncepei s tastai
primele litere ale cuv-ntului pentru a evidenia n
list, apoi apsai Enter de pe tastatur.
&uv-ntul este introdus n mod
automat i cursorul apare pe o linie
nou sub cel precedent.
'robabil cel mai rapid te6nica de a utiliza n acest e5emplu este s tastai n scrisoarea A,
care va selecta automat cuv-ntul Ad%u"ai n list, i apoi apsai Enter.
:elicitri, ai scris n cele din urm prima linie de cod7 &-nd vom a3unge n 3urul valorii
de la care ruleaz subrutin noastr, aceast linie va crea un nou registru de lucru.
Adugarea de elemente la o colecie este o modalitate standard de a crea noi obiecte n
VBA. &apturi de ecran de mai 3os prezint e5emple de a face acest lucru n 4ord i
'o.er'oint.
;n 4ord, colecia de fiiere desc6ise se numete Docu,ente*
;n 'o.er'oint, colecia de fiiere desc6ise se numete Pre$ent%ri*
1c3i,!area )ucrurile #n VBA folosind Properties
'-n acum am vzut cum de a crea un nou registru de lucru n E5cel VBA prin aplicarea
metodei Add pentru colecia Re"istre de lucru* Acum, c am fcut acest lucru avem
nevoie pentru a aduga un te5t la unele dintre celule n fiierul pe care tocmai am creat.
Vom face acest lucru prin modificarea o proprietate a unui obiect. 'roprieti sunt ca
metode n care acestea apar ntotdeauna dup obiectul sau colecia ntr-o propoziie
VBA. )pre deosebire de metodele, avei posibilitatea s atribuii o valoare pentru o
proprietate s-l sc6imbe ntr-un fel. /ramatica de baz a unei linii de cod pentru a face
acest lucru ar arata astfel<
O!&ect*Propert2 C omeValue
sau
Collection*Propert2 C omeValue
biectul ne intereseaz este o celul, care este menionat ca un Ran"e n E5cel VBA,
iar proprietatea vrem s sc6imbm se numete 4aloare* 9astai urmtoarele n codul<
'utei identifica proprietile din lista de lor B, art-nd cu degetul la o bucat de 6-rtieB
simbol.
+eferindu-se la un obiect Ran"e este puin mai complicat dec-t se refer la colectarea
Re"istre de lucru( deoarece avem de spus care celule noi sunt interesat :acem acest
lucru prin tastarea o referin de celul #aici este A5) n interiorul un set de paranteze
rotunde i dublu- citate. Apoi, am posibilitatea s tastai ntr-un punct pentru a afia lista
de proprieti i metode.
&el mai rapid mod de a selecta proprietatea Valoare de pe lista este de a face
urmtoarele<
!. "ntroducei n litera V pentru a trece la 4alidarea cuv-nt.
%. Apsai n 3os tasta sgeat de pe tastatur pentru a selecta 4aloarea*
(. Apsai 9ab.
Acest lucru ar trebui s v las cu o subrutin aratand ca aceasta<
8ucru numai rmas este de a spune ceea ce vrem pentru a modifica valoarea celulei de.
'utem spune acum ceea ce te5tul vrem s apar n celula. 'entru a face acest lucru avem
nevoie s tastai semnul egal, C urmat de te5tul. 9ot te5tul literal n VBA trebuie incluse
ntr-un set de g6ilimele. 9ip n cele ce urmeaz i apsai Enter de la captul liniei.
&-nd apsai Enter la sf-ritul liniei ar trebui s vedei un spaiu apare pe fiecare parte a
semnului egal.
&a o nfloritur final n programul nostru de foarte de baz, suntem de g-nd s scrie o
linie care va pune data de astzi, ntr-o alt celul de pe foaia de calcul. Aceast linie va
arata foarte similar cu cel pe care tocmai l-am creat, deci tastai codul de mai 3os.
;ncercai s v amintii cel mai rapid mod de a utiliza lista de Intellisense - indiciu< nu
implica mouse-ul7
Apsai Enter la captul liniei i ar trebui s vedei data cuv-nt devine ma3uscul.
Mai degrab dec-t a pune in data ca un ir de te5t literal, am folosit un built-in funcie
VBA numit Data* Aceasta functie calculeaza ce data de astzi este de fiecare dat c-nd
codul se e5ecut #bazat pe ceasul computerului$ i pune rezultatul calculului in celula.
De lucru Out Cu, de a face alte lucruri
Dei ne-am zg-riat abia suprafaa de ceea ce se poate face cu VBA, care le-ai nvat
c-teva reguli de baz ale gramaticii, care v va a3uta ca s nvee cum s faci lucruri noi.
modalitate destul de bun pentru a afla cum de a face alte lucruri n VBA este de a
nregistra un macro . ;nregistrarea unui macro nseamn c putei face o gramada de
lucruri ntr-o aplicaie ffice, formatare unele celule din E5cel, de e5emplu, i s aib
aplicaia scrie cod VBA pentru tine, ca o faci. Aceasta te6nica are unele limitri, dar este
un mod elegant de a descoperi noi metode i proprieti.
Testarea i Rularea o su!rutin%
Deci, ai scris un program, dar nu ai nici o idee n cazul n care se va merge7 >rmtorul
articol din aceast serie v arat cum s e5ecutai un program din punct de vedere al unui
dezvoltator i e5plic c-teva te6nici utile pentru a lsa alte persoane rula cod care le-ai
scris.
INTRODUCERE N Visual Basic for Applications (VBA)
Partea a treia dintro serie de cinci parte a !lo"uri
Dac ai auzit de oameni n biroul dumneavoastr vorbesc despre macro-uri sau VBA,
dar nu neleg ce nseamn acestea, aceast serie blog va face totul clar. Este o
introducere la competenele de baz de care avei nevoie pentru a ncepe crearea
propriilor programe n oricare dintre aplicaiile Microsoft ffice.
!. "ntroducere n VBA #Visual Basic for Applications$
%. &rearea unui program 'rima VBA
(. )crierea VBA &ode #Visual Basic pentru Applciations$ #acest articol$
*. +ularea o subrutin n macro-uri VBA
,. 'robleme c-nd se ruleaz cod VBA
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Parte dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. Argumentele care trec #acest articol$
%. 9ransmiterea argumentelor prin referin i valoare
(. Argumentele op ionale i 'aramArraHs
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
'ublicat de AndH Bro.n, pe 0I februarie %0!% 1 ! comentariu
Trece Ar"u,ente
>na dintre cele mai mari c6eile de la scrierea de cod robust, fle5ibil, puternic n VBA
este de a scrie subrutine separat, i s treac argumente #bii de informaie$ pentru a le.
Acest blog e5plic multe moduri de a face acest lucru.
Cu, Ar"u,ente de lucru
'entru a intelege cum functioneaza argumente, considera om de zpad umil #sau
sno..oman ...$. ) ncepem cu o instruciune de baz<
&onstrui un om de zapada
Aici e ceea ce acest lucru ar putea oferi<
8a cel mai de baz, vom presupune c un om de zpad const dintr-o baz, un mi3loc i
un cap.
&u toate acestea, putei personaliza om de zpad dvs. un pic. De e5emplu, ai putea
ncerca<
&onstrui un om de zpad, cu o fa z-mbitoare i butoane
>n om de zpad ceva mai ambiios - acest lucru are butoane si o fata.
)au ai putea merge ntr-adevr la ora<
&onstrui un om de zpad cu plrie, fata, brate, cravat i butoane
Acest om de zpad are o plrie de top, papion, fata, butoane i arme.
Astfel, de t.ea?ing parametrii comanda construi o, de $%pad%( se poate obine o gam
larg de oameni de zpad de ieire. Aceti parametri sunt numite argumente, i aici se
includ<
Ar"u,ent Valoarea de o, de $%pad% de &os 1tarea
Nu,!erBod2Parts ( bligatoriu
0acialE'pression )mileH :acultativ
If6at Adevrat :acultativ
IfBo/Tie Adevrat :acultativ
Butoane * :acultativ
Ar,T2pe @uiele :acultativ
TieT2pe Arc :acultativ
TieColour +ou :acultativ
Visual Basic pentru Aplicaii Ar"u,ente
&um toate acestea se refer la calculator limba3e de programareJ Ei bine, ia n
considerare comanda pentru a afia o caset de mesa3 pe ecran. 8a cel mai de baz,
aceasta afieaz doar un mesa3 de baz<
)ub DisplaHMessage #$
Mesa3ul Bdesert-locuitor de
MsgBo5 B&e este un om de zpadJB
End )ub
)ubrutina de mai sus s-ar afia o vanilie #de baz$ caset de mesa3<
'entru c nu e5ist argumente furnizate, titlul implicit la .icrosoft E'cel*
&u toate acestea, la fel ca i pentru instruirea om de zpad, am putea aduga informaii
suplimentare pentru a comanda csua de mesa3e s-l t.ea?. De e5emplu, urmtoarea
subrutina va afia dou mesa3e identice, cum ar fi aceasta<
Vom sc6imba titlul, butoanele i pictograma pentru caseta de mesa3.
"at subrutina pentru a afia aceast caset de mesa3 #de dou ori$<
)ub )no.manFuestion #$
Bdou moduri diferite de a pune aceeai ntrebare
MsgBo5 K
Btii ce un om de zpad esteJB, K
vbLes@o = vbFuestion, K
B"dentificare )no.manB
MsgBo5 K
cere< C Btii ce un om de zpad esteJB, K
Butoane< C vbLes@o = vbFuestion, K
9itle< C B"dentificarea )no.manB
End )ub
De fapt, comanda .s"Bo' are , argumente posibile, toate, dar primul dintre care este
opional<
'rimul argument este obligatoriu - nu are paranteze ptrate rotunde ea.
&ele , Argumentele sunt<
Ar"u,ent Notie
Pro,pt Mesa3ul pentru a fi afiat
Butoane &ombinaia de butoane pentru a afia
Titlu 9itlul pentru caseta de dialog
6elp0ile :iierul de a3utor s fie afiat #nu de multe ori folosit$
Conte't "mportana fiierul de a3utor #nu de multe ori folosit$
Crearea Ar"u,entele tale proprii
Av-nd n vedere toate acestea, urmtorul pas este de a crea propriile subrutine, i s
treac n propriile argumente. &a un e5emplu, s presupunem c dorii s scriei o
subrutin care va duce la o anumit foaie de lucru #sau afieaz o eroare dac nu e5ist
unul n registrul de lucru activ$. Aici e ceea ce ar putea arata ca<
)ub )elect4or?s6eet #)6eet@ame &a )tring$
BA+/>ME@9E
BCCCCCCCCC
B)6eet@ame numele foii de lucru pentru a selecta
B&apcan orice eroare
n Error /o9o @o)6eet
B;ncercai s mergei la foaie
:oi de lucru #)6eet@ame$. )electai
B;n cazul n care a3unge aici, reseta capcan eroare i ieire
n Error /o9o 0
E5it )ub
@o)6eet<
B;n cazul n care a3unge aici, nu a reuit s selecta foaie
MsgBo5 B:oaie de lucruB M >&ase #)6eet@ame$ i Bnu a fost gsitB
End )ub
;n acest caz, rutina are un singur argument, care trebuie s fie un ir de te5t #de fapt, e
numele foii de lucru pe care dorii s selectai$.
@umrul i tipul de argumente pentru o procedur este uneori numit semnrii sale - deci
n e5emplul de mai sus, semntura rutinei 1elect7or8s3eet este un singur argument de
tip 1trin"*
Ai putea s ncercai s rulai procedura de dumneavoastr aa cum se arat mai sus ca
aceasta<
)ub testare #$
B;ncercai s selectai o foaie de lucru
)elect4or?s6eet Bnume foaie )illHB
End )ub
&u toate acestea, n cazul n care foaia de lucru cu acest nume nu e5ist #foarte probabil$,
vei vedea un mesa3 de eroare<
Mesa3ul de eroare afiat n capcan de eroare de procedur ta.
Un e'e,plu cu dou% ar"u,ente .utarea Cell
Muli oameni nu pot aminti dac v deplasai n 3os, apoi pe, sau in!ers, cu metoda de
offset . Ai putea scrie propria metoda de a trece peste comportamentul implicit<
)ub Move&ell #@umber&ells+ig6t &a "nteger, @umber&ellsDo.n &a "nteger$
BA+/>ME@9E
BCCCCCCCCC
B@umber&ells+ig6t @umrul de celule pentru a merge dreapta
B@umber&ellsDo.n @umrul de celule pentru a merge n 3os
BMuta numrul necesar de celule 3os N dreapta
Active&ell.ffset #K
@umber&ellsDo.n, K
@umber&ells+ig6t$. )electai
End )ub
)ub Move"n&ircle #$
B+und de mutare ntr-un cerc
Move&ell !, 0
Move&ell 0, !
Move&ell -!, 0
Move&ell 0, -!
End )ub
;n e5emplul de mai sus, am creat dou argumente pentru procedura .o4eCell9
Nu,ele ar"u,ent Tip
Nu,!erCellsRi"3t ;ntreg
Nu,!erCellsDo/n ;ntreg
Acum, c ai nvat cum s t.ea? o subrutin, astfel nc-t acesta face lucruri diferite
pentru diferite argumente de intrare, e timpul s se uite la alte bunti, cum ar fi trecerea
argumente de referin i de valoare, argumentele opionale i utilizarea Para,Arra2
ciudat i minunat.
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Parte dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. Argumentele care trec #acest articol$
%. 9ransmiterea argumentelor prin referin i valoare
(. Argumentele op ionale i 'aramArraHs
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de Dave la %0 februarie %0!(, la %(<,( /M9
Bun ziua,
&6iar dat peste site-ul dvs., tutoriale mari7 Am fost de programare, n VBA pentru un
timp acum, i sunt 3enat s recunosc c nu am folosit 'aramArraHs nainte. 9ocmai am
avut o privire rapid prin selecia mea de #e5celent$ cri de referin VBA pentru a
vedea ceea ce au de spus despre 'aramArraHs. )pre surprinderea mea, singurul e5emplu
am gsit a fost folosit n astfel de mod simplist, c nu am putut vedea punctul de ea. &ea
mai mare parte, nu a fost menionat deloc. Dar, datorit codul instructiv, eu le pot aduga
acum pe lista mea de posibiliti pentru proiecte viitoare.
&u respect,
Dave
+spuns de la AndH Bro.n #autorul blogului$
9rebuie s spun c nu le-au folosit de multe ori7
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Partea a doua dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. 9rece Argumente
%. 9ransmiterea argumentelor prin referin i valoare #acest articol$
(. Argumentele op ionale i 'aramArraHs
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
'ublicat de AndH Bro.n, pe 0I februarie %0!% 1 ! comentariu
Trans,iterea ar"u,entelor prin
referin% i 4aloare
Valorile se #ntorc cu ar"u,ente
;n partea anterioar a acestui blog, am testat pentru a vedea dac o foaie de lucru a e5istat
sau nu, i afieaz un mesa3 de eroare n cazul n care nu a fcut. &u toate acestea, ar fi,
de obicei, mult mai util pentru a trece informaiile napoi la rutina de asteptare<
)ub )elect4or?s6eet #)6eet@ame &a )tring, "f:ound &a Boolean$
BA+/>ME@9E
BCCCCCCCCC
B)6eet@ame numele foii de lucru pentru a selecta
B&apcan orice eroare
n Error /o9o @o)6eet
B;ncercai s mergei la foaie
:oi de lucru #)6eet@ame$. )electai
B;n cazul n care a3unge aici, reseta capcan eroare i ieire
n Error /o9o 0
"f:ound C 9rue
E5it )ub
@o)6eet<
B;n cazul n care a3unge aici, nu a reuit s selecta foaie
"f:ound C :alse
End )ub
;n rutina de mai sus, If0ound va organiza, fie Ade4%rat sau fals( n funcie de faptul
dac foaia de lucru a fost selectat sau nu. 'utei alege apoi pe aceasta n procedura prin
care se solicit 1elect7or8s3eet9
)ub 9rH4or?s6eet)election #$
"f4or?s6eetE5ists Dim &a Boolean
B;ncercai s selectai o foaie de lucru
)elect4or?s6eet B)6eet!B, "f4or?s6eetE5ists
B)pune dac a fost gsit sau nu
Dac "f4or?s6eetE5ists Apoi,
MsgBo5 B:oaie de lucru a constatatB
Altfel
MsgBo5 B@u e5ist un astfel de foaie de lucruB
Dac End
End )ub
bservai c, n acest caz, noi numim argumentul nume diferite n c6emarea i numit
rutine. Acest lucru este perfect acceptabil< este tipul de date i poziia argumentul care
conteaz, nu numele.
Trans,iterea ar"u,entelor prin referin% (B2Ref)
Motivul codul de mai sus lucrri este c, prin argumentele implicite sunt transmise prin
referin. &e nseamn acest lucru este c, mai degrab dec-t trecerea valoarea
argumentului ncoace i ncolo, c6emarea i numit rutinele mprti locaia n care
argumentul este stocat n memorie.
"maginai-v spune un prieten care le-ai ascuns ciorap su ntr-o gaur ntr-un perete.
'rietenul tau gsete osete, i s.ap-l pentru un pete putred, pe care l descoperi atunci
c-nd v ntoarcei la gaura din perete. Aceasta trece argumentelor prin referin.
Ai fi putut fi scris declaraia subrutin folosind B2Ref9
)ub )elect4or?s6eet #)6eet@ame &a )tring, B2Ref "f:ound &a Boolean$
Motivul pentru care nu avei nevoie pentru a face acest lucru este c acesta este
comportamentul implicit n VBA.
Trans,iterea ar"u,entelor prin 4aloare (B2Val)
Alternativa este de a trece argumente prin !aloare, ceea ce nseamn c trec o copie a
argumentului, i nu o referin la locul n care este stocat. Acest lucru nseamn c
subrutin poate face orice modificri i place la argumentul trecut, sigure n cunotin de
faptul c aceste sc6imbri nu vor fi transmise napoi la rutina de asteptare.
) presupunem c ai vrut s lista de primele !0 numere ptrai. &od pentru a face acest
lucru ar putea fi aceasta<
)ub 8ist)Puares #$
Dim i As "nteger
BArat primele zece piee
'entru i C ! 'entru a !0
)6o.)Puare i
" urmtor
End )ub
)ub )6o.)Puare #i As "nteger$
B'atrat acest numr
i C i Q %
B+ezultat de afiare
Debug.'rint i
End )ub
&u toate acestea, acest lucru ar produce doar urmtoarea ieire<
+ezultatele de funcionare de rutin )ist1:uares mai sus
Motivul este faptul c subrutina se sc6imb valoarea argumentului trecut, iar aceast
valoare sc6imbat este trecut napoi la rutina de asteptare. Dac utilizai B2Val n sc6imb,
lucrurile se vor rezolva perfect<
)ub )6o.)Puare (B2Val i As "nteger$
"eirea va fi atunci ceea ce ne-am dorit<
+ezultatele de funcionare de rutin cu B2Val*
&ei mai muli oameni, de cele mai multe ori, se poate uita de toate acestea i de a folosi
doar implicit B2Ref comportament, dar e frumos s tiu ce se nt-mpl n spatele scenei7
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Partea a doua dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. 9rece Argumente
%. 9ransmiterea argumentelor prin referin i valoare #acest articol$
(. Argumentele op ionale i 'aramArraHs
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de Dave la %0 februarie %0!(, la %(<,( /M9
Bun ziua,
&6iar dat peste site-ul dvs., tutoriale mari7 Am fost de programare, n VBA pentru un
timp acum, i sunt 3enat s recunosc c nu am folosit 'aramArraHs nainte. 9ocmai am
avut o privire rapid prin selecia mea de #e5celent$ cri de referin VBA pentru a
vedea ceea ce au de spus despre 'aramArraHs. )pre surprinderea mea, singurul e5emplu
am gsit a fost folosit n astfel de mod simplist, c nu am putut vedea punctul de ea. &ea
mai mare parte, nu a fost menionat deloc. Dar, datorit codul instructiv, eu le pot aduga
acum pe lista mea de posibiliti pentru proiecte viitoare.
&u respect,
Dave
+spuns de la AndH Bro.n #autorul blogului$
9rebuie s spun c nu le-au folosit de multe ori7
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Partea a treia dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. 9rece Argumente
%. 9ransmiterea argumentelor prin referin i valoare
(. Argumentele opionale i 'aramArraHs #acest articol$
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
'ublicat de AndH Bro.n, pe 0I februarie %0!% 1 ! comentariu
Ar"u,entele opionale i Para,Arra2s
Ar"u,ente opionale
;n rutina noastr Build1no/,an la nceputul acestui blog, uneori ne-am dorit butoane i
un papion, i, uneori, nu am fcut-o. Modalitate de a obine n 3urul acest lucru este de a
face argumente opionale.
) presupunem c dorim s fie n msur de a construi o adres #probabil pentru a fi
utilizate ntr-o mbinare de coresponden, dei acest lucru nu este prezentat aici$, i nu
tim c-t de multe linii va avea. Aici sunt % adrese posibile, s avem<
singur linie adresa adresa potal complet
rutina care ar afia o adres dac acesta are o linie, doua linii sau dou linii i un cod
potal este prezentat mai 3os<
&reateAddress )ub #K
'erson@ame &a )tring, K
Address8ine! &a )tring, K
Address8ine% opional &a )tring C BB, K
Opional &od potal &a )tring C BB$
B&rea adresa complet de mbinare de coresponden
Dim :ullAddress &a )tring
B;ncepe cu prima linie de adres
:ullAddress C 'erson@ame M vb&r8f M Address8ine!
B;n cazul n care e5ist un al doilea r-nd, adauga pe de sf-rit de linie
Dac 8en #Address8ine%$G 0 Apoi K
:ullAddress C :ullAddress M vb&r8f M Address8ine%
B;n cazul n care e5ist un cod potal, aduga aceasta pe de sf-rit de linie
Dac 8en #codul potal$G 0 Apoi K
:ullAddress C :ullAddress M vb&r8f M &od potal
B+ezultat de afiare
MsgBo5 :ullAddress
End )ub
De a face ultimele dou argumente opionale le putei pierde #n cazul n care se va lua
valoarea implicit apare pe site$. )inta5a de un argument opional este astfel<
Argument@ame opional ca Argument9Hpe C DefaultValue
"at cum ar putea numi CreateAddress de mai sus, cu diferite combinaii de argumente<
)ub 9estAddresses #$
R( &ombinaii diferite de argumente #caseta de mesa3 pentru primul
Bi ultimul sunt prezentate mai sus$
&reateAddress BBob &onstructorulB, BValea de floarea-soareluiB
&reateAddress B9in?H-4in?HB, B! AvenueB, B9eletubbielandB
&reateAddress B4illiam 'ittB, B!0 Do.ning )treetB, B8ondraB, B)4!B
End )ub
Ar"u,ent opional 1inta'a
+egula principal de argumente opionale este ca ei s vin la sf-ritul listei.<
Acest cod arat o eroare, deoarece argumentele opionale nu sunt la sf-ritul listei
Dac te g-ndeti mult la asta, vei vedea de ce< altfel, cum ar ti VBA ce valoare s-i
atribuii ce argumentJ
Utili$area Para,Arra2
;n e5emplul nostru adresa de mai sus, am putea avea adrese cu nimic 0-D linii. Mai
degrab dec-t a fi nevoie s lista D argumente opionale, am putea crea o matrice
opional, numit un Para,Arra2* &el mai simplu mod de a e5plica acest lucru este de
e5emplu<
&reateAddress )ub #K
'erson@ame &a )tring, K
'aramArraH Address8ines #$ &a Variant$
B&rea adresa complet de mbinare de coresponden
Dim :ullAddress &a )tring
B;ncepe cu prima linie de adres
:ullAddress C 'erson@ame
BAdd pe orice alte linii
Address8ine Dim &a Variant
'entru fiecare Address8ine ;n Address8ines
:ullAddress C :ullAddress M vb&r8f M Address8ine
Address8ine urmtor
B+ezultat de afiare
MsgBo5 :ullAddress
End )ub
Ai putea s sunai atunci aceast rutin CreateAddress cu orice numr de argumente ti-a
placut #inclusiv deloc$<
)ub 9estAddresses #$
R( &ombinaii diferite de argumente
&reateAddress B;nelept .lB
&reateAddress BBob &onstructorulB, BValea de floarea-soareluiB
&reateAddress B9in?H-4in?HB, B! AvenueB, B9eletubbielandB
&reateAddress B4illiam 'ittB, B!0 Do.ning )treetB, B8ondraB, B)4!B
End )ub
'rincipalul lucru de observat despre utilizarea 'aramArraH este c at-t matrice i
variabila definit la bucla peste ea trebuie s fie dimensionate de tip Variant*
Trans,iterea ar"u,entelor )A su!rutine #n VBA
Partea a treia dintro serie de treiparte din !lo"uri
'entru a deveni un programator eficient, trebuie s m opresc din scris subrutina lung i
ncepe s scrie o mulime de cele mici n loc - i de a face acest lucru, ai de g-nd s
trebuie s tiu totul este s tii despre trecerea argumente.
!. 9rece Argumente
%. 9ransmiterea argumentelor prin referin i valoare
(. Argumentele opionale i 'aramArraHs #acest articol$
'utei gsi mai multe articole pe acest subiect n nostru E5cel Visual Basic tutorial blog -
sau carte pe unul dintre noastre E5cel sau VBA cursuri de formare.
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de Dave la %0 februarie %0!(, la %(<,( /M9
Bun ziua,
&6iar dat peste site-ul dvs., tutoriale mari7 Am fost de programare, n VBA pentru un
timp acum, i sunt 3enat s recunosc c nu am folosit 'aramArraHs nainte. 9ocmai am
avut o privire rapid prin selecia mea de #e5celent$ cri de referin VBA pentru a
vedea ceea ce au de spus despre 'aramArraHs. )pre surprinderea mea, singurul e5emplu
am gsit a fost folosit n astfel de mod simplist, c nu am putut vedea punctul de ea. &ea
mai mare parte, nu a fost menionat deloc. Dar, datorit codul instructiv, eu le pot aduga
acum pe lista mea de posibiliti pentru proiecte viitoare.
&u respect,
Dave
+spuns de la AndH Bro.n #autorul blogului$
9rebuie s spun c nu le-au folosit de multe ori7
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a doua dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD #acest articol$
(. De )trings de conectare, +ecordsets, cursoare i de blocare
*. 8ucrul cu +ecords
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
'ublicat de AndH Bro.n, pe 0D februarie %0!% 1 ! comentariu
O!&ect Bi!lioteca ADO
'entru a face legtura la date din cadrul VBA, vei folosi, de obicei, $biecte de date
Acti!e, obiect bibliotec -A.$ la prieteni sale$.
Dac suntei scris VBA n Access, poi foarte bine s preferai s utilizai DA #sau
accesul direct obiecte de bibliotec$ n loc. 'utei /oogle ADO sau DAO pentru mai
multe detalii.
'utei crea o referin la date ActiveS obiecte bibliotec, dup cum urmeaz<
!. Din meniul n VBA selectai< <nt T -G R eferine ***
%. Bifai caseta de l-ng cea mai recent versiune a .icrosoft Acti4e= Data
O!&ects pe care le putei vedea, i selectai A.
Aici e ceea ce caseta de dialog arata ca<
Asigurai-v c bifai caseta de l-ng biblioteca, mai degrab dec-t doar alegerea din
lista.
Ce 4ersiune de ADO ar tre!ui sa folosesc>
E5ist 2 versiuni diferite ale AD n caseta de dialog de mai sus - care ar trebui s le
utilizaiJ +spunsul scurt este< cel mai mare numr de versiune. 'entru mai multe
informaii cu privire la diferite versiuni ale AD, consultai aceast Microsoft pagina de
istorie versiune AD .
:uncional AD %.E i D.0 sunt aceleai< singura diferen este c D,0 au fost furnizate
de 4indo.s Vista i sistemele de operare mai t-rziu.
Acum, c te referi la biblioteca AD, e timpul pentru a nva un pic despre ezoterism,
cum ar fi cone/iuni i recordsets.
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a doua dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD #acest articol$
(. De )trings de conectare, +ecordsets, cursoare i de blocare
*. 8ucrul cu +ecords
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de @e."deas pe 0* iulie %0!% la %(<*% /M9
Eu folosesc n prezent AD de la o foaie de lucru #s zicem %$, pentru a prelua date din
alt foaie de lucru #sa zicem !$, toate n acelai registru de lucru #s zicem registru de
lucru A$ i funcioneaz bine.
;ntr-un alt registru de lucru B, am cod similar, dar din anumite motive, aceasta nu pentru
a prelua date atunci c-nd registrul de lucru A este desc6is.
Este un fel de mecanism de blocare n loc de )F8 n E5celJ
+spuns de la AndH Bro.n #autorul blogului$
Tabar n-am, mi-e team7 A sugera postarea ambele mostre de cod la )tac? verflo. cu
detalii despre ceea ce nu merge bine, i a vedea dac cineva nu tie rspunsul. Dac l
gsii, v rog s-mi spunei printr-un alt comentariu pe aceast pagin - mulumiri.
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a treia dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD
(. De )trings de conectare, +ecordsets, cursoare si blocare #acest articol$
*. 8ucrul cu +ecords
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
'ublicat de AndH Bro.n, pe 0D februarie %0!% 1 ! comentariu
De 1trin"s de conectare( Recordsets(
cursoare i de !locare
'entru a v conecta la o baz de date, vei avea nevoie #la minim$, s tii despre siruri
de caractere de conectare i recordsets - s-ar putea, de asemenea, trebuie s tii despre
cursoare i de blocare prea.
Destul de v putei lipsi n condiii de siguran aceast pagin i du-te direct pe cea cu
miez cu privire la modul de a aduga, edita, vizualiza i terge nregistrri. 9ot ce ai
nevoie sunt fragmentele de cod pentru a copia - intelegerea a ceea ce fac ei este un bonus7
iruri de conectare
rice aplicaie poate vorbi cu o baz de date, cu condiia s configurai o cone/iune
#cred c de ea ca o eav subire n 3os care datele pot trece, i nu vei fi departe$. De
obicei, acest lucru implic care precizeaz<
!. &are baza de date pe care o utilizai #de e5emplu, Access, )F8 )erver$.
%. ;n cazul n care baza de date este, i numele su.
(. rice cerine de securitate.
@oiuni de baz de cone5iuni de lucru poate fi o durere, dar pentru a obine irul de
cone5iune ai nevoie A recomanda &onnection)trings.com - resursa final pentru sinta5a
necesar7
'entru a crea o cone5iune, ai putea folosi cod ca acesta<
B&rea un nou ir de cone5iune
Dim cn ca noi ADDB.&onnection
B)pune unde irul de conectare este ndreptat la, i cone5iune desc6is
cn.&onnection)tring C Bdriver C U)F8 )erverVWB M K
B)erver C )E+VE+K@AME X )F8%00E+%W Baza de date C :ilme, 9rustedK&onnection C
9rueWB
cn.pen
+einei c acest lucru este pentru conectarea la un )F8 )erver numit
1ERVER?NA.E( folosind o instan denumit numit 1@)ABBCRA* 8in?-uri de
conectare la o baz de date numit fil,e( utiliz-nd de securitate 4indo.s. Este probabil
ca ir de cone5iune va fi diferit7
Recordsets
>n alt lucru vei avea nevoie pentru a crea un set de 0nregistrri. Aceasta este ca o mas
de nregistrri a avut loc n memorie. 'utei merge nainte sau napoi o nregistrare la un
moment dat, sau du-te la prima sau ultima nregistrare<
'utei merge napoi o nregistrare dincolo de primul pentru a face con4erti$or (B
eginning O f 0 ile$ proprietatea deveni realitate, sau du-te nainte de o nregistrare,
dincolo de ultima pentru a face EO0 (E "" O : 0 ile$ de proprietate deveni realitate. &u
toate acestea, nu putei merge n zona de ilegal7
&-nd desc6idei un set de nregistrri, va fi n mod automat pe prima nregistrare. De aici
se poate merge n urmtoarele direcii<
Direcie Ce #nsea,n%
.o4e0irst Du-te la prima nregistrare
.o4e)ast Du-te la ultima nregistrare
.o4eNe't Du-te la nregistrarea urmtoare #sau zona de EO0 dac nu e5ist unul$
.o4ePre4ious Du-te la recordul precedent #sau zona de con4erti$or dac nu e5ist unul$
"at cum putei desc6ide un set de nregistrri o dat ai o cone5iune stabilit ca mai sus<
B&rea un nou set de nregistrri
Dim rs As @e. ADDB.+ecordset
BDesc6ide un set de nregistrri din tabelul de filme
rs.pen Btbl:ilmB, cn
'utei specifica numele unui tabel, o vizualizare N interogare sau o instruciune )F8,
astfel nc-t urmtoarele ( linii alternative de cod ar fi toate de lucru<
Modaliti de R( a desc6ide un set de nregistrri din tabelul de filme
B'rin specificarea tabelul
rs.pen Btbl:ilmB, cn
B'rin specificarea o declaraie )E8E&9
rs.pen B)E8E&9 :+M :ilm@ame tbl:ilm +DE+ BL :ilm@ameB, cn
B'rin specificarea un nume vedere
rs.pen Bv.:ilms"n:ilm@amerderB, cn
Referinduse la 0ields #ntrun Recordset
&-nd suntei creat o referin la un set de nregistrri, vei dori, de obicei, s se refere la
domeniile n cadrul acestuia. El a3ut s aib o imagine n mintea ta de ceea ce de
nregistrri arata ca<
>n set de nregistrri const dintr-un numr de nregistrri, fiecare av-nd una sau mai
multe c-mpuri. Aici e5ist trei domenii<
"d-ul de film
@umele de film
9impul de funcionare a filmului n minute
) presupunem c dorii s facei referire la numele de film Din" Don" #prezentat
selectat de mai sus$, i ai creat un set de nregistrri numit rs s se refere la tabelul de
mai sus i sunt de3a indic spre recordul necesar #numrul ($. E5ist mai multe
modaliti de a se referi la valoarea c-mpului afiate.
modalitate este prin referirea la valoarea c-mpului numit 0il,Na,e n nregistrri<
BArat valoarea numelui de film
Debug.'rint rs.:ields #B:ilm@ameB$. Valoarea
&u toate acestea, putei omite proprietatea Value #dac este o bun practic de a face
acest lucru este un punct de discuie$, i VBA va presupune c aceasta este ceea ce vrei
s spui<
BArat valoarea numelui de film #VBA
R;i va asuma pe care proprietatea sa spui$
Debug.'rint rs.:ields #B:ilm@ameB$
'entru care conteaz, putei omite, de asemenea, colecia 0ields* 'entru ca un set de
nregistrri poate fi privit doar ca o colecie de c-mpuri, VBA va umple n bii lips<
BArat valoarea numelui de film n colecia implicit 0ields
+s Debug.'rint #B:ilm@ameB$
;n al patrulea r-nd, ar putea referi la domeniul de numrul su de colectare, mai degrab
dec-t numele su #c-mpuri sunt numerotate de la 0$<
BArat valoarea de-al doilea c-mp
+s Debug.'rint #!$
'rogramatorii de acces pot utiliza, de asemenea, oribil sinta5a semnul e5clamrii<
B>tilizai Access notaie oribil
+s Debug.'rint7 Y:ilm@ameZ
'rimul )inta5a este mai clar, dar cel mai de cod pe care le descrcai de pe internet va
folosi de-a treia sinta5a - R1 (E0il,Na,eE)*
Cursoare
&-nd desc6idei un set de nregistrri n VBA, putei specifica opional un al treilea
argument care s ateste ce tip de cursor va folosi<
Argumentul cursor, art-nd c opiunea implicit este adOpenUnspecified
E5ist patru valori posibile pe care le putei specifica, dup cum urmeaz<
&ele patru valori posibile pentru cursorul - a se vedea tabelul de mai 3os pentru ceea ce
fiecare mi3loc.
"at ce cele patru valori posibile nseamn<
Cursor Ce #nsea,n%
adOpenD2na,ic
VBA ncarc c6eia primar a tabelului de baz, i va ncrca alte
valori de c-mp ca i atunci c-nd este necesar #acest cursor
asemenea, v permite s scrie sc6imbrile napoi la baza de date$.
adOpen0or/ardOnl2
V sunt poziionate la nceputul de nregistrri, i #aa cum
sugereaz i numele$, se poate deplasa doar ntr-o direcie nainte.
adOpenDe2set
VBA ncarc c6eia primar a tabelului de baz #id-ul de film n
cazul nostru$, i ncarc celelalte valori de c-mp ca i atunci c-nd
este necesar.
adOpen1tatic
Acest lucru va crea o copie fi5 a +ecordsets care stau la baza n
memorie.
Motivul pentru care acest lucru conteaz este c, dac utilizai valoarea implicit, nu va fi
capabil de a utiliza nregistrri pentru a aduga, edita sau terge dateW doar ao vizualiza.
Blocarea #nre"istrare
Bit final de teorie s-ar putea dori s tiu despre atunci c-nd se utilizeaz recordsets este
c de 0nregistrare de blocare. Aici sunt valorile posibile pe care le putei folosi pentru un
set de nregistrri<
Valorile posibile putei utiliza pentru al patrulea argument al metodei desc3ise de un set
de nregistrri.
Din nou, aici sunt ceea ce nseamn valori diferite<
Valoarea de !locare Ce #nsea,n%
ad)oc8Batc3Opti,istic >tilizate numai pentru actualizarea lot de nregistrri.
ad)oc8Opti,istic
Atunci c-nd ncercai s modificai orice date prin intermediul
VBA, baza de date va bloca doar nregistrarea pe care ncercai
s actualizai atunci c-nd comite modificrile.
ad)oc8Pessi,istic
&-nd spui c ai de g-nd s sc6imbe un record, baza de date se
va bloca de la actualizri pentru ali utilizatori p-n c-nd codul
se elibereaza.
ad)oc8ReadOnl2 @u se poate face la orice modificare a datelor care stau la baza.
i c este sf-ritul a toate teoriei avem nevoie7 9imp pentru a continua i de a face ceva
mai interesant - fie liste, aduga, edita sau terge unele nregistrri7
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a treia dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD
(. De )trings de conectare, +ecordsets, cursoare si blocare #acest articol$
*. 8ucrul cu +ecords
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de @e."deas pe 0* iulie %0!% la %(<*% /M9
Eu folosesc n prezent AD de la o foaie de lucru #s zicem %$, pentru a prelua date din
alt foaie de lucru #sa zicem !$, toate n acelai registru de lucru #s zicem registru de
lucru A$ i funcioneaz bine.
;ntr-un alt registru de lucru B, am cod similar, dar din anumite motive, aceasta nu pentru
a prelua date atunci c-nd registrul de lucru A este desc6is.
Este un fel de mecanism de blocare n loc de )F8 n E5celJ
+spuns de la AndH Bro.n #autorul blogului$
Tabar n-am, mi-e team7 A sugera postarea ambele mostre de cod la )tac? verflo. cu
detalii despre ceea ce nu merge bine, i a vedea dac cineva nu tie rspunsul. Dac l
gsii, v rog s-mi spunei printr-un alt comentariu pe aceast pagin - mulumiri.
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a patra dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD
(. De )trings de conectare, +ecordsets, cursoare i de blocare
*. 8ucrul cu +ecords #acest articol$
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
'ublicat de AndH Bro.n, pe 0D februarie %0!% 1 ! comentariu
)ucrul cu Records
E5ista doar * lucruri pe care le putei face cu nregistrri< a le vizualiza, s le completeze,
s le editai i tergei-le. 'roceduri de eantionare pentru fiecare sunt prezentate mai 3os
#ultima parte a acestui blog, de asemenea, arat cum de a gsi nregistrri rapid$.
Vi$uali$area Records
'utei bucl nainte prin recordsets #care afieaz valorile din fiecare$, dup cum
urmeaz<
)ub )6o.:ilms #$
B&rea o nou cone5iune, pentru a face legtura cu baza de date
Dim cn &a @e. &onnection
B&rea un nou set de nregistrri #dar nc nu se refer
B8a nimic$
Dim rs As @e. +ecordset
B)pune unde irul de conectare este ndreptat la #acest
BVa fi diferit pentru fiecare companie i de baze de date - vezi
B4...connectionstrings.com pentru e5emple
cn.&onnection)tring C Bdriver C U)F8 )erverVWB M K
B)erver C )E+VE+K@AME X )F8%00E+%W Baza de date C :ilmeWB M K
B9rustedK&onnection C 9rueWB
BDesc6ide aceast cone5iune la baza de date #face mereu acest lucru
B&-t mai t-rziu posibil, din motive de vitez$
cn.pen
BDesc6ide nregistrri de filme #sau orice alt tabel, vizualizare sau )F8
B)E8E&9 declaraie$, folosind cone5iunea care le-am creat
rs.pen Btbl:ilmB, cn
BVom fi n mod automat pe prima nregistrare - continua
B'-n c-nd vom a3unge la ultima
:ace '-n rs.E:
B'entru fiecare film, imprima numele #bine, am avut de a face
Bceva7$, n cazul n care au durat mai apoi ( ore !0 minute
Dac rs #B:ilm+un9imeMinutesB$G !I0 Apoi
+s Debug.'rint #B:ilm@ameB$
Dac End
BVital, du-te la urmtoarea nregistrare #n caz contrar,
B+utin va bucla nesf-rit pe prima nregistrare$
rs.Move@e5t
Bucl
B;nc6ide de nregistrri i #mai important$, cone5iunea
rs.&lose
cn.&lose
End )ub
"at rezultatul acestei ar putea produce n fereastra "mmediate <
Doar ( filme n aceast baz de date a durat mai mult de !I0 minute
@e-am folosit cursorul implicit i nregistrarea metode de blocare pentru c nu vrem s se
sc6imbe dateW doar ao vizualiza.
Editarea Records
'utei edita nregistrri n aproape acelai mod< prin looping peste nregistrrile dintr-un
tabel p-n c-nd gsii pe cel dorit #partea final a acestui blog arata o modalitate mai
rapid de a localiza nregistrarea pe care dorii$.
)ingura diferen este c avei nevoie pentru a desc6ide nregistrri cu un cursor sensibil
i nregistrare de blocare combinaie, altfel nu va fi capabil de a face modificri de date.
&odul de mai 3os va rade %0 minute din timpul de funcionare de Titanic #cu siguran
un lucru bunJ$<
)ub )6orten9itanic #$
B&rea o nou cone5iune, pentru a face legtura cu baza de date
Dim cn &a @e. &onnection
B&rea un nou set de nregistrri #dar nc nu se refer
B8a nimic$
Dim rs As @e. +ecordset
B)pune unde irul de conectare este ndreptat la #acest
BVa fi diferit pentru fiecare companie i de baze de date - vezi
B4...connectionstrings.com pentru e5emple
cn.&onnection)tring C Bdriver C U)F8 )erverVWB M K
B)erver C )E+VE+K@AME X )F8%00E+%W Baza de date C :ilmeWB M K
B9rustedK&onnection C 9rueWB
BDesc6ide aceast cone5iune la baza de date #face mereu acest lucru
B&-t mai t-rziu posibil, din motive de vitez$
cn.pen
BDesc6ide nregistrri de filme #sau orice alt tabel, vizualizare sau )F8
B)E8E&9 declaraie$, asigur-ndu-v c vom fi capabili de a sc6imba date
rs.pen Btbl:ilmB, &@, adpenDHnamic, ad8oc?ptimistic
BVom fi n mod automat pe prima nregistrare - continua
B'-n c-nd vom a3unge la ultima
:ace '-n rs.E:
B'entru fiecare film, dac e 9itanic ...
Dac 8&A)E #rs #B:ilm@ameB$$ C B9itanicB Atunci,
B... +educe timpul de funcionare de %0 minute ...
+) #B:ilm+un9imeMinutesB$ C +) #B:ilm+un9imeMinutesB$ - %0
B... i s scrie sc6imbarea fcut napoi la baza de date
rs.>pdate
Dac End
BVital, du-te la urmtoarea nregistrare #n caz contrar,
B+utin va bucla nesf-rit pe prima nregistrare$
rs.Move@e5t
Bucl
B;nc6ide de nregistrri i #mai important$, cone5iunea
rs.&lose
cn.&lose
End )ub
"n codul de mai sus, vom converti numele de film la litere mici nainte compar-nd-o cu
titanic( doar n cazul n care numele de film nu a fost nscris ntr-un caz sensibil
#comparaii de caz sunt ntotdeauna n VBA sensibile la caz$.
+einei c, dac ai uitat s desc6idei nregistrri cu un cursor adecvat i s nregistreze
de blocare alegere, vei vedea urmtorul mesa3<
)copul principal al acestui blog este de a preveni alte persoane se confrunta cu aceeasi
durere pe care at-t de des le-am e5perimentat7
@u uita declaraia de actuali$areF Daca o faci, codul va rula perfect, dar nu se va
sc6imba de fapt, orice date.
Ad%u"area Records
Avei posibilitatea s utilizai metoda de AddNe/ a aduga nregistrri noi, dar trebuie
s setai valorile pentru toate c-mpurile obligatorii din tabelul de baz.
)ub Add:ilm #$
B&rea o nou cone5iune, pentru a face legtura cu baza de date
Dim cn &a @e. &onnection
B&rea un nou set de nregistrri #dar nc nu se refer
B8a nimic$
Dim rs As @e. +ecordset
B)pune unde irul de conectare este ndreptat la #acest
BVa fi diferit pentru fiecare companie i de baze de date - vezi
B4...connectionstrings.com pentru e5emple$
cn.&onnection)tring C Bdriver C U)F8 )erverVWB M K
B)erver C )E+VE+K@AME X )F8%00E+%W Baza de date C :ilme, 9rustedK&onnection C
9rueWB
BDesc6ide aceast cone5iune la baza de date #face mereu acest lucru
B&-t mai t-rziu posibil, din motive de vitez$
cn.pen
BDesc6ide nregistrri de filme #sau orice alt tabel, vizualizare sau )F8
B)E8E&9 declaraie$, asigur-ndu-v c vom fi capabili de a sc6imba date
rs.pen Btbl:ilmB, &@, adpenDHnamic, ad8oc?ptimistic
BAduga un nou film, completarea detalii
rs.Add@e.
rs #B:ilm"dB$ C III
+) #B:ilm@ameB$ C BDoamna de :ierB
+) #B:ilm+un9imeMinutesB$ C !02
BAsigurai-v c vom salva aceste modificri
rs.>pdate
B;nc6ide de nregistrri i #mai important$, cone5iunea
rs.&lose
cn.&lose
End )ub
&odul de mai sus s-ar aduga Doa,na de 0ier la masa noastr filme<
'entru c nu ne-am stabilit valori pentru orice alte domenii, ele conin @>88
A coloanei 0il,Id fost o identitate sau Auto@umerotare domeniu n e5emplul de mai sus,
baza de date ar fi generat n mod automat i ne-ar fi trebuit s omit R1 linie (E0il,IdE)
G HHH*
ter"erea r<nduri
Dup tergerea unui r-nd ntr-un set de nregistrri, indicatorul de nregistrri nu se muta
pe urmtoarea nregistrare, dar rm-ne art-nd spre #acum eliminat$ r-nd. Acest lucru
este artat n urmtorul cod pentru a terge toate filmele n care "D-ul director nu este
completat n<
)ub DeleteDirectorless:ilms #$
B&rea o nou cone5iune, pentru a face legtura cu baza de date
Dim cn &a @e. &onnection
B&rea un nou set de nregistrri #dar nc nu se refer
B8a nimic$
Dim rs As @e. +ecordset
B)pune unde irul de conectare este ndreptat la #acest
BVa fi diferit pentru fiecare companie i de baze de date - vezi
B4...connectionstrings.com pentru e5emple$
cn.&onnection)tring C Bdriver C U)F8 )erverVWB M K
B)erver C )E+VE+K@AME X )F8%00E+%W Baza de date C :ilme, 9rustedK&onnection C
9rueWB
BDesc6ide aceast cone5iune la baza de date #face mereu acest lucru
B&-t mai t-rziu posibil, din motive de vitez$
cn.pen
BDesc6ide nregistrri de filme #sau orice alt tabel, vizualizare sau )F8
B)E8E&9 declaraie$, asigur-ndu-v c vom fi capabili de a sc6imba date
rs.pen Btbl:ilmB, &@, adpenDHnamic, ad8oc?ptimistic
Bine looping prin nregistrri ...
:ace '-n rs.E:
Dac "s@ull #+) #B:ilmDirector"dB$$ Apoi,
B... tergerea tuturor celor al carui director este nul
rs.Delete
Dac End
BDu-te pe urmtoarea nregistrare #dac ne-ai ters O>)9
B>n film sau @>$
rs.Move@e5t
Bucl
B;nc6ide de nregistrri i #mai important$, cone5iunea
rs.&lose
cn.&lose
End )ub
tergerea unei nregistrri n acest fel ar trebui s se fac cu precauie, din moment ce nu
pot s tiu ce declaneaz i cascad tergerea vor fi stabilite n baza de date care stau la
baza.
)istarea unor 0ields
'entru ca un set de nregistrri conine o colecie de c-mpuri, putei afia, de asemenea,
valoarea de fiecare domeniu de looping peste colectare <
B8ista toate domeniile
'entru fiecare f ;n rs.:ields
Debug.'rint f.Value
: urmtor
&u toate acestea, acest lucru nu este, de obicei, c util.
Acum, c avei fragmente de cod pentru a aduga, edita, vizualiza i terge nregistrri,
numai imbunatatirea am putea face ar fi s accelereze cutare - care este obiectul de
ultima parte a acestui blog.
)E+;TURI C;TRE ADO !a$e de date cu VBA
Partea a patra dintro serie de cinci parte a !lo"uri
;nva cum s scrie macro-uri VBA pentru a aduga, edita i terge date n Access, )F8
)erver i alte baze de date, folosind ceva numit AD.
!. &onectarea la date utiliz-nd VBA
%. b3ect Biblioteca AD
(. De )trings de conectare, +ecordsets, cursoare i de blocare
*. 8ucrul cu +ecords #acest articol$
,. /sirea +ecords u urin
Acest blog este parte a at-t un complet tutorial E5cel VBA i un complet tutorial )F8 .
&omentarii pe acest blog
Acest blog are un comentariu<
&omentariu a fost adugat de @e."deas pe 0* iulie %0!% la %(<*% /M9
Eu folosesc n prezent AD de la o foaie de lucru #s zicem %$, pentru a prelua date din
alt foaie de lucru #sa zicem !$, toate n acelai registru de lucru #s zicem registru de
lucru A$ i funcioneaz bine.
;ntr-un alt registru de lucru B, am cod similar, dar din anumite motive, aceasta nu pentru
a prelua date atunci c-nd registrul de lucru A este desc6is.
Este un fel de mecanism de blocare n loc de )F8 n E5celJ
+spuns de la AndH Bro.n #autorul blogului$
Tabar n-am, mi-e team7 A sugera postarea ambele mostre de cod la )tac? verflo. cu
detalii despre ceea ce nu merge bine, i a vedea dac cineva nu tie rspunsul. Dac l
gsii, v rog s-mi spunei printr-un alt comentariu pe aceast pagin - mulumiri.
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
"oate drepturile de autor coninut #nelept $%l Business olutions &td '()*. "oate
drepturile re+er!ate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
0uncii de editare pentru E'cel utili$<nd VBA
Parte dintro serie de treiparte din !lo"uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
!. )crierea i >tilizarea funciilor din E5cel Visual Basic #acest articol$
%. E5emple de func ii pentru a face mai u or de codificare
(. )crierea :unc ii pentru utilizarea n E5cel VBA
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
'ublicat de AndH Bro.n , la %* februarie %0!% 1 nici un comentariu
1crierea i Utili$area funciilor #n E'cel
Visual Basic
&ele mai multe programe pe care le scrie va ncepe cu cuv-ntul 1u! - dar nu toate<
&-nd alegei Insert -G Procedura *** din codul meniul editor VBA, putei introduce un
1u! sau o funcie #cuv-ntul de proprietate este discutat ntr-un blog mai t-rziu clase $.
E5ist dou motive pentru care s-ar putea crea o funcie<
'entru a a3uta la a face codul mai uor de a scrie, citi i s meninW sau
'entru a completa lista de funcii E5cel built-in.
Acest blog va arta cum s fac fiecare dintre acestea, la r-ndul su, dar n primul r-nd s
ne uitm la sinta5a unei funcii.
Cu, de a scrie funciile #n VBA
Diferena dintre o subrutin i o funcie n VBA este c o funcie returneaz o valoare.
8uai n considerare urmtoarea funcie foarte simplu la ptrat un numr<
:uncie )Puare #AnH@umber &a "nteger$ At-ta timp
B+eveni ptrat de orice numr ntreg
'trat C AnH@umber [ AnH@umber
End :unction
E5ist trei diferene ntre aceasta i o subrutin obinuit<
Diferenele numerotate sunt e5plicate mai 3os.
Diferenele sunt<
!. funcie ncepe cu funcii i se termin cu End 0unction #mai degrab dec-t
1u! i End 1u!)*
%. funcie are un tip de date #aceasta este de tip lun"( deoarece nu tim c-t de
mare este un ntreg va trebui s se ntoarc$.
(. ;n termen de o funcie, trebuie s setai numele funciei egal cu ceva #aici,
ptratul numrului coninute n argumentul $.
VB, & \ i multe alte programatori ar trebui s reinei c - iritant - nu e5ist nicio
declaraie RETURN pentru a reveni la valoarea de o funcie n VBA.
'utei apela funciile din E5cel #prezentat mai n detaliu n ultima parte a acestui blog$,
de la un alt subrutina sau de la fereastra "mmediate . E5emple de fiecare urmeze7
0uncii de asteptare de la un alt su!rutina
modalitate de a apela o funcie este de la un alt program, sau proceduri<
Vrem s se ntoarc acest ... ... Atunci c-nd tastai ntr-un numr.
'rogramul de mai sus #dezbrcat de orice eroare de control $ ar putea citi<
)ub )6o.)Puare #$
Dim n &a "nteger
B)e utilizatorul numr vrea s ptrat
n C &"nt #"nputBo5 #B"ntroducei un numrB$$
BArat acest ptrat
MsgBo5 B'iaa deB M n M BesteB M K
'trat #n$
End )ub
Dup cum vedei, putei folosi Piaa la fel ca i n cazul n care ar fi o funcie built-in n
VBA.
Afiarea 4alorii de o funcie #n fereastra I,,ediate
'utei face acest lucru n mod obinuit<
Aici ne-am numit funcia noastr 'iata de ( ori, cu un argument diferit de fiecare dat.
Din nou, v putei trata funcia ca i cum ar fi una dintre cele built-in n VBA.
Apelarea unei funcii din E'cel
alt modalitate de a apela o funcie - i, probabil, cea mai se5H - este s-l tastai n
E5cel<
:uncia dvs. Piaa pare ... ... i v ofer rspunsul7
:ormula pentru celula de mai sus s-ar putea arata astfel<
:uncia are un singur argument, care trebuie s fie un numr ntreg. Aici este valoarea
celulei &%.
uoar suprare este c, atunci c-nd tastai nceputul unei funcii - n cazul de mai sus,
C 'iata #-. E5cel nu sugereaz posibile argumente pentru aceasta, putei obine n 3urul
acest lucru utiliz-nd e5pertul funcie, aa cum se arat n partea final din acest blog.
Acum, c am vzut ceea ce o funcie este i modul n care pentru a rula o, s ne uitm la
modul n care s-ar putea s le includ n E5cel.
0uncii de editare pentru E'cel utili$<nd VBA
Parte dintro serie de treiparte din !lo"uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
D. )crierea i >tilizarea funciilor din E5cel Visual Basic #acest articol$
2. E5emple de func ii pentru a face mai u or de codificare
E. )crierea :unc ii pentru utilizarea n E5cel VBA
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
&omentarii pe acest blog
Acest blog are n prezent nici un comentariu.
Adauga un comentariu la acest blog
*.
,.
D.
Blo"urile scrise de TOPIC
D. /eneral #!,$
2. M) ffice #!(($
E. )F8 )erver #ED$
I. . @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$
D.
*. &ontactati-ne
,. +)) feed
9oate drepturile de autor coninut ;nelept .l Business )olutions 8td %0!*. 9oate
drepturile rezervate.
Dedicate formatori
Ma5im D pe clas
)uperb curs
&ursuri de formare Microsoft 1 ;nelept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
&utare<
:ormare M) ffice
:ormare )F8 )erver
. @E9 formare
8ocuri de formare
Alte
Acasa G Bloguri
:uncii de editare pentru E5cel utiliz-nd VBA
'artea a doua dintr-o serie de trei-parte din blog-uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
)crierea i >tilizarea funciilor n E5cel Visual Basic
E5emple de funcii pentru a face mai uor de codificare #acest articol$
)crierea :uncii pentru utilizarea n E5cel VBA
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
'ublicat de AndH Bro.n , la %* februarie %0!% 1 nici un comentariu
E5emple de funcii pentru a face mai uor de codificare
ri de c-te ori n mod natural ar dori s pun o ntrebare n cod, ar trebui s utilizai o
funcie. 'entru a vedea ce vreau s spun prin asta propunere destul de vag, s ne uitm
la un e5emplu lucrat.
E5emplul nostru - Adugarea unei foi de lucru
) presupunem c dorii s scriei o subrutin pentru a permite unui utilizator pentru a
introduce o nou foaie de lucru<
@e. .or?s6eet in tabs
Dup adugarea unei noi foi de lucru numit de test, acesta va aprea n lista de file din
foaia de lucru.
Aici este un cod pentru a face acest lucru<
)ub Add4or?s6eet #$
B@umele noului foii de lucru
Dim )6eet@ame &a )tring
B&ere utilizatorului s tastai numele
)6eet@ame C "nputBo5 #B"ntroducei noul numeB, Bnumele foii de lucruB$
BAdaug o foaie de lucru nou, care devine foaia activ
4or?s6eets.Add
B+edenumi aceast foaie cu numele nou introdus n
Active)6eet.@ame C )6eet@ame
End )ub
&-nd e5ecutai rutina Add4or?s6eet de mai sus, vei vedea o caset de intrare i s fie
capabil s tastai n numele unei foi de lucru, care E5cel va crea apoi<
@e. .or?s6eet name input bo5
>n utilizator poate s tastai n numele unei foi de lucru n aceast caset de dialog i
apsai Enter pentru ao crea.
'roblema este< ce se nt-mpl dac aceast foaie de lucru e5ist de3aJ
'seudo-cod pentru e5emplul nostru
;n pseudo-cod #VBA 3umtate, pe 3umtate englez$, aici este ceea ce ncercm s facem<
Afia o caset de intrare
)toca nume de foi de lucru
Dac o foaie de lucru cu acest nume e5ist de3a
Afiare eroare
Altfel
&reai o nou foaie i dea numele corect
&e este aceasta arata ca am putea face ntr-adevr cu o funcie pentru a determina dac o
foaie de lucru cu un nume dat e5ist de3a. Vom da un nume, i definesc intrrile i
ieirea.
&e @otie
@ume funcie Does)6eetE5ist
"ntrri )6eet@ame - )tring
'roducie Dac e5ist foaia sau nu - Boolean
Av-nd n vedere cele de mai sus, ar trebui s fie destul de uor s scrie funcia noastr.
&odul final
:uncia noastr ar putea acum bucl pe colecia de foi de lucru care ncearc s gseasc
o cu un nume dat<
:uncie Does)6eetE5ist #)6eet@ame &a )tring$ &a Boolean
BA+/>ME@9E
BCCCCCCCCC
B)6eet@ame numele foii suntem de testare pentru
B"niializa funcia #'resupun c e fals$
Does)6eetE5ist C :alse
Dim . &a de lucru
'entru fiecare . n foile de lucru
B'entru fiecare foaie de lucru, a se vedea dac numele se potrivete
Dac >&ase #..@ame$ C >&ase #)6eet@ame$ Apoi
B face7
Does)6eetE5ist C 9rue
B@u este nevoie de a testa mai
E5it :uncia
Dac End
>rmtor .
B;n cazul n care am a3uns aici, nu am gsit fia
B#Dar funcia iniializeaz la fals, deci nu este nevoie
BA face ceva mai mult$
End :unction
Ai putea s sunai atunci aceast funcie, dup cum urmeaz<
)ub Add4or?s6eet #$
B@umele noului foii de lucru
Dim )6eet@ame &a )tring
B&ere utilizatorului s tastai numele
)6eet@ame C "nputBo5 #B"ntroducei noul numeB, Bnumele foii de lucruB$
BAdaug o foaie de lucru nou, care devine foaia activ
B#Dar verificai mai nt-i dac e5ist sau nu$
Dac Does)6eetE5ist #)6eet@ame$ Apoi
MsgBo5 B:oaie de lucru cu acest nume e5ist de3aB
E5it )ub
Dac End
4or?s6eets.Add
B+edenumi aceast foaie cu numele nou introdus n
Active)6eet.@ame C )6eet@ame
End )ub
Voila7 +einei c ai fi putut face acest lucru fr funcia - care e ntotdeauna adevrat -
dar suntem cu scopul de cod curat, uor de citit.
:uncii de editare pentru E5cel utiliz-nd VBA
'artea a doua dintr-o serie de trei-parte din blog-uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
)crierea i >tilizarea funciilor n E5cel Visual Basic
E5emple de funcii pentru a face mai uor de codificare #acest articol$
)crierea :uncii pentru utilizarea n E5cel VBA
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
&omentarii pe acest blog
Acest blog are n prezent nici un comentariu.
Adauga un comentariu la acest blog
Blogurile scrise de 9'"&
/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE A>9+
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE A@>8
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
9oate drepturile de autor coninut ;nelept .l Business )olutions 8td %0!*. 9oate
drepturile rezervate.
D. Dedicate formatori
2. Ma5im D pe clas
E. )uperb curs
&ursuri de formare Microsoft 1 ;n elept .l - de start, initiala
9elefon #0!*,2$ E,EE22 sau e-mail
9op of :orm
&utare<
Bottom of :orm
:ormare M) ffice
o
o
o
o
o
:ormare )F8 )erver
o
o
o
o
o
. @E9 formare
o
o
o
o
o
o
8ocuri de formare
o
o
o
o
Alte
o
o
o
o
o
o
o
Acasa G Bloguri
0uncii de editare pentru E'cel utili$<nd VBA
Partea a treia dintro serie de treiparte din !lo"uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
!. )crierea i >tilizarea func iilor n E5cel Visual Basic
%. E5emple de func ii pentru a face mai u or de codificare
(. )crierea :uncii de utilizare n E5cel VBA #acest articol$
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
'ublicat de AndH Bro.n , la %* februarie %0!% 1 nici un comentariu
1crierea 0uncii pentru utili$area #n
E'cel VBA
) presupunem c dorii s lucreze c-t de nalt eti n metri, av-nd nlimea n picioare
i inci #acestea sunt ciudate, unitile ar6aice de msur nc utilizate n mod obinuit n
Marea Britanie - nu avei nevoie s neleag ceea ce ei sunt de a utiliza acest e5emplu $.
VBA pentru funcia noastr%
:oaie de calcul E5cel noastr ar trebui s arate acest lucru<
"ntroducei n formula<
C Metri #&%, &($
n celula verde, i ar trebui s arate rspunsul.
:uncia de metri ar trebui s ia n dou argumente<
!. ;nlimea persoanei n picioare ntregiW i
%. @umrul rezidual de inci
i a reveni la numrul de metri. "at unele cod care ar face acest lucru<
Metri funcionale #picioare in regim single, inc6es )ingle$ &a )ingle
&onst Metres'er"nc6 &a )ingle C 0.0%,*
&onst "nc6es'er:oot &a "nteger C !%
B;n primul r-nd lucra n modul de centimetri poate inalt persoana este
9otal"nc6es Dim &a )ingle
9otal"nc6es C 'icioare [ "nc6es'er:oot = "nc6es
BAcum ntoarce numrul de metri
Metri C Metres'er"nc6 [ 9otal"nc6es
End :unction
Utili$area funciei #n E'cel
Avei posibilitatea s tastai n aceast funcie n E5cel, dar e mult mai distractiv de a
utiliza e5pertul de funcia<
:acei clic pe celula n care rspunsul ar trebui s mearg, apoi facei clic pe instrumentul
funcia e5pertul.
'utei alege acum funcia<
!. Alege pentru a afia funciile definite de utilizator #de e5emplu, cele pe care le-ai
scris$.
%. Alegei funcia metri.
"at caseta de dialog "nsert :unction cu etapele prezentate numerotate<
Acum - n sf-rit - avea a3utor pe argumente , i poate finaliza caseta de dialog n mod
obinuit<
&ompletai caseta de dialog prin specificarea care celule vor oferi picioare i inci.
"ndiciu avansat< funcii definite de utilizator sunt BvolatileB. &e nseamn acest lucru este
n cazul n care v calcula o foaie de calcul care conine funcii definite de utilizator
valoarea lor va fi ntotdeauna recalculate, c6iar dac acesta nu poate fi, eventual
sc6imbat. Acest lucru nseamn c, dac utilizai funcii VBA pe scar larg viteza de
calcul tabelar ar putea s scad.
'ersonal cred ca E5cel are toate funciile de care am nevoie, i am folosi doar vreodat
funcii VBA la codul pentru a face programare mai uoar.
0uncii de editare pentru E'cel utili$<nd VBA
Partea a treia dintro serie de treiparte din !lo"uri
n-line de formare, n scris, funcii utiliz-nd VBA, pentru a fi utilizate fie n cadrul altor
programe VBA sau n E5cel n sine.
!. )crierea i >tilizarea func iilor n E5cel Visual Basic
%. E5emple de func ii pentru a face mai u or de codificare
(. )crierea :uncii de utilizare n E5cel VBA #acest articol$
Acest blog face parte din nostru tutorial E5cel VBA . 'rincipale de afaceri nelept .l
este pornit cursuri de formare pe baza de clasW au o privire la noastre de cursuri de E5cel
sau cursuri VBA , de e5emplu.
&omentarii pe acest blog
Acest blog are n prezent nici un comentariu.
Adauga un comentariu la acest blog

Blo"urile scrise de TOPIC


/eneral #!,$
M) ffice #!(($
)F8 )erver #ED$
. @E9 #(0$
DE AUTOR
Andre. /ould #2E$
AndH Bro.n #!,2$
David 4a?efield #($
OennH Bro.n #!$
Mic6ael Allsop #!%$
DE ANU)
%0!0 #%$
%0!! #2D$
%0!% #!00$
%0!( #*,$
%0!* #%E$

&ontactati-ne
+)) feed
9oate drepturile de autor coninut ;nelept .l Business )olutions 8td %0!*. 9oate
drepturile rezervate.