首页 > 解决方案 > 在 Excel VBA 中将对象添加到集合时遇到问题

问题描述

我正在用 excel 开发一个小型应用程序来跟踪童子军徽章的进度。我有一个包含整数和字符串的 Challenge 对象。我有一个包含挑战对象列表的 ChallengeList 对象。我可以将工作表中的挑战列表(其中 32 个)读取到集合中,并且 debug.print 检查显示挑战对象已正确创建。

我将对象添加到集合中,但是当我“为每个”集合中的项目并打印它们时,集合似乎包含最后一个项目的 32 个副本。这也是我使用 item(x) 读取对象的情况。

我怀疑将对象添加到集合中是在做一些愚蠢的事情,但我看不到是什么。我已经阅读,重新阅读并与鸭子交谈。我正式迷路了。有人可以在这里提出我做错了什么吗?

Sub loadChallenges()
    Dim tempChal As challenge
    Set m_chalList = New Collection
    lineNum = 2

    Set tempChal = New challenge
    currentCell = Sheets("Challenges").Cells(lineNum, 1)
    Do
        'create Challenge object
        tempChal.ID = Sheets("Challenges").Cells(lineNum, 1)
        tempChal.challengeName = Sheets("Challenges").Cells(lineNum, 2)
        'add challenge object to array
        m_chalList.Add tempChal
        lineNum = lineNum + 1
        Debug.Print tempChal.toString 'check object
    Loop Until Len(Sheets("Challenges").Cells(lineNum, 2)) = 0

    'check collection
    For Each tempChal In m_chalList
        Debug.Print tempChal.toString
    Next

End Sub

Debug.print 输出:

ID:1 挑战名称:在吊床上

……

ID:32 challengeName:计划、交付和审查 Lightweight Night Away

检查集合输出是以下行的 32 个实例。

ID:32 challengeName:计划、交付和审查 Lightweight Night Away

标签: excelvba

解决方案


推荐阅读