在 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
我想在 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