首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中初始化不确定数量的类:使用变量命名类的实例

在VBA中初始化不确定数量的类:使用变量命名类的实例
EN

Stack Overflow用户
提问于 2014-01-12 17:13:33
回答 2查看 1.1K关注 0票数 2

和往常一样,这可能是一个新的问题,但这里说的是:

我有一个有15个属性的类。每个类表示关于一项库存的信息(有多少种,最近有多少种)。每次通过传递股票代码来初始化类时,它都会收集来自其他来源的所有数据,并将其存储为类的属性。

我希望能够初始化n个类,这取决于列表的长度(不超过200个)。我想用它们的股票代码来命名这些类,以便稍后我可以调用这些信息并添加到其中。唯一的问题是我不知道如何使用变量来命名类。我真的不想写200个类长的手,因为我确信有一种比Diming更好的方法:Stock1 As C_ICODE, Stock2 As C_ICODE, Stock3 As C_ICODE等并按顺序初始化它们,直到输入(来自ActiveCell) = ""或达到200的最大列表长度为止。如果可能的话,我希望创建尽可能多的类实例,并生成这样的类实例:

PseudoCode:

代码语言:javascript
复制
For Each xlCell In xlRange
    strIN = xlCell.Value

    Dim ICode(strIN) As New C_ICODE

    ICode(strIN).lIcode = strIN
Next

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

如果有人能让我知道在VBA中这类事情是否可能发生,我会非常感激,如果是这样的话,我该如何去做呢?很难找到相关的信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-12 17:35:54

您可以使用字典对象:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2014-01-12 17:38:42

我刚对这个做了个快速的测试,看起来它可能对你有用。您可以创建一个数组来保存类的多个实例。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21077668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档