Skip to Content
Course content

6.2. Working with Collections and Arrays

In Access VBA, Collections and Arrays are essential tools used for storing and manipulating groups of data. While both allow you to manage multiple items, they differ in structure and functionality. Understanding how to use them effectively can enhance your ability to write efficient and organized code.

1. What Are Collections?

A Collection is a special data structure that allows you to store multiple related objects or values, and it offers a flexible way to access, add, and remove items. Collections are particularly useful when you want to handle objects or elements dynamically without worrying about their index or size.

Key Features of Collections:

  • Dynamic Size: Collections automatically resize when new items are added or removed.
  • Variety of Data Types: A collection can hold different types of data (objects, strings, numbers, etc.).
  • Key-Value Pair: Collections allow for indexed (or keyed) access to items, so you can retrieve an item by its key.

Creating and Using a Collection:

To create a collection, you must declare it as an object and then add items to it. You can iterate over a collection using loops like For Each.

Example: Creating and Using a Collection
Dim coll As Collection
Set coll = New Collection

' Adding items to the collection
coll.Add "Apple"
coll.Add "Banana"
coll.Add "Orange"

' Accessing items from the collection
MsgBox coll(1)  ' Displays "Apple"

' Iterating over the collection
Dim item As Variant
For Each item In coll
    MsgBox item
Next item

Key Methods of Collections:

  • Add: Adds an item to the collection.
  • Item: Retrieves an item from the collection (using either an index or key).
  • Remove: Removes an item from the collection.
  • Count: Returns the number of items in the collection.
Example: Using Keys in Collections

You can also add items with a key, making it easier to reference specific items by name.

Dim coll As New Collection
coll.Add "John", "Name1"
coll.Add "Jane", "Name2"

' Accessing items by key
MsgBox coll("Name1")  ' Displays "John"

2. What Are Arrays?

An Array is a fixed-size collection of elements of the same data type. Arrays allow for more efficient storage and access when you know the number of items in advance or need to perform operations on large datasets. Arrays can be one-dimensional or multi-dimensional.

Key Features of Arrays:

  • Fixed Size: Arrays have a defined size, which cannot be changed once declared (although you can use dynamic arrays).
  • Same Data Type: All elements in an array must be of the same type (e.g., all integers, strings, or objects).
  • Indexed Access: Arrays allow for quick access to individual elements using an index, starting from 0.

Declaring and Using Arrays:

To declare an array, you use parentheses to specify the size. If you want a dynamic array, you use the ReDim statement to change its size at runtime.

Example: Declaring a Fixed-Size Array
Dim fruits(2) As String  ' Array with 3 elements (0 to 2)

fruits(0) = "Apple"
fruits(1) = "Banana"
fruits(2) = "Orange"

' Accessing array elements
MsgBox fruits(1)  ' Displays "Banana"
Example: Using a Dynamic Array
Dim fruits() As String
ReDim fruits(2)

' Adding items to the array
fruits(0) = "Apple"
fruits(1) = "Banana"
fruits(2) = "Orange"

' Resizing the array
ReDim Preserve fruits(4)  ' Increase the size of the array while preserving existing data
fruits(3) = "Pineapple"
fruits(4) = "Mango"

' Accessing array elements
MsgBox fruits(4)  ' Displays "Mango"

Multi-Dimensional Arrays:

Arrays can also be multi-dimensional, allowing you to store data in a grid-like structure (e.g., matrix or table).

Dim sales(1 To 3, 1 To 2) As Double

' Assigning values to a 2D array
sales(1, 1) = 1000
sales(1, 2) = 1500
sales(2, 1) = 1200
sales(2, 2) = 1800
sales(3, 1) = 1400
sales(3, 2) = 2000

' Accessing elements from a 2D array
MsgBox sales(2, 2)  ' Displays 1800

3. When to Use Collections vs. Arrays

Both collections and arrays are useful for storing and manipulating groups of data, but they serve different purposes depending on the situation:

Use Collections When:

  • You need a dynamic data structure that can grow and shrink as needed.
  • You want to store objects or different data types in the same collection.
  • You prefer a key-value pair access method.
  • You need to add or remove items frequently.

Use Arrays When:

  • You know the number of elements in advance or can define a fixed size.
  • You need fast, indexed access to elements.
  • You want to store elements of the same data type and avoid the overhead of key-value storage.
  • You need multi-dimensional structures like matrices or tables.

4. Best Practices for Using Collections and Arrays

  • Choose the Right Data Structure: Use arrays for situations where you need fixed, indexed access to homogeneous data, and use collections when you need dynamic storage and more flexible access patterns (like key-value pairs).
  • Dynamic Arrays for Flexibility: If you need a more flexible array, use dynamic arrays with ReDim to resize them as required.
  • Error Handling: When working with collections and arrays, always implement error handling (such as checking if an array index is within bounds) to avoid runtime errors.

5. Conclusion

Collections and arrays are powerful tools in VBA for handling groups of data. Collections offer more flexibility and are ideal for situations where the data size may change dynamically, while arrays are efficient for storing and accessing fixed sets of data. Understanding when and how to use these structures can help you write cleaner, more efficient code in your Access VBA applications.

Commenting is not enabled on this course.