我有一个代码长度问题,我想听听你的专业知识。
我有一个名为MyClass的类,有几个属性,P1,P2,... P16。
我想要放在属性中的值位于一个名为MyArray的数组中。
现在,我正在做的事情,并且工作正常是:
MyClass.P1 = MyArray(0)
...
MyClass.P16 = MyArray(15)
这需要很多行,代码不是很易读。
我希望能够遍历变量,比如
For i = 0 to 15
array_of_variables(0) = MyArray(0)
Next
但是,我不知道如何创建这个'array_of_variables'。
我尝试将类的属性创建为Array,但这不正确VBA :(。
您对如何实现这一目标有什么想法吗?
非常感谢, 马克西姆
答案 0 :(得分:0)
如果你想要一个简单的方法,你可以使用一个集合,用一组具有预定义键(名称)的属性设置你的类,并使用与你要传递给类的集合相同的格式查看每个名称,查找2个集合之间的匹配并传输值。我猜你可以用一个数组做同样的事情,但是你必须确保它们中的数据是对齐的,不像那些有名称来识别它们的集合,数组只有索引。
答案 1 :(得分:0)
试试这个
将以下内容放入“MyClass”类模块
中Public Properties As Variant
以下是可能的利用
Option Explicit
Sub main()
Dim MyClassInstance As MyClass
Dim i As Long
Set MyClassInstance = New MyClass
With MyClassInstance
.Properties = Array(1, 2, 3, 4, 5, 6)
For i = LBound(.Properties) To UBound(.Properties)
MsgBox .Properties(i)
Next i
End With
End Sub
答案 2 :(得分:0)
感谢您的建议,我想出了一些混合它们的东西。
在课堂上我创建了这样的属性:
Property Let Target(index, Value)
Select Case index
Case 0:
P1 = Value
...
Case 15
P16 = Value
End Select
End Property
这样,我可以像这样循环:
For i = 0 to 15
MyClass.Target(i) = MyArray(i)
Next