Matriz de declaración de VBA

Matriz de declaración de Excel VBA

La declaración de matriz en VBA es muy similar a la de variables, se realiza mediante la misma declaración dim o declaración estática pública o privada, la única diferencia entre declarar una matriz y declarar una variable es que al declarar una matriz tenemos que proporcionar un tamaño de una matriz que es el límite superior de la matriz y el límite inferior de la matriz.

En el código VBA, podemos declarar una única matriz de variables que puede contener el número de variables en lugar de declarar variables individuales. Esto puede ayudar a reducir la cantidad de líneas en el código.

La matriz es un tipo de variable que puede contener más de un valor, a diferencia de las variables regulares que solo pueden contener un valor a la vez. La matriz es una versión avanzada de la declaración de variables en VBA. Por ejemplo, imagine una situación en la que desea asignar 5 nombres de estudiantes a las variables y, en la práctica general, declaramos cinco variables para las cinco variables que asignamos a los estudiantes individuales, una por una, a continuación se muestra el código de ejemplo de las mismas.

Código:

 Sub Array_Example () Dim Student1 como cadena Dim Student2 como cadena Dim Student3 como cadena Dim Student4 como cadena Dim Student5 como cadena End Sub 

En lugar de declarar tantas variables, ¿qué tal la idea de declarar una única matriz de variables que puede contener todos los nombres de los estudiantes?

Sí, esto es posible declarando la matriz en VBA.

Ejemplos

Puede descargar esta plantilla de Excel de matriz de declaración de VBA aquí - Plantilla de Excel de matriz de declaración de VBA

Ejemplo 1

Para declarar, no necesitamos hacer ninguna codificación VBA especial, sino que debemos seguir conceptos simples.

Primero, inicie el subprocedimiento.

Código:

 Sub Array_Example () End Sub 

Ahora, como de costumbre, declare una variable como una cadena.

Código:

 Sub Array_Example () Dim Student As String End Sub 

Una vez que se declara la variable, asegúrese de cuántos valores debe contener. En este caso, quiero almacenar los nombres de cinco estudiantes, por lo que ahora necesitamos fijar el tamaño de la matriz, es decir, de 1 a 5. Proporcione lo mismo a la variable entre paréntesis.

Código:

 Sub Array_Example () Dim Student (1 a 5) As String End Sub 

Ahora, para esta única variable, podemos almacenar 5 nombres de estudiantes.

Código:

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

Mira cuántas líneas hemos reducido al declarar la variable como una matriz. Esta es una forma de hacerlo, aún podemos acortar este código encerrándolo dentro de los bucles en VBA.

Ahora, por ejemplo, los mismos cinco nombres que tengo en las celdas de la hoja de trabajo.

Ahora quiero mostrar estos números en el cuadro de mensaje en VBA, de acuerdo, declaremos una variable más para bucles como tipo de datos Integer.

Código:

 Sub Array_Example () Dim Student (1 a 5) como cadena Dim K como entero End Sub 

Como de costumbre, he conservado la variable de matriz con un tamaño de 1 a 5.

Ahora abra el bucle FOR NEXT en VBA y, dado que tenemos cinco nombres, ingrese el límite de 1 a 5.

Código:

 Sub Array_Example () Dim Student (1 a 5) Como cadena Dim K Como entero para K = 1 a 5 Siguiente K End Sub 

Para asignar valores a la variable de matriz no es necesario seguir la forma anterior de mostrar al Estudiante (1), Estudiante (2) de esta manera para los bucles de suministro de la posición de los números la variable “k”.

Código:

 Sub Array_Example () Dim Student (1 a 5) Como cadena Dim K Como entero para K = 1 a 5 Student (K) = Siguiente K End Sub 

Para esta variable de matriz, necesitamos los valores de la hoja de trabajo, por lo que al usar la propiedad CELLS, obtenga los valores de la hoja de trabajo.

Código:

 Sub Array_Example () Dim Student (1 to 5) As String Dim K As Integer For K = 1 To 5 Student (K) = Cells (K, 1) .Value Next K End Sub 

Ahora, a través del cuadro de mensaje, muestre el valor de la variable de matriz.

Código:

 Sub Array_Example () Dim Student (1 to 5) As String Dim K As Integer For K = 1 To 5 Student (K) = Cells (K, 1) .Value MsgBox Student (K) Next K End Sub 

Ahora ejecute el código, en el cuadro de mensaje, veremos el nombre. Vuelva a presionar Ok para ver el segundo nombre. Así, presionando Ok, podemos ver los cinco nombres.

Ejemplo n. ° 2: matrices bidimensionales

Hemos visto anteriormente cómo funciona la matriz, ahora veremos las matrices dimensionales. Las matrices bidimensionales se concentran tanto en filas como en columnas.

En el ejemplo anterior, hemos determinado el tamaño de la matriz de 1 a 5, esto se concentra en filas o columnas.

Al utilizar matrices bidimensionales, podemos concentrarnos tanto en filas como en columnas. Para esto, necesitamos encerrar dos bucles.

Primero, defina la variable y luego, más tarde, decidiremos el tamaño de la matriz.

Código:

 Sub Two_Array_Example () Dim Student As String End Sub 

Primero, decida el tamaño de la fila y luego decida la longitud de la columna.

Código:

 Sub Two_Array_Example () Dim Student (1 a 5, 1 a 3) As String End Sub 

For this, I have structured the data for student name, marks and grade status.

Now come back to the coding window.

Declare two more variables for a loop.

Code:

 Sub Two_Array_Example() Dim Student(1 To 5, 1 To 3) As String Dim K As Integer , J As Integer End Sub 

Now enclose the loop as shown below.

Code:

 Sub Two_Array_Example() Dim Student(1 To 5, 1 To 3) As String Dim k As Integer , J As Integer For k = 1 To 5 For J = 1 To 3 Worksheets("Student List").Select Student(k, J) = Cells(k, J).Value Worksheets("Copy Sheet").Select Cells(k, J).Value = Student(k, J) Next J Next k End Sub 

What this will do is it will copy the data from the “Student List” sheet and paste in “Copy Sheet”.

Things to Remember

  • The array is a vast concept, this is just an introductory part.
  • You need advanced coding skills to understand the array declaration.
  • The more you use arrays in your code the more you will get used to it.