Colección VBA

Objeto de colección de Excel VBA

En la codificación VBA, además de la colección existente de elementos en un grupo, también podemos crear nuestros propios grupos de colección. En nuestros muchos artículos, hemos hablado sobre las variables de objeto y en este tutorial, analizaremos el objeto de colección VBA en detalle.

Si ha leído nuestro artículo anterior "Arreglos VBA", esto le resultará mucho más fácil de entender. Las matrices se usan para agrupar variables bajo un mismo techo, de manera similar, Colección también se usa para almacenar un grupo de variables.

Las colecciones se utilizan para almacenar objetos. Son mucho más flexibles que las matrices VBA, mientras que las matrices tienen un límite de tamaño fijo, pero las colecciones no tienen ningún límite de tamaño fijo en un momento dado e incluso no requieren un cambio de tamaño manual.

La colección VBA es muy similar al "Diccionario VBA", pero el diccionario requiere que se configure una referencia de objeto externo en la ventana de referencia de objeto. Con el diccionario VBA necesitamos establecer el tipo de referencia como “Microsoft Scripting Runtime” pero Collection no requiere ninguno de esos ajustes adicionales.

¿Cómo crear un objeto de colección en VBA?

Para comenzar con la colección, primero debemos declarar la variable como "Colección".

Puede descargar esta plantilla de Excel de la colección VBA aquí - Plantilla de Excel de la colección VBA

Código:

 Sub Collection_Example () Dim Col As Collection End Sub 

Dado que la colección es una variable de objeto, necesitamos establecer la referencia del objeto creando una nueva instancia.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = Nueva colección End Sub 

Ahora con la variable, podemos acceder a todos los métodos de la variable de colección “Col”.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = Nueva colección Col. End Sub 

Antes de hacer uso de estos métodos, debemos declarar una variable como una cadena.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = Nueva colección Dim ColResult As String End Sub 

Ahora use la variable "Col" elija el método "Agregar".

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = Nueva colección Col.Add End Sub 

Bajo el método Add, tenemos ciertos parámetros. Supongamos que estamos almacenando marcas de móviles con su precio de venta medio en el mercado.

En Item, el argumento ingresa el precio del móvil.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Añadir artículo: = 15000, End Sub 

A continuación, en Argumento clave, ingrese el nombre de la marca móvil.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Añadir artículo: = 15000, Clave: = "Redmi" End Sub 

Ahora, para la variable "ColResult", almacenaremos el resultado de la variable de objeto "Col".

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = Nueva colección Col.Agregar artículo: = 15000, Clave: = "Redmi" ColResult = Col (End Sub 

Cuando abre el paréntesis de la variable "Col", podemos ver el argumento como Índice para este argumento, necesitamos proporcionar el valor del argumento clave del método de adición de Colección, es decir, el nombre de la marca móvil.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") End Sub 

Ahora muestre el resultado en el cuadro de mensaje en VBA.

Código:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") MsgBox ColResult End Sub 

Ok, terminamos cuando ejecutamos el código deberíamos ver el precio de la marca móvil “Redmi”.

Mejor comprensión de los parámetros clave y de los elementos

Estoy seguro de que no es fácil comprender los parámetros del objeto Collection. Déjame explicarte con un ejemplo sencillo.

Imagina que tienes un menú de frutas con su nombre y precio de las frutas. Suponga que está buscando el precio de la fruta "Apple" por el nombre de la fruta.

Para buscar el precio de la fruta, debemos mencionar el nombre de la fruta, es decir, en el idioma de VBA de la colección. El nombre de la fruta es clave y el precio de la fruta es “Artículo”.

Es como aplicar la función BUSCARV o BUSCARH, según el valor de búsqueda, obtendremos los datos requeridos de la base de datos. Aquí el valor de búsqueda es Key y el resultado es Item.

Ejemplo avanzado

Imagine que es el gerente de una tienda en una de las tiendas minoristas y es responsable de administrar las consultas de los clientes. Una de esas consultas de los clientes es una consulta sobre el precio del producto.

Debe permitir que el cliente busque el precio del producto con información completa. Del mismo modo, debe mostrar el mensaje en caso de que no se encuentren datos. A continuación se muestra el código de ejemplo que presentará el cuadro de entrada frente al usuario y requiere ingresar el nombre del producto que está buscando, si el producto está en la colección, mostrará el precio del producto mencionado o de lo contrario lo hará muestre el mensaje como "El producto que está buscando no existe".

Código:

 Sub Collection_Example2() Dim ItemsCol As Collection Dim ColResult As String Set ItemsCol = New Collection ItemsCol.Add Key:="Apple", Item:=150 ItemsCol.Add Key:="Orange", Item:=75 ItemsCol.Add Key:="Water Melon", Item:=45 ItemsCol.Add Key:="Mush Millan", Item:=85 ItemsCol.Add Key:="Mango", Item:=65 ColResult = Application.InputBox(Prompt:="Please Enter the Fruit Name") If ItemsCol(ColResult)  "" Then MsgBox "The Price of the Fruit " & ColResult & " is : " & ItemsCol(ColResult) Else MsgBox "Price of the Fruit You are Looking for Doesn't Exists in the Collection" End If End Sub