VBA Declare Array | Com es poden declarar matrius a VBA?

Excel VBA Declare Array

Declaració de matriu a VBA és molt similar a la de les variables que es fa mitjançant la mateixa declaració dim o declaració estàtica pública o privada, l’única diferència en declarar una matriu i declarar una variable és que mentre declarem una matriu hem de proporcionar una mida d’una matriu que sigui límit superior de la matriu i el límit inferior de la matriu.

A VBA Code, podem declarar una única matriu de variables que pot contenir el nombre de variables en lloc de declarar variables individuals. Això pot ajudar a reduir el nombre de línies del codi.

La matriu és un tipus de variable que pot contenir més d’un valor, a diferència de les variables normals que només poden contenir un valor a la vegada. La matriu és una versió avançada de declarar variables a VBA. Per exemple, imagineu-vos una situació en què vulgueu assignar noms de 5 estudiants a variables i, en la pràctica general, declarem cinc variables per a totes les cinc variables que assignem noms d’estudiants individuals una per una, a continuació es mostra el codi d’exemple de la mateixa.

Codi:

 Sub Array_Example () Dim Student 1 Com cadena Dim Student 2 Com cadena Dim Student 3 Com cadena Dim Student 4 Com Cadena Dim Student5 Com cadena End Sub 

En lloc de declarar tantes variables, què tal la idea de declarar una única matriu de variables que pugui contenir tots els noms dels estudiants.

Sí, això és possible declarant la matriu a VBA.

Exemples

Podeu descarregar aquesta plantilla Excel de matriu VBA Declare aquí - Plantilla Excel de matriu VBA Declare Array

Exemple 1

Per declarar que no hem de fer cap codificació VBA especial, hem de seguir conceptes senzills.

En primer lloc, inicieu el subprocés.

Codi:

 Sub Matriu_Exemple () Final Sub 

Ara, com és habitual, declareu una variable com una cadena.

Codi:

 Sub Matriu_Exemple () Atenua l'estudiant com a final de cadena Sub 

Un cop declarada la variable, assegureu-vos quants valors hauria de contenir. En aquest cas, vull emmagatzemar els noms de cinc estudiants, de manera que ara hem de corregir la mida de la matriu, és a dir, de l’1 al 5. Proporcioneu el mateix a la variable entre claudàtors.

Codi:

 Sub Matriu_Exemple () Atenuar estudiant (1 a 5) com a final de cadena Sub 

Ara, per a aquesta única variable, podem emmagatzemar 5 noms d’estudiants.

Codi:

 Sub Array_Example () Dim Student (1 a 5) As String Student (1) = "John" Student (2) = "Peter" Student (3) = "Ricky" Student (4) = "Michael" Student (5) = Subtítol final "Anderson" 

Mireu quantes línies hem reduït declarant la variable com a matriu. Aquesta és una manera de fer-ho, encara podem escurçar aquest codi tancant-lo dins dels bucles de VBA.

Ara, per exemple, els mateixos cinc noms que tinc a les cel·les del full de treball

Ara vull mostrar aquests números al quadre de missatges de VBA. D’acord, declarem una variable més per a bucles com a tipus de dades enter.

Codi:

 Sub Array_Example () Dim Student (1 a 5) Com a cadena Dim K Com Integer End Sub 

Com és habitual, he conservat la variable array com a mida 1 a 5.

Ara obriu el bucle FOR NEXT a VBA i, com que tenim cinc noms, introduïu el límit com a 1 a 5.

Codi:

 Sub Matriu_Exemple () Dim Estudiant (1 a 5) Com a cadena Dim K Com enter per a K = 1 a 5 Següent K Final Sub 

Per assignar valors a la variable matriu no hem de seguir la forma anterior de mostrar Student (1), Student (2) així per a la variable de bucles de subministrament de posició de nombres "k".

Codi:

 Sub Matriu_Exemple () Dim alumne (1 a 5) Com a cadena Dim K com enter per a K = 1 a 5 estudiant (K) = Següent K Final sub 

Per a aquesta variable de matriu necessitem els valors del full de treball, de manera que mitjançant la propietat CELLS obteniu els valors del full de treball.

Codi:

 Sub Array_Example () Dim Student (1 a 5) Com a cadena Dim K Com enter per K = 1 To 5 Student (K) = Cells (K, 1). Valor Next K End Sub 

Ara a través del quadre de missatge, mostreu el valor de la variable de matriu.

Codi:

 Sub Array_Example () Dim Student (1 a 5) Com a cadena Dim K Com enter per K = 1 To 5 Student (K) = Cells (K, 1). Valor MsgBox Student (K) Next K End Sub 

Ara executeu el codi, al quadre de missatges, veurem el primer nom. Torneu a prémer Ok per veure el segon nom. Prement D'acord, podem veure els cinc noms.

Exemple 2: matrius bidimensionals

Hem vist més amunt com funciona la matriu, ara veurem matrius dimensionals. Les matrius bidimensionals es concentren en files i columnes.

A l'exemple anterior, hem determinat la mida de la matriu d'1 a 5, ja que es concentra en files o columnes.

Mitjançant l’ús de matrius bidimensionals ens podem concentrar en files i columnes. Per a això, hem de tancar dos bucles.

Primer, definiu la variable i després decidirem sobre la mida de la matriu.

Codi:

 Sub Two_Array_Example () Atenua l'estudiant com a final de cadena Sub 

Primer, decidiu la mida de la fila i, a continuació, decidiu la longitud de la columna.

Codi:

 Sub Two_Array_Example () Dim Student (1 a 5, 1 a 3) com a final de cadena Sub 

Per a això, he estructurat les dades per al nom, les notes i l’estat dels estudiants.

Ara torneu a la finestra de codificació.

Declareu dues variables més per a un bucle.

Codi:

 Sub Two_Array_Example () Dim Student (1 a 5, 1 a 3) Com a cadena Dim K com a enter, J Com a enter End Sub 

Ara tanqueu el bucle com es mostra a continuació.

Codi:

 Sub Two_Array_Example () Dim alumne (1 a 5, 1 a 3) Com a cadena Dim k com a enter, J Com a enter per a k = 1 a 5 Per a J = 1 a 3 fulls de treball ("Llista d'estudiants"). Seleccioneu Student (k, J) = Cèl·lules (k, J). Fulls de càlcul de valor ("Copiar full"). Seleccioneu Cèl·lules (k, J). Valor = Estudiant (k, J) Següent J Següent Fin final Sub 

El que farà és copiar les dades del full "Llista d'estudiants" i enganxar-les a "Copiar full".

Coses que cal recordar

  • La matriu és un concepte ampli, només és una part introductòria.
  • Necessiteu habilitats de codificació avançades per entendre la declaració de matriu.
  • Com més feu servir matrius al vostre codi, us hi acostumareu.