How to Quickly Master Collection in VBA in 3 Minutes (Excel)

Written by Kasper Langmann

Mastering collections in VBA (Visual Basic for Applications) can significantly enhance your Excel programming skills. Collections are a crucial part of VBA, allowing you to group and manage related items in your code. This guide will provide you with a quick and comprehensive understanding of collections in VBA, enabling you to leverage their power in your Excel projects.

Understanding Collections in VBA

A collection in VBA is an object that contains a set of related objects – an ordered group that allows you to manage and manipulate its elements. Collections are versatile and can hold any data type, making them incredibly useful in programming.

There are two types of collections in VBA: built-in collections and custom collections. Built-in collections are predefined in VBA, such as the Workbooks, Worksheets, and Range objects. On the other hand, custom collections are user-defined and can be created to suit specific needs.

Benefits of Using Collections

Collections offer several advantages in VBA programming. They allow for easy access and manipulation of grouped items, which can simplify your code and improve its readability. Collections also provide a flexible way to manage data, as you can add, remove, or change elements dynamically during runtime.

Moreover, collections can enhance the performance of your VBA code. By grouping related items, you can reduce the number of variables and streamline your code, leading to faster execution and less memory usage.

Creating a Collection in VBA

Creating a collection in VBA involves several steps. First, you need to declare a new collection object. Then, you can add items to the collection using the Add method. You can also remove items using the Remove method, and access items using the Item method or simply by their index number.

Let’s walk through the process of creating a simple collection in VBA.

Declaring a Collection

To declare a collection, you use the Dim statement followed by the name of the collection and the Collection keyword. For example:

Dim myCollection As New Collection

This line of code creates a new collection object named myCollection. You can use any name you like for your collection, as long as it follows VBA naming rules.

Adding Items to a Collection

Once you have declared a collection, you can add items to it using the Add method. The syntax is as follows:

Collection.Add Item, Key

The Item argument is the object you want to add to the collection, and the Key argument is a unique identifier for the item. The Key argument is optional, but it can be useful for accessing specific items in the collection.

Removing Items from a Collection

To remove an item from a collection, you use the Remove method. The syntax is as follows:

Collection.Remove Index

The Index argument is the position of the item you want to remove in the collection. Note that the collection’s index is 1-based, meaning the first item is at position 1, not 0.

Accessing Items in a Collection

You can access items in a collection by their index number or their key. To access an item by its index, you use the following syntax:


To access an item by its key, you use the following syntax:


Working with Collections in VBA

Now that you know how to create a collection and manipulate its items, let’s explore some practical examples of working with collections in VBA.

Looping Through a Collection

One common task in VBA programming is looping through a collection to perform actions on each item. You can use a For Each…Next loop to iterate over all items in a collection. Here’s an example:

Dim item As Variant
For Each item In myCollection
    Debug.Print item
Next item

This code will print the value of each item in the myCollection collection to the Immediate window.

Checking if an Item Exists in a Collection

Another useful task is checking if a specific item exists in a collection. This can be done using the On Error Resume Next statement and the Is Nothing operator. Here’s an example:

Dim item As Variant
On Error Resume Next
Set item = myCollection("myKey")
If item Is Nothing Then
    Debug.Print "Item does not exist"
    Debug.Print "Item exists"
End If

This code checks if an item with the key “myKey” exists in the myCollection collection. If the item does not exist, the code prints “Item does not exist” to the Immediate window. If the item does exist, the code prints “Item exists”.


Collections in VBA are a powerful tool for managing and manipulating grouped items in your Excel projects. By understanding how to create and work with collections, you can write more efficient and readable code. Remember, practice is key when learning a new programming concept, so don’t hesitate to experiment with collections in your VBA projects.

Whether you’re a seasoned VBA programmer or a beginner, mastering collections will undoubtedly enhance your Excel programming skills. So start creating, adding, removing, and accessing items in collections, and see the difference it makes in your VBA code!