字典中的Excel VBA类

Gotrekk

我正在将类项目添加到字典中,但无法将它们找回来。我是否需要循环播放或我做错了什么?

我的课程模块“ cOgg”具有:

Public desc As String
Public alt As Single

和我的潜艇有:

sub pivo()
Dim oMat As New cOgg
Dim sosdb As New Dictionary
Set sosdb = Nothing

oMat.desc= "unodesc"
oMat.alt= 5
sosdb.Add "uno", oMat

oMat.desc= "duedesc"
oMat.alt= 10
sosdb.Add "due", oMat
Debug.Print (sosdb("uno").alt)
Debug.Print (sosdb("due").alt)
end sub

如果我运行潜艇,我得到:

10
10

代替

5
10

有任何想法吗?

问候

内维尔

添加oMat变量后,必须将其设置cOgg该类的新实例,以便在字典中具有该类对象的两个实例。

sub pivo()
    Dim oMat As New cOgg
    Dim sosdb As New Dictionary
    Set sosdb = Nothing

    oMat.desc= "unodesc"
    oMat.alt= 5
    sosdb.Add "uno", oMat

    Set oMat = New cOgg
    oMat.desc= "duedesc"
    oMat.alt= 10
    sosdb.Add "due", oMat
    Debug.Print (sosdb("uno").alt)
    Debug.Print (sosdb("due").alt)
end sub

如果不执行此操作,则条目中oMatin"Uno"被添加为10后将被更新。然后,将与cOggin相同的确切实例添加oMat"due"字典条目中。因此,两者"uno""due"拥有相同的对象实例,它们是相同的并且具有alt10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章