【发布时间】:2020-03-09 08:18:00
【问题描述】:
背景:
在最近尝试回答 question 时,我自己在想是否可以直接从字典项返回一个类对象属性数组。
代码:
把TstClass想象成一个类模块,代码如下:
Public val1 As Variant
Public val2 As Variant
Public val3 As Variant
然后这段代码来测试:
Sub Test()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim lst As TstClass, key As Variant, arr As Variant
For x = 1 To 3
Set lst = New TstClass
lst.val1 = "A" & x
lst.val2 = "B" & x
lst.val3 = "C" & x
dict.Add x, lst
Next x
For Each key In dict
arr = Array(dict(key).val1, dict(key).val2, dict(key).val3)
Next key
End Sub
问题:
在上述情况下,Array(dict(key).val1, dict(key).val2, dict(key).val3) 将返回数组就好了,但如果我们想象val4-val50 它将变成更多的代码。使用Array(...) 或逐行写出Debug.Print Dict(key).Valx。
问题:
是否可以直接从字典键的类对象属性中返回一个数组?对我来说最明显的尝试是arr = Dict(key),希望它能以某种方式识别我需要该项目的所有属性。除此之外,不允许将常量、数组、用户定义类型声明为 Public,所以像 Public Vals(0 to 2) 这样的东西也不起作用。
谢谢你, 合资公司
【问题讨论】:
标签: arrays excel vba class dictionary