matrice №8
Multe definiții ale matrice. Ele sunt diferite în formă, dar același conținut.
Array - un set de același tip de date stocate în memorie și care are un nume.
Matricea are următoarele caracteristici:
indice - numărul element din matrice;
Element - fiecare valoare în matrice;
Dimensiunea - numărul de elemente din matrice.
O matrice este adesea numit de masă.
într-un index de matrice unidimensională indică ... (în locul sau poziția unui element din matrice).
Primul element din index matrice bidimensională indică ... (pe linia pe care este elementul matrice).
Al doilea element din indicele matrice bidimensională indică ... (o coloană în care elementul de matrice).
matrice dimensionale în VBA
Cel mai puțin matrice complexă - este doar o listă de elemente de date; acest tip de matrice se numește matrice simplă sau o singură dimensiune. O astfel de matrice poate fi reprezentat ca o coadă, în care fiecare element al cozii este atribuit nu numai un număr de ordine (în coadă), dar valoarea sa specifică (nume).
La crearea matrice, inclusiv multi-dimensionale, pentru a stoca valoarea fiecărui element este alocat RAM (chiar dacă este nul sau șir gol). Astfel, creând o gamă largă, există o scădere bruscă a memoriei disponibile, care pot afecta în mod negativ funcționarea programului. Prin urmare, pentru a crea o matrice multi-dimensionale ar trebui să fie numai după cum este necesar. Astfel de matrice sunt numite statice (static), deoarece numărul de elemente din matrice nu se schimba.
Selectarea dimensiunii de matrice poate fi dificil, dacă nu sunteți sigur cât de mult datele vor fi introduse în matrice, sau în cazul în care cantitatea de date colectate pentru matrice variază foarte mult. Pentru astfel de situatii VBA suporta un anumit tip de matrice, numit dinamic (dinamic) matrice.
matrice dinamice sunt create de operatorul Dim, privat, public sau Static, în care lista de dimensiuni este omis, apoi setați dimensiunea lor folosind operatorul ReDim în timpul procedurii.
Declarația ReDim are următoarea sintaxă:
ReDim [Păstrare] varname (subscript) [Ca tip] [, varname (subscript) [Ca tip]],
în cazul în care cuvântul cheie opțional Păstrați cauzele VBA care stochează date într-o matrice existentă atunci când dimensiunea matrice este schimbat prin ReDim;
varname - numele unui tablou existent;
subscript - matrice de măsurare (subscript sintaxă pentru operatorul în operatorul ReDim același ca și pentru operatorul Dim);
tip - tipul sau orice VBA tip definit de utilizator.
Utilizați un separat În calitate de operator de tip pentru fiecare matrice pe care le definiți.
Dim Luna () Deoarece String - declară o matrice Luna dinamică;
ReDim Luna (1 la 30) - pentru a modifica dimensiunea unei matrice de 30 elemente;
ReDim Luna (31) - pentru a modifica dimensiunea elementului matrice 31;
ReDim Conserv Luna (1 la 31) - pentru a modifica dimensiunea elementului matrice 31, menținând în același timp conținutul;
Dim Tabel () Deoarece Integer - declară o matrice dinamică;
ReDim Tabelul (3, 15), - realizarea unui tablou bidimensional;
ReDim Tabelul (4, 20) - redimensioneaza matrice bidimensională;
ReDim Conserv Tabelul (4, 25) - Doar ultima schimbare a matrice;
Dim Mas ca Variant - declară o variabilă de tip Variant;
ReDim Mas (20) Integer - creează o serie de 20 de numere întregi în Variant.
Concluzii despre matrice Visual Basic:
Puteți modifica numai ultima dimensiune a unei matrice multidimensionale, atunci când cuvântul cheie este utilizat Conserv;
Puteți utiliza ReDim pentru a crea o matrice tastat într-o variabilă de tip Variant.
Matricea în program poate fi determinată, de asemenea element cu element. De exemplu, următorul cod:
Dim B (l la 2 1 la 2) ca unică
Se creează un tabel bidimensional creează un tabel bidimensional
Atunci când se lucrează cu matrice, este util să se utilizeze următoarele funcții și proceduri.
Call: Array (ArgumentList)
Se creează o serie de tip Variant. Argumentul din paranteze reprezintă o listă separată prin virgulă valorilor atribuite elementelor de matrice.
Dim Ziua Ca Varianta
Ziua = Array ( 'mo', 'tu', 'cp', ...)
VBA are două funcții care monitorizează superioare și inferioare indicilor limită de matrice, - funcția Lbound și Ubound. Aceste funcții reveni la valorile limită superioară și inferioară ale indicilor de matrice statice sau dinamice.
Lbound (arrayName [dimensiune])
Ubound (arrayName [dimensiune])
unde ArrayName - numele unei variabile array;
Dimensiunea - un număr întreg care indică dimensiunea de matrice, inferior sau limita superioară acestei funcții revine. ar trebui să indice pentru prima dimensiune 1, pentru al doilea - 2, etc. În cazul în care dimensiunea argumentul este omis, valoarea implicită a 1.
Ștergeți operatorul (curățarea sau eliminarea matrice).
Erase operatorul permite unul din cele două lucruri, în funcție de modul în care utilizatorul manipuleaza o matrice - static sau dinamic. În cazul tablourilor statice Erase vă permite să curățați toate elementele de matrice, resetarea practic matrice în aceeași stare, pe care a avut-o când VBA creat în memorie. În cazul tablourilor dinamice Erase permite pentru a elimina complet matrice și conținutul RAM.
VBA șterge din matrice de memorie sunt declarate la nivel local în cadrul procedurii (precum și orice alte variabile locale), de fiecare dată când se efectuează procedura se termină. Cu toate acestea, matrice, declarate la nivel de modul, există, ca orice procedură în acest modul este executat. În cazul în care un program de mare, aveți posibilitatea să restabiliți resursele de memorie utilizate de matrice dinamice de nivel modulare. Erase permite operatorului să facă doar asta.
Erase matrice1 [, matrice2, ...]
Aici, matrice 1 și 2 sunt matrice orice nume matrice VBA valid.
Ș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ă. Când încercați să accesați elementele unei matrice dinamice, care a fost utilizat pentru operatorul șterge, fără a suprascrie o, VBA afișează un mesaj de eroare.
Zero bazate pe matrice sunt frecvent utilizate în VBA. Sistemul de numerotare pentru indice bazat zero a primului element în orice dimensiune de matrice este egal cu 0; o matrice cu elemente 10 are indici de la 0 la 9.
Ar fi mult mai ușor în cazul în care elementele de matrice sunt numerotate începând cu 1, nu cu 0. VBA vă permite să specificați numărul inițial al elementelor de matrice folosind opțiunea directivei compilator de bază pentru a specifica dacă numerotarea indicilor încep de la 0 sau 1.
Directiva compilator Opțiunea de bază are următoarea sintaxă:
Opțiunea de bază 0 | 1
Opțiunea de bază 0 „setare implicită la zero
Opțiunea de bază 1 „Indicii de matrice începe cu 1
Crearea unui program, organizarea de matrice tridimensională. Primul element două matrice de elemente definite în program. O a treia matrice organizate prin însumarea matricele respective ale membrilor B și C.
Rezultatele organizației seturi de ieșire în etichetele corespunzătoare de pe formularul după ce faceți clic pe butonul matrice.
Private Sub CommandButton1_Click ()
Dim B (1 la 2 1 la 2) Ca Integer
c Dim (1 la 2 1 la 2) Ca Integer
Dim A (1 la 2 1 la 2) Ca Integer
Label3.Caption = «a (1.1) =» A (1, 1) «A (1,2) =» A (1, 2) «A (2.1) =» A (2, 1) «A (2.2) =» A (2, 2)
Label6.Caption = «k (1.1) =» k (1, 1) «K (1.2) =» k (1, 2) «K (2.1) =» k (2, 1) «K (2.2) =» k (2, 2)
Pentru a crea o matrice, trebuie să specificați: numele, numărul de elemente (dimensiunea array), tipul de date care vor fi stocate în matrice.
Matricele sunt create cu declarația Dim:
Dim ArrayName (Dimensiune) Ca DataType
Dacă în loc de cuvântul de tip cuvântul Dim public, acesta va crea o zonă de matrice, care va apărea întregul program.
Exemplu: Dim MoyMassiv (3) Ca Integer
Se creează un tablou numit MoyMassiv format din patru elemente și este capabil să stocheze o valoare de tip Integer.
Deoarece numărătoarea începe cu elementele numărului de zero, numărul 3 este plasat.
O altă versiune a cesiunii matrice: specificați primele și ultimele numere ale elementelor de matrice:
Dim MoyMassiv (1 Ce 3) Ca Integer
Elemente pentru a crea o matrice nu conține date. Pentru a salva într-o matrice de orice valoare, trebuie să specificați care elementul urmează să fie atribuit. Să presupunem că creați o matrice care poate conține până la cinci linii:
Dim Angajat (4) Ca String
Dacă doriți primul element al matrice pentru a atribui o valoare de Ivan Nikitin, este necesar să se prescrie următorul cod:
În cele mai multe programe, atunci când se creează o matrice odată ce acesta este inițializat prin setarea fiecărui element al valorii zero sau un șir gol. Acest lucru se poate face cu ajutorul unui ciclu pentru următorul, de exemplu:
Dim Officer (4) Ca String
Dim I Ca Integer
angajat (I) = InputBox ( "vvedite IMIA")
MsgBox angajat (I)
Valorile elementelor matrice pot fi atribuite unei alte variabile, de exemplu:
Dim Officer (4) Ca String
Dim ca șir de vacanta
Prima linie creează o serie de angajat, care este format din cinci valori de text;
A doua linie creează o variabilă de text numit de vacanță;
a treia linie la al patrulea element al șirului (care corespunde cu al treilea număr de secvență) este setat Ivan Nikitin;
în al patrulea rând de variabila atribuită la valoarea angajatului element de matrice de vacanță, ceea ce corespunde cu al treilea număr.
De obicei, elementele de matrice cuprind valori referitoare la un tip de date, de exemplu, doar rânduri sau numai numere întregi. În cazul în care este necesar ca matrice conținea diferite tipuri de date atunci când creați matrice, specificați tipul de date Object:
Dim MoyMassiv ca obiect
Elementele matricei pot conține valori de diferite tipuri:
matrice bidimensionale în VBA
Procedura de creare a unei matrice bidimensională este aceeași cu cea a unidimensional, cu singura diferență fiind că, indicând dimensiunea sa, trebuie să specificați două valori - rânduri și coloane:
Dim DvuhMMassiv (rânduri, coloane) Ca Tip de date
Dimensiunea de matrice tridimensională va fi determinată de trei numere, și așa mai departe:
Dim TrehMMassiv (X, Y, Z) Ca DataType
Umple o serie de formule aleatoare:
Dim a (1 la 22) Integer
a (i) = -5 + Fix (Rnd * (37 - (-5) + 1))