Declaring multidimensional array

Access9001

Registered User.
Local time
Today, 03:37
Joined
Feb 18, 2010
Messages
268
How can I basically do this:

variablename = {("element1a", "element1b"), ("element2a","element2b"), ...}
 
Multidimensional arrays have a couple of problems.

1. The elements must be of the same data type.
2. When you re-dimension them not all elements are preserved.

You can get around those problems by holding the elements in a user defined data type and declaring a single dimensioned array using another user defined data type.

It also has the added advantage that Intellisense works.

Code:
Option Compare Database
Option Explicit
Option Base 0


Public Type Elements
    Element1a As Long
    Element1b As String
End Type

Public Type MembersArray
    Members() As Elements
End Type



Sub Demo()
    Dim lngIndex As Long
    Dim MyArray  As MembersArray
    
    ReDim Preserve MyArray.Members(3)
    
    MyArray.Members(0).Element1a = 123
    MyArray.Members(0).Element1b = "ABC"
    
    MyArray.Members(1).Element1a = 456
    MyArray.Members(1).Element1b = "DEF"
    
    MyArray.Members(2).Element1a = 789
    MyArray.Members(2).Element1b = "GHI"
    
    MyArray.Members(3).Element1a = 111
    MyArray.Members(3).Element1b = "Some other text."
    
    For lngIndex = 0 To UBound(MyArray.Members)
        Debug.Print MyArray.Members(lngIndex).Element1a & "  " & MyArray.Members(lngIndex).Element1b
    Next lngIndex
    
    ReDim Preserve MyArray.Members(1)

    For lngIndex = 0 To UBound(MyArray.Members)
        Debug.Print MyArray.Members(lngIndex).Element1a & "  " & MyArray.Members(lngIndex).Element1b
    Next lngIndex

End Sub
 

Users who are viewing this thread

Back
Top Bottom