Sunteți pe pagina 1din 18

Chapter 7

Elemente esențiale ale limbajului VBA


In acest capitol
▶ Știind când, de ce și cum să folosești comentariile în codul tău

▶ Utilizarea variabilelor și constantelor

▶ Spuneți VBA ce tip de date utilizați

▶ Știind de ce ar putea fi necesar să utilizați etichete în procedurile dvs.

Deoarece VBA este un limbaj de programare real, foloseste multe elemente Comun tuturor limbilor
de programare. În acest capitol vă prezint La câteva din aceste elemente: comentarii, variabile,
constante, tipuri de date, Array-uri, și câteva alte bunătăți. Dacă ați programat alte limbi, Unele
dintre aceste materiale vor fi familiare. Dacă ești un programator nou, e Timp pentru a vă rostogoli
mânecile și a vă ocupa.

Utilizarea comentariilor în Codul dvs. VBA


Un comentariu este cel mai simplu tip de declarație VBA. Deoarece VBA ignoră aceste lucruri
Declarații, ele pot consta din orice doriți. Puteți introduce un comentariu Să vă reamintiți de ce ați
făcut ceva sau să clarificați unii în mod special Codul elegant pe care l-ai scris.

Utilizați comentariile liber și extensiv pentru a descrie ceea ce face codul (Ceea ce nu este
întotdeauna evident prin citirea codului însuși). Adesea, codul face Sensul perfect astăzi te
mintorează mâine. Am fost acolo. Asta a fost. Începeți un comentariu cu un apostrof ('). VBA ignoră
orice text care urmează Un apostrof într-o linie de cod. Puteți utiliza o linie completă pentru
comentariul dvs. Sau introduceți comentariul dvs. la sfârșitul unei linii de cod. Următorul exemplu
Arată o procedură VBA cu patru comentarii:

Regula "apostrof indică un comentariu" are o singură excepție: VBA nu Interpretați un apostrof în
interiorul unui set de ghilimele ca un indicator de comentariu. De exemplu, următoarea declarație
nu conține un comentariu, desi Are un apostrof:

Când scrieți un cod, este posibil să încercați o procedură prin excluderea unui cod Declarație
particulară sau grup de declarații. Puteți șterge declarațiile Apoi reintroduceți-le mai târziu. Dar asta
eo pierdere de timp. O soluție mai bună este Pur și simplu transforma aceste declarații în comentarii
prin introducerea apostrofelor. VBA Ignoră declarațiile care încep cu apostrofuri atunci când execută
o rutină. La Reactivați acele declarații "comentate", doar eliminați apostrofele.

Iată o modalitate rapidă de a converti un bloc de declarații în comentarii. În VBE, Alegeți


ViewĂndalbarele EditEdit pentru a afișa bara de instrumente Editare. Pentru a converti un bloc De
declarații în comentarii, selectați instrucțiunile și faceți clic pe Comentariu Blochează butonul. Pentru
a elimina apostrofele, selectați instrucțiunile și faceți clic pe Dezactivați butonul Blocare. Toată
lumea își dezvoltă propriul stil de a comenta. Pentru a fi util, totuși, Comentariile ar trebui să
transmită informații care nu sunt imediat evidente Din citirea codului.

Următoarele sfaturi vă pot ajuta să utilizați eficient comentariile:

✓Identificați-vă ca autor. Acest lucru poate fi util atunci când sunteți promovat și persoana care
preia locul de muncă are câteva întrebări.
✓Descrieți succint scopul fiecărei proceduri Sub sau Funcție pe care o scrieți.
✓Utilizați comentariile pentru a urmări modificările aduse unei proceduri.
✓Utilizați un comentariu pentru a indica faptul că utilizați o funcție sau o construcție într-un mod
neobișnuit sau nestandard.
✓Utilizați comentariile pentru a descrie variabilele pe care le utilizați, mai ales dacă nu utilizați
nume de variabile semnificative.
✓Utilizați un comentariu pentru a descrie eventualele soluții pe care le dezvoltați pentru a depăși
erorile din Excel.
✓Scrieți comentarii în timp ce dezvoltați cod, în loc să salvați sarcina pentru un pas final.
✓În funcție de mediul de lucru, vă recomandăm să adăugați o glumă sau două ca un comentariu.
Persoana care îți preia jobul atunci când te promovezi poate aprecia umorul.

Folosind variabile, constante,si tipuri de date


Principalul scop al VBA este manipularea datelor. VBA stochează datele în computerul dvs. Memorie,
iar datele pot sau nu pot ajunge pe disc. Unele date, cum ar fi Ca intervale de foi de lucru, se află în
obiecte. Alte date sunt stocate în variabile care Creați.

Înțelegerea variabilelor
O variabilă este pur și simplu o locație de stocare numită în memoria computerului Care este folosit
de un program. Aveți o mulțime de flexibilitate în denumirea variabilelor, Astfel încât numele
variabilelor să fie cât se poate de descriptive. Atribuiți o valoare La o variabilă utilizând operatorul de
semne egale. (Mai multe despre acest lucru mai târziu în "Utilizarea instrucțiunilor de atribuire".)
Numele variabilelor din aceste exemple apar atât pe partea stângă, cât și pe cea dreaptă A semnelor
egale. Rețineți că ultimul exemplu utilizează două variabile.

VBA impune câteva reguli privind numele de variabile:


✓ You can use letters, numbers, and some punctuation characters, but the first character must be a
letter.
✓ VBA does not distinguish between uppercase and lowercase letters.
✓ You cannot use any spaces, periods, or mathematical operators in a
variable name.
✓ You cannot use the following characters in a variable name: #, $, %, &, or !.
✓ Variable names can be no longer than 255 characters. But nobody even gets close to that limit.
Pentru a face numele variabilelor mai ușor de citit, programatorii folosesc adesea caz mixt (De
exemplu, InterestRate) sau caracterul de subliniere (interest_rate).
VBA are multe cuvinte rezervate pe care nu le puteți utiliza pentru numele sau procedurile de
variabilă nume. Acestea includ cuvinte precum Sub, Dim, Cu, End, Next și Pentru. Dacă încercați să
utilizați unul dintre aceste cuvinte ca o variabilă, puteți obține a Compilați eroarea (ceea ce
înseamnă că codul dvs. nu va fi rulat). Deci, dacă o declarație de atribuire Produce un mesaj de
eroare, verificați dublu și asigurați-vă că variabila Numele nu este un cuvânt rezervat.
VBA vă permite să creați variabile cu nume care se potrivesc cu numele în Modelul obiect Excel, cum
ar fi Workbook and Range. Dar, evident, folosind Nume de genul asta măresc posibilitatea de
confuzie. Iată a (Dar foarte confuz) care declară Gama ca variabilă Numele și funcționează cu o celulă
denumită Gama, într-o foaie de lucru numită Gama.

Respingeți deci nevoia de a utiliza o variabilă denumită Workbook sau Range și folosiți ceva
Cum ar fi MyWorkbook sau MyRange.

Care sunt tipurile de date ale VBA?


Când vorbesc despre tipul de date, mă refer la modul în care un program Stochează datele în
memorie - de exemplu, ca întregi, numere reale sau șiruri de caractere.
Deși VBA poate avea grijă de aceste detalii în mod automat, se întâmplă la un moment dat a costat.
(Nu este un prânz gratuit.) Închirierea VBA se ocupă de rezultatele tastării datelor În execuția mai
lentă și utilizarea ineficientă a memoriei. Pentru aplicații mici, acest lucru De obicei, nu prezintă o
mare problemă. Dar pentru aplicații mari sau complexe, Care poate fi lentă sau trebuie să conserve
fiecare ultim octet de memorie, voi Trebuie să fie în termeni familiari cu tipuri de date.
VBA gestionează automat toate detaliile datelor, ceea ce face viața mai ușoară programatori. Nu
toate limbile de programare oferă acest lux. De exemplu, Unele limbi sunt strict tipizate, ceea ce
înseamnă că programatorul trebuie Să definească explicit tipul de date pentru fiecare variabilă
utilizată.
VBA nu cere să declarați variabilele pe care le utilizați, dar este Cu siguranta o buna practica. Veți
vedea de ce mai târziu în acest capitol.
VBA are o varietate de tipuri de date încorporate. Tabelul 7-1 prezintă cele mai frecvente date
Tipurile de date pe care VBA le poate gestiona.
În general, alegeți tipul de date care utilizează cel mai mic număr de octeți, dar Poate gestiona toate
datele pe care doriți să le stocați în variabilă.
O excepție de la regula "cel mai mic număr de octeți" este Long. Majoritatea programatorilor VBA
Utilizați Lungă în loc de Integer, deoarece acest lucru oferă o ușoară performanță crește. Dar pentru
proceduri mici, nu veți observa nicio diferență Între tipurile de date Integer și Long.

Declarația și variabilele de definire a domeniului


Dacă citiți secțiunile anterioare, știți un pic despre variabile și tipuri de date. În această secțiune,
descoperiți cum să declarați o variabilă ca a Anumit tip de date.

Dacă nu declarați tipul de date pentru o variabilă pe care o utilizați într-o rutină VBA, VBA
Utilizează tipul de date implicit: Varianta. Datele stocate ca o variantă acționează ca un chameleon;
Se schimbă tipul în funcție de ceea ce faci cu el. De exemplu, dacă o variabilă Este un tip de date
Variant și conține un șir de text care arată ca un număr (Cum ar fi "143"), puteți utiliza această
variabilă pentru manipularea șirului, precum și Calcule numerice. VBA gestionează automat
conversia. Închirierea VBA Manipulați tipurile de date poate părea o cale ușoară de ieșire - dar
amintiți-vă că voi Sacrifică viteza și memoria.

Înainte de a utiliza variabilele într-o procedură, este o practică excelentă de a declara Variabilele dvs.
- adică, spuneți tipului de date VBA fiecărei variabile. Declarându-ți numele Variabilele fac ca
macroul să funcționeze mai rapid și să utilizeze mai eficient memoria.
Tipul de date implicit, Varianta, determină VBA să efectueze în mod repetat consumatoare de timp
Verifică și rezervă mai multă memorie decât este necesar. Dacă VBA cunoaște o variabilă Tipul de
date, nu trebuie să investigheze și să rezerve suficientă memorie Pentru a stoca datele.
Pentru a vă obliga să declarați toate variabilele pe care le utilizați, includeți aceste două Cuvinte ca
prima declarație în modulul dvs. VBA:
Când această afirmație este prezentă, nu veți putea rula codul dvs. dacă conține Orice variabile
nedeclarate.
Trebuie să utilizați opțiunea Explicit o singură dată: la începutul modulului dvs., Înainte de declararea
oricăror proceduri din modul. Ține minte că Opțiunea Explicit opțiune se aplică numai modulului în
care se află. Dacă Aveți mai mult de un modul VBA într-un proiect, aveți nevoie de o opțiune
explicită Pentru fiecare modul.

Să presupunem că utilizați o variabilă nedeclarată (adică un variante) numită Rata curenta. La un


moment dat în rutina dvs., introduceți următoarea declarație:

Numele variabilei este greșit scrise (lipsesc un r) și poate fi foarte dificil La fața locului. Dacă nu
observați acest lucru, Excel îl va interpreta ca o altă variabilă, Și probabil vă va determina rutina să
dea rezultate incorecte. Dacă utilizați Opțiunea Explicit la începutul modulului dvs. (forțându-vă să
declarați Variabila CurrentRate), Excel generează o eroare dacă întâlnește o greșeală
Variație a acelei variabile.
Pentru a vă asigura că instrucțiunea Explicit opțiune este inserată automat ori de câte ori
Introduceți un nou modul VBA, activați Definiția cerințelor variabile opțiune. O găsiți în fila Editor din
caseta de dialog Opțiuni (în VBE, Alegeți InstrumenteentoOpțiuni). Vă recomand să faceți acest
lucru.
Declarația variabilelor vă permite de asemenea să profitați de o scurtătură care poate Salvați o
tastare. Doar introduceți primele două sau trei caractere ale variabilei Apoi apăsați Ctrl + Space. VBE
va completa fie intrarea pentru Sau - dacă alegerea este ambiguă - vă arăta o listă de cuvinte
potrivite Selectați din. De fapt, acest truc slick funcționează cu cuvinte și funcții rezervate,
de asemenea. Figura 7-1 prezintă un exemplu despre modul în care funcționează acest lucru.

Figura 7-1: Presare Ctrl + Space Afișează a Listă de variabile nume, rezervat Cuvinte, și funcții.

Acum știți avantajele declarării variabilelor, dar cum faceți acest lucru?
Cea mai obișnuită metodă este să utilizați o instrucțiune Dim. Iată câteva exemple de Variabilele
fiind declarate:
Primele patru variabile sunt declarate ca un tip specific de date. Ultima variabilă, X, nu este declarat
ca un tip specific de date, deci este tratat ca un varianta (poate fi orice).
Pe lângă Dim, VBA are alte trei cuvinte cheie care sunt folosite pentru a declara variabile:

✓ Static
✓ Public
✓ Private

Vă explic mai multe despre cuvintele Dim, Static, Public și privat mai târziu, Dar mai întâi trebuie să
acoperim alte două subiecte relevante aici: o variabilă Domeniul de aplicare și viața unei variabile.
Amintiți-vă că un registru de lucru poate avea orice număr de module VBA. Și un VBA Modulul poate
avea orice număr de proceduri sub și funcționale. O variabilă Domeniul determină care module și
proceduri pot utiliza variabila.
Tabelul 7-2 are detaliile.

Table 7-2 Scopul variabilei


Scop Cum este declarată variabila
Numai procedura Folosind o declarație Dime sau o declarație
statică în procedură Care utilizează variabila
Numai Modul Folosind un Dime sau o declarație privată înainte
de Prima declarație Sub sau Funcție din modul
Toate procedurile din toate modulele Folosind o declarație publică înaintea primului
Sub Sau funcția într-un modul

Confuz? Continuați să întoarceți paginile și veți vedea câteva exemple Faceti chestiile astea clare.

Numai procedura variabila (Procedure-only variables)


Nivelul cel mai scăzut al unei variabile este la nivelul procedurii. (O procedură Este o procedură Sub
sau a unei funcții.) Variabilele declarate în acest scop Pot fi utilizate numai în procedura în care sunt
declarate. Atunci când procedura
Se termină, variabila nu mai există (se duce la o mare găleată mare din Cerul), iar Excel îi eliberează
memoria. Dacă executați din nou procedura, Variabila revine la viață, dar valoarea sa anterioară este
pierdută.

Declarații umoritoare
Subiecte cum ar fi variabilele, tipurile de date, declarațiile, Și domeniul de aplicare poate fi destul de
plictisitor, așa că am venit Cu câteva declarații semi-umorice Pentru amuzamentul tau. Toate acestea
sunt valide declarații:
Dim King As String, Kong
As Long
Dim Mouthful as Byte
Dim Julian As Boolean
Dim Unmarried As Single
Dim Dewey As Decimal
Dim Trouble As Double
Dim WindingRoad As Long
Dim Blind As Date
Public Nuisance
Private FirstClass
Static Cling, Electricity
Dim BaseballCards As New
Collection
Dim DentalFloss As String
Probabil că puteți veni cu altele.

Cea mai obișnuită modalitate de a declara o variabilă numai de procedură este cu un Dim afirmație.
Dim nu se referă la capacitatea mentală a designerilor VBA.
Mai degrabă, este un termen vechi de programare care este scurt pentru dimensiune, care pur și
simplu Înseamnă că anulați memoria pentru o anumită variabilă. Tu de obicei
Plasați declarațiile Dim imediat după instruciunea Sub sau Funcție și Înainte de codul procedurii.

Următorul exemplu prezintă unele variabile declarate numai de procedură declarate de Folosind
instrucțiunile Dim:

Observați că ultima instrucțiune Dim din exemplul precedent nu declară Un tip de date pentru
variabila MyValue; Ea declară numai variabila în sine. Efectul este că variabila MyValue este un
varianta.
Apropo, puteți declara mai multe variabile cu o singură instrucțiune Dim, Ca în următorul exemplu:

Spre deosebire de unele limbi, VBA nu vă permite să declarați un grup de variabile A fi un anumit tip
de date prin separarea variabilelor cu virgule. Pentru De exemplu, deși valabil, următoarea declarație
nu declară toate variabilele Ca intregi:

În acest exemplu, numai k este declarat a fi un întreg; Celelalte variabile Implicit la tipul de date
Variant.
Dacă declarați o variabilă cu domeniul de aplicare doar pentru procedură, alte proceduri în Același
modul poate folosi același nume de variabilă, dar fiecare instanță a lui Variabila este unică pentru
propria sa procedură. În general, variabilele declarate la Nivel de procedură sunt cele mai eficiente
deoarece VBA eliberează memoria Atunci când procedura se încheie.
Numai Module-variabile (Module-only variables)
Uneori doriți ca o variabilă să fie disponibilă pentru toate procedurile dintr-un modul.
Dacă este așa, declarați doar variabila (folosind Dim sau privat) înainte de primul modul Sub sau
funcția - în afara oricărei proceduri. Acest lucru se face în Declarații, la începutul modulului. (Acesta
este și locul unde Opțiunea Explicit este localizată.)

Figura 7-2 arată cum știți când lucrați cu Declarațiile secțiune. Utilizați lista verticală din partea
dreaptă și mergeți direct la Declarații secțiune. Nu treceți Go și nu colectați 200 de dolari.

Figura 7-2: Fiecare VBA Modulul are a declaraţii Secțiune, care apare Înainte de orice Sub sau
Funcţie procedure

De exemplu, să presupunem că doriți să declarați variabila CurrentValue Astfel încât să fie


disponibilă pentru toate procedurile din modulul dvs. Tot ce trebuie să faceți Se utilizează
instrucțiunea Dim în secțiunea Declarații:

Cu această declarație în loc - și în locul potrivit - valoarea curentă Variabila poate fi utilizată din orice
altă procedură din cadrul modulului, și aceasta Își păstrează valoarea de la o procedură la alta.

Variabile publice
Dacă trebuie să faceți o variabilă disponibilă pentru toate procedurile în toate dvs. Modulele VBA
dintr - un registru de lucru, declarați variabila la nivel de modul (în Declarații) utilizând cuvântul
cheie public. Iată un exemplu:

Cuvântul cheie public face ca variabila CurrentRate să fie disponibilă pentru orice procedură În
registrul de lucru - chiar și în celelalte module VBA. Trebuie să inserați Această declarație înainte de
prima instrucțiune Sub sau Funcție într-un modul.
Dacă doriți ca o variabilă să fie disponibilă pentru module din alte registre de lucru, Trebuie să
declarați variabila ca fiind publică și să stabiliți o referință la registrul de lucru Care conține declarația
variabilei. Configurați o referință utilizând InstrumentândreaReferences comanda în VBE. În practică,
partajați o variabilă între ele Registrele de lucru nu se mai fac niciodată. De fapt, n-am mai făcut-o
niciodată o dată în întreaga mea VBA cariera de programare. Dar cred că este bine să știți că se
poate face, în Cazul în care apare vreodată ca o primejdie! întrebare.

Variabile statice
În mod normal, când se încheie o procedură, toate variabilele procedurii sunt resetate. Variabilele
statice reprezintă un caz special, deoarece își păstrează valoarea chiar și atunci când Procedura se
încheie. Voi declarați o variabilă statică la nivelul procedurii. A Variabila statică poate fi utilă dacă
aveți nevoie să urmăriți numărul de ori Executa o procedura. Puteți declara o variabilă statică și o
puteți incrementa fiecare Când executați procedura.
După cum se arată în exemplul următor, declarați variabilele statice utilizând Cuvânt cheie static:

Codul ține evidența numărului de execuții a procedurii Și afișează numărul într-o casetă de mesaje.
Valoarea variabilei Counter Nu se resetează când procedura se termină, dar este resetată când
închideți și Redeschideți registrul de lucru.Chiar dacă valoarea unei variabile declarate ca Static este
reținută după o variabilă
Se încheie, această variabilă nu este disponibilă pentru alte proceduri. În MySub precedent
Exemplu de procedură, variabila Counter și valoarea sa sunt disponibile numai în cadrul Procedura
MySub. Cu alte cuvinte, este o variabilă la nivel de procedură.

Viața variabilelor
Nimic nu trăiește pentru totdeauna, inclusiv variabilele. Domeniul de aplicare al unei variabile nu
numai Determină unde poate fi utilizată această variabilă, afectează, de asemenea, circumstanțele
Variabila este scoasă din memorie.
Puteți șterge toate variabilele din memorie utilizând trei metode:
✓ Faceți clic pe butonul Resetați bara de instrumente (butonul albastru pătrat de pe Bara de
instrumente standard din VBE).
✓ Faceți clic pe "End" când se afișează o casetă de dialog pentru eroarea de rulare.
✓ Includeți o declarație de sfârșit oriunde în codul dvs. Nu este același lucru Ca declarație End Sub
sau End Function.
În caz contrar, numai variabilele de nivel de procedură vor fi eliminate din memorie Când codul
macro a terminat să fie difuzat. Variabile statice, nivel de modul Variabilele și variabilele globale
(publice) își păstrează toate valorile între runde Din codul dvs.

Dacă utilizați variabile la nivel de modul sau la nivel mondial, asigurați-vă că acestea au Valoarea pe
care o așteptați să o aibă. Niciodată nu știți dacă una dintre situații Tocmai am menționat că poate
că ți-au pierdut conținutul!
Lucrul cu constantele
Valoarea unei variabile poate (si de obicei nu) se schimba in timp ce procedura este executare. De
aceea ei o numesc variabilă. Uneori trebuie să te referi la O valoare sau un șir care nu se schimbă
niciodată. Într-un astfel de caz, aveți nevoie de o constantă – a Element numit a cărui valoare nu se
schimbă.
După cum se arată în exemplele de mai jos, declarați constantele utilizând Const declarație.
Declarația declarației oferă, de asemenea, valoarea constantă:

Folosirea constantelor în locul valorilor codate greu sau a șirurilor este o programare excelentă
practică. De exemplu, dacă procedura dvs. trebuie să se refere la una specific (Cum ar fi o rată a
dobânzii) de mai multe ori, este mai bine să declarați valoarea Ca o constantă și se referă mai
degrabă la numele său decât la valoare. Asta te face Cod mai ușor de citit și mai ușor de schimbat. Și
dacă rata dobânzii se schimbă, tu Trebuie să schimbe o singură declarație decât mai multe.

Ca și variabilele, constantele au un domeniu de aplicare. Țineți cont de aceste puncte:


✓ Pentru a face o constantă disponibilă în cadrul unei singure proceduri, declarați Constanta dupa
declaratia Sub sau Function a procedurii.
✓ Pentru a pune o constantă la dispoziția tuturor procedurilor într - un modul, declară Constantă în
secțiunea Declarații pentru modul.
✓ Pentru a crea o constantă pentru toate modulele din registrul de lucru, utilizați Cuvânt cheie
public și declara constant în secțiunea Declarații din Orice modul.

Spre deosebire de o variabilă, valoarea unei constante nu variază. Dacă încercați să Modificați
valoarea unei constante într-o rutină VBA, primiți o eroare. Asta nu este Prea surprinzător pentru că
valoarea unei constante trebuie să rămână constantă. daca tu Trebuie să modificați valoarea unei
constante în timp ce codul dvs. rulează, ce faceți Adevăr nevoie este o variabilă.

Constante prestabilite
Excel și VBA conțin mai multe constante predefinite, pe care le puteți utiliza fără Nevoia de a le
declara singuri. Aparatul de înregistrare macro utilizează de obicei Constante, mai degrabă decât
valori reale. În general, nu trebuie să știți Valoarea acestor constante să le folosească. Următoarea
procedură simplă folosește a Built-in constant (xlCalculationManual) pentru a modifica proprietatea
Calculation din Obiectul Cerere. (Cu alte cuvinte, aceasta modifică recalcularea Excel Mod manual.)

Am descoperit constanta xlCalculationManual prin înregistrarea unei macrocomenzi în timp ce eu


Modificați modul de calcul. De asemenea, m-aș fi uitat în sistemul Ajutor Și a găsit acest lucru:

Name Value Description


xlCalculationAutomatic –4105 Excel controlează recalcularea.
xlCalculationManual –4135 Calculul se face când Utilizatorul o
solicită.
xlCalculationSemiautomatic 2 Excel controlează recalcularea dar
Ignoră modificările din tabele.

Deci, valoarea reală a constantei xlCalculationManual încorporată este -4135. Evident, este mai ușor
să folosiți numele constantei decât să încercați să vă amintiți de acestea O valoare ciudată. După
cum puteți vedea, multe dintre constantele încorporate sunt doar arbitrare Numere care au un
înțeles special pentru VBA.
Pentru a găsi valoarea reală a unei constante încorporate, utilizați fereastra Imediat în VBE și
executați o declarație VBA cum ar fi:

Dacă fereastra Imediat nu este vizibilă, apăsați Ctrl + G. Semnul de întrebare este a Comenzi rapide
pentru tastarea tipăririi.

Lucrul cu șiruri de caractere


Excel poate funcționa atât cu numere, cât și cu text, deci nu ar trebui să fie o surpriză Că VBA are
aceeași putere. Textul este adesea denumit un șir. Poti Lucrați cu două tipuri de șiruri de caractere în
VBA:
✓ String-urile cu lungime fixă sunt declarate cu un număr specificat de caractere. Lungimea maximă
este de 65.526 de caractere. Sunt multe personaje! Ca punct de referință, acest capitol conține
aproximativ jumătate din multe de caractere.
✔ Șirurile cu lungime variabilă teoretic pot deține până la două miliarde de caractere. Dacă
introduceți cinci caractere pe secundă, vă va lua Aproximativ 760 de zile pentru a bate două miliarde
de caractere - presupunând că nu Ia orice pauză de mâncare sau somn.

Când se declară o variabilă de șir cu o instrucțiune Dim, puteți specifica Lungimea maximă dacă o
cunoașteți (este un șir de lungime fixă) sau permiteți VBA să o manipuleze Dinamic (este un șir cu
lungime variabilă). Următorul exemplu declară Variabila MyString ca șir cu o lungime maximă de 50
de caractere. (Utilizare Un asterisc pentru a specifica numărul de caractere, până la 65 526 de
caractere Limita.) Stringul dvs. este, de asemenea, declarat ca un șir, dar lungimea sa este
nespecificată:

Când declarați un șir de lungime fixă care depășește 999, nu utilizați o virgule În numărul care
specifică dimensiunea șirului. De fapt, nu utilizați niciodată virgule când Introducerea unei valori
numerice în VBA. VBA nu-i place asta.

Lucrul cu datele
Un alt tip de date pe care îl considerați util este data. Puteți utiliza o variabilă de șir Pentru a stoca
datele, dar nu puteți efectua calcule de date. Utilizarea datei Tipul de date oferă o rutină mai mare
flexibilitate. De exemplu, este posibil să aveți nevoie Pentru a calcula numărul de zile între două
date. Acest lucru ar fi imposibil (Sau cel puțin extrem de provocator) dacă ați folosit șiruri de
caractere pentru a vă ține datele.
O variabilă definită ca o dată poate conține date care variază de la 1 ianuarie 0100,Până la 31
decembrie 9999. Aceasta este o perioadă de aproape 10.000 de ani și mai mult decât Suficient
pentru chiar și cea mai agresivă prognoză financiară. De asemenea, puteți utiliza funcția Datele de
date date pentru a lucra cu date de timp (VBA nu are un tip de date de timp).
Aceste exemple afișează variabilele și constantele ca date de tip Date:

În VBA, plasați datele și orele între două mărci de tip hash, după cum se arată în Exemplele
precedente.
Variabilele de date afișează datele în funcție de formatul datei scurte a sistemului dvs.,
Și ele afișează orele în funcție de formatul de timp al sistemului (fie 12-, fie Formatare de 24 de ore).
Registrul Windows stochează aceste setări și tu Poate să le modifice prin caseta de dialog Regional și
Language Options din Panoul de control Windows. Prin urmare, formatul de dată sau de dată afișat
de VBA Poate varia, în funcție de setările pentru sistemul pe care se aplică aplicația rulează.

Când scrieți codul VBA, totuși, trebuie să utilizați unul dintre formatele de date din S.U.A.
(Cum ar fi mm / zi / aaaa). Deci, următoarea declarație atribuie o zi în luna octombrie
(Nu noiembrie) la variabila MyDate (chiar dacă sistemul dvs. este setat să utilizeze zgomotul dd /
Mm / aaa pentru datele):

Când afișați variabila (cu funcția MsgBox, de exemplu), VBA


Afișează MyDate utilizând setările de sistem. Deci, dacă sistemul dvs. utilizează codul dd / mm /
Yyyy data format, MyDate va fi afișat ca 11/10/2013.

Utilizarea instrucțiunilor de atribuire


O instrucțiune de atribuire este o instrucțiune VBA care atribuie rezultatul unei Expresia unei
variabile sau a unui obiect. Sistemul de asistență Excel definește termenul Expresie ca

.. . O combinație de cuvinte cheie, operatori, variabile și constant Dă un șir, un număr sau un obiect.
O expresie poate fi folosită pentru a efectua a Calculați, manipulați caracterele sau testați datele.
Nu puteam să-mi spun mai bine, așa că nici nu voi încerca.

O mare parte din munca dvs. în VBA implică dezvoltarea (și depanarea) expresiilor. Dacă știți cum să
creați formule în Excel, nu veți avea probleme în a crea expresii. Cu o formulă de foaie de lucru, Excel
afișează rezultatul într-o celulă. A Expresia VBA, pe de altă parte, poate fi atribuită unei variabile.

Exemple de declarații de atribuire


În exemplele de instrucțiuni de atribuire care urmează, expresiile sunt la Dreptul semnul egal:

Expresiile pot fi la fel de complexe cum trebuie să fie ele; Utilizați continuarea liniei Caracter (un
spațiu urmat de o subliniere) pentru a face expresii lungi Mai ușor de citit. Deseori, expresiile
utilizează funcții: funcțiile încorporate ale VBA, foaia de lucru Excel Funcții sau funcții pe care le
dezvoltați cu VBA. Eu discut funcțiile în Capitolul 9.
Despre semnul egal
După cum puteți vedea în exemplul precedent, VBA folosește semnul egal ca al său Cesiune
operator. Probabil sunteți obișnuiți să utilizați un semn egal ca Un simbol matematic pentru
egalitate. Prin urmare, o declarație de atribuire cum ar fi Următoarele vă pot determina să ridicați
sprancenele:

În ce univers nebun este z egal cu el însuși plus 1? Răspuns: Nici un univers cunoscut. În acest caz,
instrucțiunea de atribuire (când este executată) crește Valoarea z cu 1. Deci, dacă z este de 12,
executarea instrucției face z egală cu 13. Amintiți-vă că o misiune utilizează semnul egal ca operator,
nu a Simbol al egalității.

Operatori netede
Operatorii joacă un rol major în VBA. Pe lângă operatorul de semne egale (discutat În secțiunea
anterioară), VBA oferă mai mulți operatori. Tabelul 7-3 Listează acești operatori. Acestea ar trebui să
fie familiare pentru dvs., deoarece acestea sunt Acei operatori utilizați în formulele foilor de lucru
(cu excepția operatorului Mod). Atunci când se scrie o formulă Excel, modulo aritmetică se face
folosind MOD funcţie. De exemplu, următoarea formulă returnează 2 (restul când Împărțiți 12 cu 5):

În VBA, operatorul Mod este folosit ca acesta (și z are o valoare de 2):

Termenul de concatenare este programator vorbesc pentru "se unesc împreună". Astfel, dacă tu
Concatenați șiruri de caractere, combinați șiruri de caractere pentru a crea un nou și îmbunătățit
şir.
După cum se arată în Tabelul 7-4, VBA oferă de asemenea un set complet de operatori logici. De
Acestea, Nu, Și, și Or sunt cele mai frecvent utilizate. N-am văzut pe nimeni să o folosească
Ceilalți trei operatori logici.
Ordinea precedentă pentru operatorii din VBA este exact aceeași ca în Excel formule. Exponentierea
are cea mai mare prioritate. Înmulțire și împărțire Următorul, urmat de adăugare și scădere. Puteți
utiliza paranteze Pentru a schimba ordinea prioritară naturală, făcând tot ce este în formă de
sandwich În paranteze veniți înaintea oricărui operator. Aruncați o privire la acest cod:

Când acest cod este executat, care este valoarea lui z? Dacă ați răspuns la 13, voi Obțineți o stea de
aur care să dovedească că înțelegeți conceptul de precedent al operatorului. Dacă ați răspuns la 16,
citiți: Operația de multiplicare (5 * y) Este efectuată mai întâi și rezultatul este adăugat la x. Dacă ați
răspuns la ceva Altele decât 13 sau 16, nu am nici un comentariu.
Apropo, am lucruri mai importante de reținut decât modul în care operatorul Lucruri precedente,
așa că am tendința de a utiliza paranteze chiar și atunci când nu sunt necesar. De exemplu, în viața
reală, aș scrie acea declarație de ultimă sarcină asa:

Nu fi timid să folosiți paranteze, chiar dacă acestea nu sunt necesare - în special Dacă acest lucru
face codul dvs. mai ușor de înțeles. VBA nu-i pasă dacă Utilizați paranteze suplimentare.

Lucrul cu Arrays (Working with Arrays)


Majoritatea limbajelor de programare suportă rețelele. O matrice este un grup de variabile
Care au un nume comun. Se referă la o variabilă specifică din matrice prin Folosind numele
matricei și un număr de index în paranteze. De exemplu, voi Poate defini o matrice de
variabile de șir de 12 pentru a păstra numele lunilor al anului. Dacă numiți matricea
MonthNames, puteți să vă referiți la primul element Din matrice ca MonthNames (1), al
doilea element ca MonthNames (2) și așa mai departe.

Declararea matricelor
Înainte de a putea utiliza o matrice, trebuie să o declarați. Fara exceptii. Spre deosebire de
normal Variabile, VBA este foarte strictă în legătură cu această regulă. Voi declarați o
matrice cu un Dim Sau Declarație publică, așa cum declarați o variabilă regulată. Totuși, și tu
Trebuie să specificați numărul de elemente din matrice. Faceți acest lucru specificând Primul
număr al indexului, cuvântul cheie Către și ultimul număr al indexului – toate În paranteze.
Următorul exemplu arată modul de declarare a unei matrice de 100 de numere întregi:

Când declarați o matrice, puteți alege să specificați numai indexul superior. Dacă omiteți
indexul inferior, VBA presupune că este 0. Prin urmare, ambele Următoarele declarații
declară aceeași matrice de 101 elemente:

Dacă doriți ca VBA să presupună că 1 (mai degrabă decât 0) este indicele inferior pentru dvs.
Include următoarele afirmații în secțiunea Declarații din secțiunea dvs. modul:

Această instrucțiune obligă VBA să utilizeze 1 ca primul număr de index pentru acele array-
uri Declară doar indicele superior. Dacă această afirmație este prezentă, următoarele
afirmații Sunt identice, ambele declarând o matrice de 100 de elemente:

Matrici multidimensionale
Matricele create în exemplele anterioare sunt toate mesele unidimensionale.
Gândiți-vă la matricele unidimensionale ca la o singură linie de valori. Arrays pe care le
creați În VBA pot avea până la 60 de dimensiuni - deși rareori aveți nevoie de mai mult
Decât două sau trei dimensiuni într-o matrice. Următorul exemplu declară un Set de 81 de
integer cu două dimensiuni:

Vă puteți gândi la această matrice ca ocupând o matrice de 9 x 9 - perfectă pentru stocare


Toate numerele dintr-un puzzle Sudoku.
Pentru a vă referi la un element specific din această matrice, trebuie să specificați două
indexuri Numere (similar cu "rândul" și cu "coloana" din matrice). Următoarele Exemplul
arată cum puteți atribui o valoare unui element din această matrice:

Această instrucțiune atribuie o valoare unui singur element din matrice. Dacă te gândești
A matricei în termeni de o matrice de 9 x 9, aceasta atribuie 125 elementului Localizat în al
treilea rând și în a patra coloană a matricei.
Iată cum să declarați o matrice tridimensională, cu 1.000 de elemente:
Vă puteți gândi la o matrice tridimensională ca un cub. Vizualizarea unei game de Mai mult
de trei dimensiuni este mai dificilă. Îmi pare rău, încă nu am stapanit A patra dimensiune și
dincolo.

Matrice dinamice
De asemenea, puteți crea matrice dinamice. O matrice dinamică nu are o presetare
Numărul de elemente. Declare o matrice dinamică cu un set gol de paranteze:

Înainte de a putea utiliza această matrice, trebuie să utilizați instrucțiunea ReDim pentru a
spune VBA Câte elemente are matricea. De obicei, numărul elementelor din Matricea este
determinată în timp ce codul dvs. rulează. Puteți folosi instrucțiunea ReDim De câte ori,
schimbarea mărimii matricei ori de câte ori este necesar. Exemplul următor demonstrează
modul de modificare a numărului de elemente din a Dinamic. Se presupune că variabila
NumElements conține o valoare, Pe care le-a calculat codul.

Când redimensionați o matrice utilizând ReDim, eliminați toate valorile în present Stocate în
elementele matricei. Puteți evita distrugerea vechilor valori Utilizând cuvântul cheie
Conservare. Următorul exemplu arată cum puteți Păstrați valorile unei matrice când
redimensionați matricea:

Dacă MyArray are în prezent zece elemente și executați instrucțiunea precedent Cu


numerele egale cu 12, primele zece elemente rămân intacte și Matricea are loc pentru două
elemente suplimentare (până la numărul conținut În variabilele numerice). Dacă numerele
sunt egale cu 7, cu toate acestea, primul Șapte elemente sunt reținute, dar celelalte trei
elemente le corespund deces.
Tema matricei revine din nou în Capitolul 10, când discut buclă.

Utilizarea etichetelor
În versiunile inițiale ale BASIC, fiecare linie de cod necesită un număr de linie. Pentru
De exemplu, dacă ați fi scris un program BASIC în anii '70 (îmbrăcați, bineînțeles, În fundul
dvs. de clopot), s-ar putea să se fi uitat în felul următor:

VBA permite utilizarea unor astfel de numere de linie și chiar permite etichetarea textului.
Tu
Nu folosiți în mod obișnuit o etichetă pentru fiecare linie, dar ocazional trebuie să o utilizați
o eticheta. De exemplu, introduceți o etichetă dacă utilizați o declarație GoTo (despre care
discut În capitolul 10). O etichetă trebuie să înceapă cu primul caracter nonblank pe o linie
Și se termină cu un colon.
Informațiile din acest capitol devin mai clare pe măsură ce citiți ulterior capitole. Dacă doriți
să aflați mai multe despre elementele de limbaj VBA, mă refer La sistemul de ajutor VBA.
Puteți găsi cât mai multe detalii de care aveți nevoie sau Grijă, să știu.