matrice statice și dinamice în VBA

Ce este o matrice?

O matrice este un set de elemente de același tip. care au un nume comun. O referire la aceste elemente are loc în indexul lor. Pur și simplu pune, este o mulțime de variabile colectate în același grup pentru un anumit tip. Pentru o înțelegere mai clară a Să luăm, de exemplu, margele perla, unul negru, celălalt alb. Deci, margele de perle albe și negre sunt matrice grupate după culoare, alb-negru, și perle sunt elementele acestor matrice.
Matricile sunt unidimensională (liniare), perle de mai sus și multi-dimensional aceeași - bidimensional (matrice, 2D), tridimensională, etc. Static - numărul de elemente din matrice este declarată în etapa de proiectare și nu se modifică în timpul rulării, și dinamic - numărul de elemente și dimensiunea variază în timpul funcționării programului.

O matrice în VB este declarată ca variabilă normală, după cuvântul cheie Dim sau public, cu singura diferență fiind că, după numele variabilei (înainte de cuvântul cheie „ca“) ar trebui să fie între paranteze.
Dim Mas () ca întreg

matrice statice sunt declarate cu indicarea limitelor superioare și inferioare:
Dim Mas (2 până la 50) ca întreg

Declararea unei matrice și puteți specifica doar numărul de elemente:
Dim Mas (50) ca întreg

În acest caz, limita inferioară este setată implicit la 0. Dacă doriți ca primul indice a fost de 1, atunci ai nevoie sa la începutul unui modul (înainte de prima sesiune) în toate matricele furnizați următoarele:
Opțiunea de bază 1

Gama dinamică - nu este un număr predeterminat de elemente și se determină fără frontiere în paranteze:
MyDynMas Dim () ca număr întreg

Dar matrice dinamic poate fi utilizat numai după determinarea limitelor programului, după cuvântul cheie ReDim:
MyDynMas Dim () ca număr întreg
„Unele cod sau limite de calcul
i = 4
Redim MyDynMas (i)

după numărul de imperative matrice, toate elementele sunt setate la zero. Pentru a păstra valorile elementelor de matrice, după ReDim este necesară pentru a adăuga cuvântul cheie Păstrare:

Este de asemenea posibil pentru a trece peste dimensiunea de matrice, cum ar fi unidimensionale la două-trei dimensiuni:
MyDynMas Dim () ca număr întreg
„Unele cod sau limite de calcul
i = 4
Redim MyDynMas (i)

dar rețineți că, atunci când trece peste dimensiunea de matrice, utilizați cuvântul cheie Păstrare pentru a păstra valorile elementelor - este imposibil!

Luați în considerare exemplele de lucru cu matrice statice și dinamice.

Exemplul 1:
matrice Dan-dimensional, cu trei elemente și matrice 3x4 (3 rânduri și 4 coloane). Este necesar să se multiplice fiecare element al matricei unidimensionale cu toate rândurile de elemente, și anume Primul element de înmulțiți toate elementele din primul rând al matricei, a 2-a rândul al doilea, etc. Rezultatele dintr-un afișaj matrice în mesaj.


„Umple o matrice
Mas (1) = 2: Mas (2) = 4: Mas (3) = 6

MATR (1, 1) = 4: MATR (1, 2) = 5: MATR (1, 3) = 1: MATR (1, 4) = 7
MATR (2, 1) = 12: MATR (2, 2) = 10: MATR (2, 3) = 2: MATR (2, 4) = 9
MATR (3, 1) = 24: MATR (3, 2) = 11: MATR (3, 3) = 6: MATR (3, 4) = 3

EXEMPLUL 2:
array dimensional nu este cunoscut lungime completat după cum urmează Mas (i, j) = i * j. dimensiunile matrice sunt introduse de către utilizator prin intermediul formularului InputCasuta. Rezultatul de ieșire a mesajului.

DynMasTest Sub ()
Dim Msg ca șir
Dim i, j, col, rândul Ca Integer
Dim DynMas () atâta timp

Msg = "Rezultat" Chr (13)

col = InputBox ( „Introduceți numărul de coloane din matrice,“ _
„Un exemplu de creare a unei matrice dinamic“, 2)
rând = InputBox ( „Introduceți numărul de o matrice de siruri“ _
„Un exemplu de creare a unei matrice dinamic“, 2)

ReDim Păstrare DynMas (col, rând)

Pentru i = 1 Pentru col
Pentru j = 1 La rândul
DynMas (i, j) = i * j
Msg = Msg CSTR (DynMas (i, j)) Chr (9)
Următoarea j
Msg = Msg Chr (13)
Următoarea I
MsgBox Msg
end Sub

Și, în sfârșit, în scopul de a învăța (a obține) lungimea de matrice, utilizați UBound funcția (). Tip de înregistrare UBound (Mas) returnează numărul de matrice unidimensională a elementelor. Dacă este necesar să se cunoască lungimea unei matrice multidimensională, funcția ia forma UBound (MATR, 2) - returnează numărul de elemente ale doua măsurătoare, UBound (MATR, 3), - al treilea, etc. Înregistrarea aceeași UBound (MATR, 1) este UBound echivalent (Mas).

GetLengthMas Sub ()
Dim MATR (3, 4, 5) Ca Integer

MsgBox "size array" UBound (MATR, 1) "X" UBound (MATR, 2) "X" UBound (MATR, 3) _
Chr (13) „Numărul total de elemente“ UBound (MATR, 1) * UBound (MATR, 2) * UBound (MATR, 3)
end Sub