在VBA中初始化无限数量的类:使用变量来命名类的实例

Orp*_*hid 2 excel vba class excel-vba

与往常一样,这可能是一个新问题,但这里有:

我有一个有15个属性的类.每个类别代表一个库存项目的信息(有多少,最近发货了多少等).每次通过传递一个股票代码来初始化一个类时,它会从其他来源收集所有数据并将其存储为该类的属性.

我希望能够初始化n个类,具体取决于列表的长度(从不超过200).我想用它们的股票代码命名这些类,以便我可以稍后调用这些信息并添加到它中.唯一的问题是我不知道如何使用变量来命名一个类.我真的不想长时间写出200个类,因为我确信有更好的方法来执行它而不是Dim: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
Run Code Online (Sandbox Code Playgroud)

Letting classname.lIcode = strIN为类提供了所需的所有用户输入,然后执行各种函数和子程序以获得其他14个属性.

如果有人能告诉我VBA中是否有可能这样做,我将非常感激,如果有的话,我该如何解决呢?绝对努力寻找相关信息.

Dmi*_*liv 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
Run Code Online (Sandbox Code Playgroud)

  • 正是我在寻找什么.谢谢 (2认同)
  • +1你也可以使用`Collection`,它可以避免使用`CreateObject`. (2认同)