image

Una colección es un tipo de datos que contiene objetos de almacenamiento como matrices (pero diferentes). Al escribir códigos básicos de VBA, debe haber utilizado libros de trabajo, hojas de trabajo, rangos, etc. Todos son colecciones. En este artículo, aprenderemos sobre las colecciones de VBA.

¿Qué es una colección en VBA?

Una colección es un tipo de datos que almacena tipos similares de objetos como matrices. Pero a diferencia de las matrices, su tamaño se puede aumentar o disminuir dinámicamente según los requisitos.

Puede agregar, buscar, recuperar y eliminar elementos de las colecciones.

A diferencia de las matrices, no puede cambiar los valores de los elementos de las colecciones. Si lo desea, use matrices como elemento en la colección.

Una colección tiene 4 propiedades o métodos asociados.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

A través de este artículo, exploraremos el uso de estas propiedades.

¿Cómo crear una colección en VBA?

Una colección es un objeto, por lo que es necesario declararlo e inicializarlo. Como cualquier otro objeto en VBA, existen dos métodos para crear una colección en VBA.

1. Creación instantánea

Dim items as new Collection

En el método anterior, el objeto se crea instantáneamente. Puede comenzar a utilizar esta colección para sus necesidades de inmediato.

image

2. Creación retrasada

Dim items as Collection

Set items = New Collection

En este método, primero creamos una referencia de colección y, cuando es necesario, inicializamos con un objeto de colección. Con este método, puede optar por crear la colección según algunos criterios.

image

Agregar elementos a una colección (Collection.Add)

Usamos el método Add para agregar nuevos elementos a una colección.

items.Add "Apples"

El código anterior agregará la cadena «Manzanas» en la colección.

items.Add 1.4

El código anterior agregará el doble 1.4 al final de la colección.

image

También podemos definir claves para estos elementos. Estas claves se pueden utilizar para acceder a los elementos de la colección.

image

Insertar elementos en la colección antes o después de un elemento existente

El método Add agrega nuevos elementos al final de la colección. El método de adición tiene cuatro parámetros.

Add(item,[Key],[Before],[After])

El primer argumento es necesario. Es el objeto o que desea agregar a la colección. Los argumentos de descanso son opcionales. Veremos los usos de estos argumentos en esta sección.

Si queremos agregar algún elemento antes o después de algún índice / clave en particular, usamos los parámetros Antes y Después del método Agregar.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

Ambas líneas insertarán un valor booleano antes de la clave «cnst» en los elementos de la colección VBA.

Para insertar un elemento después de un índice / elemento / clave en particular, usamos el parámetro After del método Add.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

Sobre la línea se insertará «Mango» con la tecla «m» después de la tecla «b».

image

Nota: * Las claves de los elementos deben ser únicas. No se aceptará ninguna clave que ya exista en la colección. VBA devolverá un error de que «la clave ya está asociada con un elemento de esta colección».

image

Podemos usar esto para nuestra ventaja para obtener una lista única de la colección.

Acceder a elementos de la colección (Collection.Item)

Hay dos métodos para acceder a los elementos de una colección. . CollectionName («índice / clave»)

  1. CollectionName.Item («índice / clave»)

Por ejemplo, para acceder a un miembro en los elementos de una colección * en el índice 1 y la clave «apl», puedo usar cualquiera de los siguientes códigos VBA.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

¿Cómo contar los elementos de una colección? (Recaudación.Cuenta)

Para obtener el número total de objetos o elementos en una colección, usamos la función .Count de colección. El método .Count devuelve el número total de elementos de la colección.

items.Count

La línea de arriba dará el recuento de objetos que tiene la colección.

¿Cómo acceder a todos los elementos de una colección?

La única forma de acceder a todos los elementos de la colección en VBA son los bucles.

Repasamos cada elemento de la colección para acceder a ellos. Para eso usamos for loop. El bucle for-each se considera la forma más rápida y limpia de acceder a los objetos de la colección.

Recorriendo una colección en VBA

Hay varias formas de recorrer la colección en VBA. Usaremos más elegante para cada ciclo para iterar a través de la colección.

Demasiado recorrer cada elemento de una colección, solo use esta línea de código VBA.

For Each itm In items

Debug.Print itm

Next itm

image

Eliminando elementos de una colección (Collection.Remove)

Para eliminar un elemento de una colección de vba, podemos usar el método Eliminar. El método remove toma un argumento. Puede ser el índice o la clave del artículo (si está disponible).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

Eliminando la colección en VBA

Bueno, no puedes eliminar una colección en vba. Sin embargo, puede eliminar todos los elementos de esa colección configurándola nuevamente como una nueva colección.

Set items = New Collection

Esta línea de código creará una nueva colección en la dirección de los artículos.

Por lo tanto, nuestra colección se vaciará.

image

Matriz vs Colección en VBA

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

Así que sí, chicos, esto es lo básico de las colecciones. Hay muchos beneficios y usos de la colección VBA en herramientas de oficina. Los exploraremos juntos. Hasta entonces, si tiene alguna consulta sobre la colección o cualquier cosa relacionada con Excel / VBA, escríbala en la sección de comentarios a continuación.