【问题标题】:VBA. Collection of class objects contaning a collection in turnVBA。依次包含集合的类对象的集合
【发布时间】:2021-11-28 12:40:31
【问题描述】:

我需要创建一个包含类对象的集合。这些类对象又应该包含一个集合。

所以从上到下的数据结构是:

  • 集合 "col_A" 包含类对象 "cls_A"
  • 类对象“cls_A”包含一个整数“inta”和一个集合“col_B”
  • 集合 "col_B" 包含类对象 "cls_B"
  • 类对象“cls_B”包含一个整数“intb”和一个双精度“dbl”

在我尝试将“cls_A”对象添加到最顶层集合之前,一切正常。然后我收到以下错误:

Run-time error '91':
Object variable or With block variable not set

我的代码如下:

类模块cls_A

Public inta As Integer
Public col_B As Collection

类模块cls_B

Public intb As Integer
Public dbl As Double

主模块

Sub main()

Dim objB As cls_B
Dim col_B As New Collection

'Populate the col_B collection
'(with one element for simplicity)
Set objB = New cls_B
objB.intb = 5
objB.dbl = 5.15
col_B.Add objB

'Populate the col_A collection
Dim objA As cls_A
Dim col_A As Collection

Set objA = New cls_A
objA.inta = 2
Set objA.col_B = col_B
'Up to here there is no problem,
'objA is correctly created

col_A.Add objA  'Here I get the error

End Sub

【问题讨论】:

    标签: vba class collections


    【解决方案1】:

    Dim col_A As Collection 不会创建col_A——它只是声明它。引发错误的行是试图使用这个不存在的对象。

    试试

    Dim col_A As New Collection
    

    或者,Set 在你声明它之后但在你使用它之前。

    【讨论】:

    • 就是这样。非常感谢!
    • 我建议您使用Set var = New Collection 而不是Dim var As New CollectionRead this@DavidR
    猜你喜欢
    • 2011-04-02
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2018-06-02
    相关资源
    最近更新 更多