Înțelegerea tipurilor de date Excel VBA (variabile și constante)

În Excel VBA, vi se va cere adesea să utilizați variabile și constante.

Când lucrați cu VBA, o variabilă este o locație din memoria computerului dvs. unde puteți stoca date. Tipul de date pe care îl puteți stoca într-o variabilă ar depinde de tipul de date al variabilei.

De exemplu, dacă doriți să stocați numere întregi într-o variabilă, tipul dvs. de date ar fi „Întreg” și dacă doriți să stocați text, atunci tipul dvs. de date ar fi „Șir”.

Mai multe despre tipurile de date mai târziu în acest tutorial.

În timp ce valoarea unei variabile se modifică atunci când codul este în desfășurare, o constantă deține o valoare care nu se schimbă niciodată. Ca o bună practică de codificare, ar trebui să definiți tipul de date atât - variabil cât și constant.

De ce să folosiți variabile în VBA?

Când codificați în VBA, veți avea nevoie de variabile pe care le puteți utiliza pentru a deține o valoare.

Avantajul utilizării unei variabile este că puteți modifica valoarea variabilei din cod și să o utilizați în continuare în cod.

De exemplu, mai jos este un cod care adaugă primele 10 numere pozitive și apoi afișează rezultatul într-o casetă de mesaj:

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 To 10 k = k + i Next i MsgBox k End Sub

Există trei variabile în codul de mai sus - Var, eu, și k.

Codul de mai sus utilizează o buclă For Next în care toate aceste trei variabile sunt modificate pe măsură ce buclele sunt finalizate.

Utilitatea unei variabile constă în faptul că poate fi modificată în timp ce codul dvs. este în curs.

