VBA Declare Array - Cum să declarați matrici în VBA?

Excel VBA Declare Array

Declarația matricei în VBA este foarte asemănătoare cu cea a variabilelor se face prin aceeași declarație dim sau declarație statică publică sau privată, singura diferență în declararea unui tablou și declararea unei variabile este că, în timp ce declarăm un tablou, trebuie să furnizăm o dimensiune a unei matrice care este limita superioară a matricei și limita inferioară a matricei.

În Codul VBA, putem declara o singură matrice de variabile care poate conține numărul de variabile în loc să declare variabile simple. Acest lucru poate ajuta la reducerea numărului de linii din cod.

Matricea este un fel de variabilă care poate conține mai multe valori, spre deosebire de variabilele obișnuite care pot deține o singură valoare la un moment dat. Matricea este o versiune avansată de declarare a variabilelor în VBA. De exemplu, imaginați-vă o situație în care doriți să atribuiți 5 nume de elevi variabilelor și, în practică generală, declarăm cinci variabile pentru toate cele cinci variabile pe care le atribuim nume individuale de elevi unul câte unul; mai jos este exemplul de cod al aceluiași.

Cod:

Sub Array_Example () Dim Student1 As String Dim Student2 As String Dim Student3 As String Dim Student4 As String Dim Student5 As String End Sub

În loc să declare atât de multe variabile, ce zici de ideea de a declara o singură matrice de variabile care poate conține toate numele studenților.

Da, acest lucru este posibil declarând matricea în VBA.

Exemple

Exemplul nr. 1

Pentru a declara, nu trebuie să facem nicio codificare VBA specială. Mai degrabă, trebuie să urmăm concepte simple.

În primul rând, porniți subprocedura.

Cod:

Sub Array_Example () End Sub

Acum, ca de obicei, declarați o variabilă ca un șir.

Cod:

Sub Array_Example () Dim Student As String End Sub

Odată ce variabila este declarată, asigurați-vă acum câte valori ar trebui să dețină. În acest caz, vreau să stochez numele a cinci studenți, așa că acum trebuie să reparăm dimensiunea matricei, adică de la 1 la 5. Furnizați același lucru variabilei dintre paranteze.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca sfârșit de șir Sub

Acum, pentru această singură variabilă, putem stoca 5 nume de studenți.

Cod:

Sub Array_Example () Dim Student (1 To 5) As String Student (1) = "John" Student (2) = "Peter" Student (3) = "Ricky" Student (4) = "Michael" Student (5) = "Anderson" End Sub

Uită-te câte linii am redus declarând variabila ca o matrice. Acesta este un mod de a face. În continuare, putem scurta acest cod prin încadrarea acestuia în buclele din VBA.

Acum, pentru un exemplu, aceleași cinci nume pe care le am în celulele foii de lucru

Acum vreau să arăt aceste numere în caseta de mesaj din VBA; ok, să declarăm încă o variabilă pentru bucle ca tip de date Întreg.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca șir Dim K Ca Integer End Sub

Ca de obicei, am păstrat variabila matrice ca 1 până la 5 dimensiuni.

Acum deschideți bucla FOR NEXT în VBA și, deoarece avem cinci nume, introduceți limita de la 1 la 5.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca șir Dim K Ca întreg pentru K = 1 până la 5 Următorul K End Sub

Pentru a atribui valori variabilei matrice, nu trebuie să urmăm modul anterior de a arăta Student (1), Student (2) în felul acesta pentru variabila buclelor „k”.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca șir Dim K Ca întreg pentru K = 1 până la 5 Student (K) = Următorul K End Sub

Pentru această variabilă matrice, avem nevoie de valorile din foaia de lucru, astfel încât utilizarea proprietății CELLS obține valorile din foaia de lucru.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca șir Dim K Ca întreg pentru K = 1 până la 5 Student (K) = Celule (K, 1). Valoare Următorul K End Sub

Acum, prin caseta de mesaj, arată valoarea variabilei matrice.

Cod:

Sub Array_Example () Dim Student (1 până la 5) Ca șir Dim K Ca întreg pentru K = 1 până la 5 Student (K) = Celule (K, 1). Valoare MsgBox Student (K) Următorul K End Sub

Acum rulați codul. În caseta de mesaj, vom vedea prenumele. Apăsați din nou Ok pentru a vedea al doilea nume. Astfel, apăsând Ok, putem vedea toate cele cinci nume.

Exemplul # 2 - Matrice bidimensionale

Am văzut mai sus cum funcționează matricea, acum vom vedea matricile dimensionale. Matricile bidimensionale se concentrează atât pe rânduri, cât și pe coloane.

În exemplul de mai sus, am determinat dimensiunea tabloului de la 1 la 5; aceasta se concentrează fie pe rânduri, fie pe coloane.

Folosind tablouri bidimensionale, ne putem concentra atât pe rânduri, cât și pe coloane. Pentru aceasta, trebuie să închidem două bucle.

Mai întâi, definiți variabila, apoi târziu, vom decide despre dimensiunea matricei.

Cod:

Sub Two_Array_Example () Dim Student As String End Sub

Mai întâi, decideți dimensiunea rândului, apoi decideți lungimea coloanei.

Cod:

Sub Two_Array_Example () Dim Student (1 până la 5, 1 până la 3) Ca sfârșit de șir Sub

Pentru aceasta, am structurat datele pentru numele, notele și statutul elevilor.

Acum reveniți la fereastra de codare.

Declarați încă două variabile pentru o buclă.

Cod:

Sub Two_Array_Example () Dim Student (1 până la 5, 1 până la 3) Ca șir Dim K Ca întreg, J Ca întreg întreg Sub

Acum închideți bucla, așa cum se arată mai jos.

Cod:

Sub Two_Array_Example () Dim Student (1 până la 5, 1 până la 3) Ca șir Dim k Ca întreg, J Ca întreg pentru k = 1 până la 5 Pentru J = 1 până la 3 foi de lucru („Lista studenților”). Selectați Student (k, J) = Celule (k, J). Foaie de lucru cu valoare („Copiere foaie”). Selectați celule (k, J). Valoare = Student (k, J) Următorul J Următorul k Încheiere secundară

Ceea ce va face este că va copia datele din foaia „Lista studenților” și le va lipi în „Copiere foaie”.

Lucruri de amintit

  • Matricea este un concept vast; aceasta este doar o parte introductivă.
  • Aveți nevoie de abilități avansate de codificare pentru a înțelege declarația matricei.
  • Cu cât folosiți mai multe tablouri în cod, cu atât vă veți obișnui mai mult.

Articole interesante...