VBA中的变量数组

时间:2016-04-12 12:59:43

标签: vba

我有一个代码长度问题,我想听听你的专业知识。

我有一个名为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 :(。

您对如何实现这一目标有什么想法吗?

非常感谢, 马克西姆

3 个答案:

答案 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