Matricele VBA - conceptul și dimensiunea de matrice
Array - o colecție de variabile care au un nume comun și tipul de bază. Toate elementele de date sohranya- proxy în matrice trebuie să fie de același tip. Informațiile stocate în matrice pot fi accesate în orice ordine.
O matrice vă permite să stocați și să manipuleze numărul de elemente de date printr-un singur interval variabil. Array de procesare simplifică foarte mult utilizarea de cicluri.
matrice dimensionale
matrice dimensională - aceasta este cea mai ușoară matrice opțiune care utilizează o listă de date obișnuite. De exemplu: John, Peter, Nick, Mike, Vania, Glorie, Igor, Jura, Sasha, Vova este o matrice șir, format din 10 elemente. Să dau un My_Array nume.
Numerotarea elementelor din matrice începe de la 0. Acest sistem de numerotare este destul de comună în programare se numește o numerotare bazată pe zero.
Pentru a avea acces la datele stocate într-un anumit element de matrice trebuie să specifice numele matrice urmat de un număr, numit un element de index. Indicele este întotdeauna inclus în paranteze. De exemplu: My_Array (3) - acest element de matrice noastre corespunde cu „Misa“ (nu uita că implicit elemente ale șirului de numere începe de la 0).
Deoarece numerotarea cu o bază zero nu este foarte convenabil (așa cum ne-am obișnuit să gândesc 1, nu este 0), VBA există o directivă compilator care vă permite să stabilească acest „inconvenient“: Baza de opțiuni.
matrice multidimensionale
matrice statice și dinamice
Matricile care nu afectează numărul elementelor sale, numite matrici statice. Un exemplu de astfel de matrice poate servi ca My_Array matrice de mai sus. care conține 10 elemente.
Cu toate acestea, există situații când inițial număr necunoscut de elemente din matrice, sau, în proces pot fi variate. Astfel de matrice sunt numite matrici dinamice.
Matricea dinamică poate crește sau micșora pentru a se potrivi exact numărul necesar de elemente de memorie, fără un consum zadar.
Dim varname ([Indicii]) [Ca Type] varname - orice nume al unei matrice folosind un nume de identificator valid; - subscript matrice dimensiune. Dacă dimensiunea de matrice este mai mare decât unul, apoi separate prin virgulă Indici.
Operatorul are subscript următoarea sintaxă:
[Pentru Jos] superior [[inferior To] superior]. inferior - definește intervalul inferior de indici valabile pentru matrice (opțional); superioară - definește limita superioară pentru indicii de matrice (argument necesar).
Utilizarea matrice
Pentru a accesa elementul de matrice trebuie să specificați numele de matrice urmat de valoarea indicelui, între paranteze.
Prin utilizarea bucle imbricate pot fi aranjate destul de ușor inițializeze o matrice bidimensională:
Schimbarea dimensiunii unei matrice dinamice
ReDim [Păstrare] varname (subscript) [Ca Type] [, varname (subscript) [Ca Type]] varname - numele unui tablou existent; subscript - dimensiunea matrice existente; Tip - orice tip de VBA. Utilizați un operator separat ca tip pentru fiecare matrice, care este determinată; Păstrați - un argument opțional. Utilizarea sa conduce la faptul că datele disponibile deja într-o matrice sunt reținute după schimbarea dimensiunii sale.
Exemple de utilizarea corespunzătoare a declarației ReDim. Dim Array_Month () ca șir - șir dimensional dinamic matrice ReDim Array_Month (29) - dimensiune ustanavlivet array dinamic 29 elemente egale ReDim Array_Month (1 la 30) - pentru a modifica dimensiunea elementului matrice 30 ReDim Conservarea Array_Month (1 la 31) - modifică Dimensiunea matrice 31 elemente, menținând în același timp conținutul Dim Array_DBL () Deoarece single - declară o matrice dinamică ReDim Array_DBL (2, 9), - făcând o serie de bidimensionala ReDim Array_DBL (3, 7) - redimensioneaza matrice bidimensional ReDim Păstrare Array_DBL (1 până la 3, 1 5) - modifică ultima mărime de matrice, menținând în același timp conținutul părților
Acorde o atenție! Puteți modifica numai ultima dimensiune a unei matrice multidimensionale, atunci când cuvântul cheie Păstrare.
Funcții LBound, UBound
Funcții LBound, UBound a reveni la valorile limită inferioare și superioare ale indicilor de matrice statice sau dinamice.
Sintaxa: LBound (array_Name [, dimensiune]) UBound (array_Name [, dimensiune]) array_Name - numele dimensiunii array - un număr întreg (opțional). Definește dimensiunea matrice pentru care este necesar să se obțină o limită superioară sau inferioară. În absența dimensiunii limită de întoarcere pentru prima dimensiune a șirului.
Următoarea listă demonstrează utilizarea funcțiilor LBound, UBound:
Curățarea și îndepărtarea matricelor folosind Erase
Erase operatorul permite clearance-ul pentru îndepărtarea matrice statice și dinamice -.
În cazul în care elementele matricei sunt umplute cu datele din matrice să rămână atâta timp cât utilizatorul nu atribuie noi valori elemente ale unei matrice sau până când VBA este eliberat din matrice. De multe ori se întâmplă ca în calculele ulterioare nu vor fi utilizate matrice dinamică în nici un caz, prin urmare, nepotrivit pentru a „ține“ ea în memoria calculatorului, pentru că poate afecta viteza programului. Sau este necesar pentru a șterge toate valorile într-o matrice statică, stabilind o valoare numerică 0, iar șirul - la un șir gol. Acest lucru se poate realiza prin utilizarea bucle imbricate - așa cum a fost arătat în lecția anterioară. Dar se poate face mult mai ușor:
Acest operator resetări (dacă un tablou static) sau Goleste (dacă este dinamic matrice) matrice My_Array.
Ștergeți operatorul elimină din matrice de memorie dinamică, eliberând spațiul de memorie utilizat anterior de acea matrice. Când ștergeți un câmp dinamic folosind operatorul de ștergere trebuie să re-creeze matrice folosind instrucțiunea ReDim înainte de a putea utiliza din nou această matrice dinamică deosebită.
Ștergeți comportamentul operatorului de matrice statice depinde de tipul particular al elementelor de matrice (a se vedea tabelul).
Tipul de matrice statice