Mai jos sunt câteva reguli pe care trebuie să le aveți în vedere atunci când numiți variabilele în VBA:

  1. Puteți utiliza alfabete, numere și punctuații, dar primul număr trebuie să fie un alfabet.
  2. Nu puteți utiliza spațiu sau punct în numele variabilei. Cu toate acestea, puteți utiliza un caracter de subliniere pentru a face mai ușor de citit numele variabilelor (cum ar fi Rate_interes)
  3. Nu puteți utiliza caractere speciale (#, $,% sau &) în numele variabilelor
  4. VBA nu face distincție între caz în numele variabilei. Deci, „InterestRate” și „interestrate” sunt aceleași pentru VBA. Puteți utiliza majuscule și minuscule pentru a face variabilele mai lizibile.
  5. VBA are câteva nume rezervate pe care le puteți utiliza pentru un nume de variabilă. De exemplu, nu puteți utiliza cuvântul „Next” ca nume de variabilă, deoarece este un nume rezervat pentru bucla For Next.
  6. Numele variabilei dvs. poate avea maximum 254 de caractere.

Tipul de date al variabilelor

Pentru a utiliza cât mai bine variabilele, este o bună practică să specificați tipul de date al variabilei.

Tipul de date pe care îl atribuiți unei variabile va depinde de tipul de date pe care doriți să o dețină variabila respectivă.

Mai jos este un tabel care prezintă toate tipurile de date disponibile pe care le puteți utiliza în Excel VBA:

Tipul de date Octeți utilizați Gama de valori
Octet 1 octet 0 la 255
Boolean 2 octeți Adevărat sau fals
Întreg 2 octeți -32.768 până la 32.767
Lung (întreg lung) 4 octeți -2.147.483.648 până la 2.147.483.647
Singur 4 octeți -3.402823E38 la -1.401298E-45 pentru valori negative; 1.401298E-45 la 3.402823E38 pentru valori pozitive
Dubla 8 octeți -1.79769313486231E308 la-4.94065645841247E-324 pentru valori negative; 4.94065645841247E-324 până la 1.79769313486232E308 pentru valori pozitive
Valută 8 octeți -922.337.203.685.477,5808 la 922.337.203.685.477,5807
Zecimal 14 octeți +/- 79.228.162.514.264.337.593.543.950.335 fără punct zecimal; +/- 7.9228162514264337593543950335 cu 28 de locuri în dreapta zecimalei
Data 8 octeți 1 ianuarie 100 - 31 decembrie 9999
Obiect 4 octeți Orice referință de obiect
Șir (lungime variabilă) 10 octeți + lungimea șirului De la 0 la aproximativ 2 miliarde
Șir (lungime fixă) Lungimea șirului 1 până la aproximativ 65.400
Varianta (cu numere) 16 octeți Orice valoare numerică până la intervalul unui dublu
Varianta (cu caractere) 22 octeți + lungimea șirului Același interval ca și pentru șirul cu lungime variabilă
Definit de utilizator Variază Intervalul fiecărui element este același cu domeniul tipului său de date.

Când specificați un tip de date pentru o variabilă în cod, acesta îi spune VBA cum să stocheze această variabilă și cât spațiu să aloce pentru aceasta.

De exemplu, dacă trebuie să utilizați o variabilă menită să mențină numărul lunii, puteți utiliza tipul de date BYTE (care poate găzdui valori de la 0 la 255). Deoarece numărul lunii nu va fi peste 12, acest lucru va funcționa bine și va rezerva, de asemenea, mai puțină memorie pentru această variabilă.

Dimpotrivă, dacă aveți nevoie de o variabilă pentru a stoca numerele rândurilor în Excel, trebuie să utilizați un tip de date care poate găzdui un număr de până la 1048756. Deci, cel mai bine este să utilizați tipul de date Long.

Declararea tipurilor de date variabile

Ca o bună practică de codificare, ar trebui să declarați tipul de date al variabilelor (sau constantelor) atunci când scrieți codul. Acest lucru vă asigură că VBA alocă variabilei doar memoria specificată și acest lucru vă poate face codul să ruleze mai repede.

Mai jos este un exemplu în care am declarat diferite tipuri de date pentru diferite variabile:

Sub DeclaringVariables () Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

Pentru a declara un tip de date variabil, trebuie să utilizați instrucțiunea DIM (care este prescurtarea pentru Dimensiune).

În ‘Dim X ca întreg‘, Am declarat variabila X ca tip de date întregi.

Acum, când îl folosesc în codul meu, VBA ar ști că X poate conține doar tipul de date întregi.

Dacă încerc să îi atribui o valoare care nu este un număr întreg, voi primi o eroare (așa cum se arată mai jos):

Notă: Puteți alege, de asemenea, să nu declarați tipul de date, caz în care VBA ia în considerare automat variabila variantei de tip de date. O variantă de tip de date poate găzdui orice tip de date. Deși acest lucru poate părea convenabil, nu este o bună practică să folosiți variante de tip de date. Tinde să ocupe mai multă memorie și poate face ca codul VBA să ruleze mai lent.

Declararea variabilă obligatorie (opțiune explicită)

Deși puteți codifica fără a declara vreodată variabile, este o bună practică să faceți acest lucru.

În afară de economisirea memoriei și de eficientizarea codului dvs., declararea variabilelor are un alt avantaj major - ajută la captarea erorilor cauzate de numele variabilelor scrise greșit.

Pentru a vă asigura că sunteți forțați să declarați variabile, adăugați următoarea linie în partea de sus a modulului.

Opțiune explicită

Când adăugați „Option Explicit”, vi se va cere să declarați toate variabilele înainte de a rula codul. Dacă există o variabilă care nu a fost declarată, VBA ar afișa o eroare.

Există un avantaj imens în utilizarea opțiunii explicite.

Uneori, puteți ajunge să faceți o eroare de tastare și să introduceți un nume de variabilă care este incorect.

În mod normal, VBA nu poate să știe dacă este o greșeală sau este intenționată. Cu toate acestea, atunci când utilizați „Option Explicit”, VBA va vedea numele variabilei ortografiate greșit ca o nouă variabilă care nu a fost declarată și vă va arăta o eroare. Acest lucru vă va ajuta să identificați aceste nume de variabile scrise greșit, care pot fi destul de greu de identificat într-un cod lung.

Mai jos este un exemplu în care folosind „Option Explicit” identifică eroarea (care nu ar fi putut fi blocată dacă nu aș fi folosit „Option Explicit”)

Sub CommissionCalc () Dim CommissionRate Ca Dublu Dacă Interval ("A1"). Valoare> 10000 Apoi CommissionRate = 0,1 Altele CommissionRtae = 0,05 Sfârșit Dacă MsgBox "Total Comisie:" & Interval ("A1"). Valoare * CommissionRate End Sub

Rețineți că am scris greșit cuvântul „CommissionRate” o dată în acest cod.

Dacă nu folosesc Option Explicit, acest cod ar rula și îmi va da valoarea totală greșită a comisionului (în cazul în care valoarea din celula A1 este mai mică de 10000).

Dar dacă folosesc Option Explicit în partea de sus a modulului, nu mă va lăsa să rulez acest cod înainte de a corecta cuvântul scris greșit sau de a-l declara ca o altă variabilă. Se va afișa o eroare așa cum se arată mai jos:

Deși puteți insera rândul „Opțiune explicită” de fiecare dată când codificați, iată pașii pentru a face să apară în mod implicit:

  1. În bara de instrumente VB Editor, faceți clic pe Instrumente.
  2. Faceți clic pe Opțiuni.
  3. În caseta de dialog Opțiuni, faceți clic pe fila Editor.
  4. Bifați opțiunea - „Necesită declarație variabilă”.
  5. Faceți clic pe OK.

După ce ați activat această opțiune, ori de câte ori deschideți un nou modul, VBA ar adăuga automat linia „Opțiune explicită”.

Notă: Această opțiune va avea impact asupra oricărui modul pe care îl creați după activarea acestei opțiuni. Toate modulele existente nu sunt afectate.

Domeniul de aplicare al variabilelor

Până acum, am văzut cum să declarăm o variabilă și să îi atribuim tipuri de date.

În această secțiune, voi acoperi domeniul variabilelor și modul în care puteți declara o variabilă care trebuie utilizată numai într-un subrutină, într-un întreg modul sau în toate modulele.

Scopul unei variabile determină unde poate fi utilizată variabila în VBA,

Există trei moduri de a acoperi o variabilă în Excel VBA:

  1. Într-un singur subrutin (Variabile locale)
  2. În cadrul unui modul (Variabile la nivel de modul)
  3. În toate modulele (Variabile publice)

Să analizăm fiecare dintre acestea în detaliu.

În cadrul unui singur subrutin (variabile locale)

Când declarați o variabilă în cadrul unui subrutin / procedură, atunci variabila respectivă este disponibilă numai pentru acel subrutin.

Nu îl puteți folosi în alte subrutine din modul.

De îndată ce subrutina se termină, variabila este ștearsă și memoria utilizată de aceasta este eliberată.

În exemplul de mai jos, variabilele sunt declarate în cadrul subrutinei și vor fi șterse la finalizarea acestui subrutine.

În cadrul unui modul (variabile la nivel de modul)

Când doriți ca o variabilă să fie disponibilă pentru toate procedurile dintr-un modul, trebuie să o declarați în partea de sus a modulului (și nu în niciun subrutină).

Odată ce o declarați în partea de sus a modulului, puteți utiliza acea variabilă în toate procedurile din acel modul.

În exemplul de mai sus, variabila „i” este declarată în partea de sus a modulului și este disponibilă pentru a fi utilizată de toate modulele.

Rețineți că, atunci când subrutina se termină, variabilele la nivel de modul nu sunt șterse (își păstrează valoarea).

Mai jos este un exemplu, unde am două coduri. Când rulez prima procedură și apoi rulez a doua, valoarea „i” devine 30 (deoarece poartă valoarea 10 din prima procedură)

În toate modulele (variabile publice)

Dacă doriți ca o variabilă să fie disponibilă în toată procedura din registrul de lucru, trebuie să o declarați cu cuvântul cheie Public (în loc de DIM).

Linia de cod de mai jos din partea de sus a modulului ar face variabila „CommissionRate” disponibilă în toate modulele din registrul de lucru.

 Public CommissionRate as Double

Puteți insera declarația variabilă (folosind cuvântul cheie public), în oricare dintre module (în partea de sus înainte de orice procedură).

Variabile statice (care păstrează valoarea)

Când lucrați cu variabile locale, de îndată ce procedura se termină, variabila își va pierde valoarea și va fi ștearsă din memoria VBA.

În cazul în care doriți ca variabila să păstreze valoarea, trebuie să utilizați Static cuvânt cheie.

Permiteți-mi să vă arăt mai întâi ce se întâmplă într-un caz normal.

În codul de mai jos, când rulez procedura de mai multe ori, va afișa valoarea 10 de fiecare dată.

Sub Procedură1 () Dim i As Integer i = i + 10 MsgBox i End Sub

Acum, dacă folosesc cuvântul cheie Static în loc de DIM și rulez procedura de mai multe ori, acesta va continua să afișeze valori în trepte de 10. Acest lucru se întâmplă deoarece variabila „i” își păstrează valoarea și o folosește în calcul.

Sub Procedură1 () Static i Ca întreg i = i + 10 MsgBox i End Sub

Declararea constantelor în Excel VBA

În timp ce variabilele se pot modifica în timpul executării codului, dacă doriți să aveți valori fixe, puteți utiliza constante.

O constantă vă permite să atribuiți o valoare unui șir numit pe care îl puteți utiliza în cod.

Avantajul utilizării unei constante este că facilitează scrierea și înțelegerea codului și, de asemenea, vă permite să controlați toate valorile fixe dintr-un singur loc.

De exemplu, dacă calculați comisioane și rata comisionului este de 10%, puteți crea o constantă (CommissionRate) și îi puteți atribui valoarea 0,1.

În viitor, dacă rata comisionului se schimbă, trebuie doar să efectuați modificarea la un loc, în loc să o modificați manual în cod peste tot.

Mai jos este un exemplu de cod în care am atribuit o valoare constantei:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range ("A1") * CommissionRate MsgBox CommissionValue End Sub

Următoarea linie este utilizată pentru a declara constanta:

Const CommissionRate As Double = 0.1

Când declarați constante, trebuie să începeți cu cuvântul cheie „Const‘, Urmat de numele constantei.

Rețineți că am specificat tipul de date al constantei ca Dublu în acest exemplu. Din nou, este o practică bună să specificați tipul de date pentru ca codul dvs. să ruleze mai rapid și să fie mai eficient.

Dacă nu declarați tipul de date, acesta va fi considerat o variantă de tip de date.

La fel ca variabilele, constantele pot avea, de asemenea, domeniul de aplicare în funcție de locul și modul în care acestea sunt declarate:

  1. Într-un singur subrutin (constante locale): Acestea sunt disponibile în subrutina / procedura în care acestea sunt declarate. Pe măsură ce procedura se încheie, aceste constante sunt șterse din memoria sistemului.
  2. În cadrul unui modul (constante la nivel de modul): Acestea sunt declarate în partea de sus a modulului (înainte de orice procedură). Acestea sunt disponibile pentru toate procedurile din modul.
  3. În toate modulele (constante publice): Acestea sunt declarate folosind cuvântul cheie „Public”, în partea de sus a oricărui modul (înainte de orice procedură). Acestea sunt disponibile pentru toate procedurile din toate modulele.

Vă pot plăcea, de asemenea, următoarele tutoriale VBA:

  • Cum să înregistrați o macro în Excel
  • Lucrul cu celule și intervale în Excel VBA
  • Lucrul cu foi de lucru folosind Excel VBA
  • Lucrul cu registrele de lucru în Excel VBA
  • Evenimente VBA
  • Bucle VBA Excel
  • Cum se execută o macro în Excel
  • Dacă apoi Else Declarație în Excel VBA.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave