和往常一样,这可能是一个新的问题,但这里说的是:
我有一个有15个属性的类。每个类表示关于一项库存的信息(有多少种,最近有多少种)。每次通过传递股票代码来初始化类时,它都会收集来自其他来源的所有数据,并将其存储为类的属性。
我希望能够初始化n个类,这取决于列表的长度(不超过200个)。我想用它们的股票代码来命名这些类,以便稍后我可以调用这些信息并添加到其中。唯一的问题是我不知道如何使用变量来命名类。我真的不想写200个类长的手,因为我确信有一种比Diming更好的方法:Stock1 As C_ICODE, Stock2 As C_ICODE, Stock3 As C_ICODE等并按顺序初始化它们,直到输入(来自ActiveCell) = ""或达到200的最大列表长度为止。如果可能的话,我希望创建尽可能多的类实例,并生成这样的类实例:
PseudoCode:
For Each xlCell In xlRange
strIN = xlCell.Value
Dim ICode(strIN) As New C_ICODE
ICode(strIN).lIcode = strIN
NextLetting classname.lIcode = strIN为类提供了它所需的所有用户输入,然后执行各种函数和子程序来获得其他14个属性。
如果有人能让我知道在VBA中这类事情是否可能发生,我会非常感激,如果是这样的话,我该如何去做呢?很难找到相关的信息。
发布于 2014-01-12 17:35:54
您可以使用字典对象:
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发布于 2014-01-12 17:38:42
我刚对这个做了个快速的测试,看起来它可能对你有用。您可以创建一个数组来保存类的多个实例。
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 Subhttps://stackoverflow.com/questions/21077668
复制相似问题