在 VBA 中创建一个记录数组

Create a record array in VBA

我想在 VBA 中创建一个记录数组,例如:

Index     Name    Age
0         Anton   40
1         Bert    35
...       ...     ...
9         Julia   20

我使用两个数组做了一个快速而肮脏的实现:

Dim arrName(0 to 9) as String
Dim arrAge(0 to 9) as Integer

arrName(0) = "Anton"   
arrName(1) = "Bert"    
arrAge(0) = 40
arrAge(1) = 35

我也可以将其作为二维数组来实现,但我试图避免使用数据类型变体。 (如果我详细解释它们,“出于原因”对问题没有好处)。

我认为 VBA 会实现某种记录数据类型,但搜索数据记录、数据收集等,但大多数结果让我参考了使用对象 e.g. this 的实现,这将很好,但我想保持代码“尽可能简单”,而不引入用于数据存储的对象(是的,我知道工作表也是对象,我仍在努力避免它)。

VBA 中没有记录作为数据类型实现,还是我只是使用了错误的关键字进行搜索?小指点将不胜感激。

试试 Type:

Type rec
    Index As Long
    Name As String
    Age As Byte
End Type

Sub test1()
    Dim arr(0 To 9) As rec
    With arr(0)
        .Index = 0
        .Name = "Anton"
        .Age = 40
    End With
    
    With arr(1)
        .Index = 1
        .Name = "Bert"
        .Age = 35
    End With
    
    Debug.Print "Index", "Name", "Age"
    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i).Index, arr(i).Name, arr(i).Age
    Next
End Sub
Index         Name          Age
 0            Anton          40 
 1            Bert           35 
 0                           0 
 0                           0 
 0                           0 
 0                           0 
 0                           0 
 0                           0 
 0                           0 
 0                           0