与往常一样,这可能是一个新问题,但这里有:
我有一个包含15个属性的类。每个类别代表一个库存项目的信息(有多少,最近发货了多少等)。每次通过传递一个股票代码来初始化一个类时,它会从其他来源收集所有数据并将其存储为该类的属性。
我希望能够初始化 n 类的数量,具体取决于列表的长度(从不超过200)。我想用它们的股票代码命名这些类,以便我可以稍后调用这些信息并添加到它中。唯一的问题是我不知道如何使用变量来命名一个类。我真的不想写出200个课程,因为我确信有比Dim
ing:Stock1 As C_ICODE, Stock2 As C_ICODE, Stock3 As C_ICODE
等更好的方法,并按顺序初始化它们,直到输入(来自ActiveCell
)= ""
或者它的最大列表长度为200.如果可能的话,我想创建尽可能多的类实例,并生成类似这样的内容:
伪代码:
For Each xlCell In xlRange
strIN = xlCell.Value
Dim ICode(strIN) As New C_ICODE
ICode(strIN).lIcode = strIN
Next
Let
ting classname.lIcode = strIN
为类提供了所需的所有用户输入,然后执行各种函数和子程序以获取其他14个属性。
如果有人能告诉我VBA中是否有可能这样做,我将非常感激,如果可以的话,我该如何解决呢?绝对努力寻找相关信息。
答案 0 :(得分:6)
您可以使用Dictionary对象:
Dim ICode As Object
Set ICode = CreateObject("Scripting.Dictionary")
For Each xlCell In xlRange
strIN = xlCell.Value
ICode.Add strIN, New C_ICODE
ICode(strIN).lIcode = strIN
Next
答案 1 :(得分:2)
我刚刚对此进行了快速测试,看起来它似乎对您有用。您可以创建一个数组来保存类的多个实例。
Sub thing()
Dim cArray(1 To 10) As Class1
Dim x As Long
For x = 1 To UBound(cArray)
Set cArray(x) = New Class1
Next
' Assume the class has a property Let/Get for SomeProperty:
For x = 1 To UBound(cArray)
cArray(x).SomeProperty = x * 10
Next
For x = 1 To UBound(cArray)
Debug.Print cArray(x).SomeProperty
Next
End Sub