excel - 在 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
解决方案
推荐阅读
- javascript - 如何设计具有下拉效果的下拉菜单?
- php - 如何从 \DateTime 中减去一毫秒?
- python - 运行python3,使用python2代码,我将httplib更改为http.client,错误
- javascript - 如何将数字数组转换为字典
- angular - 如何在Angular 6中将标题子菜单添加到material-dashboard-angular2侧栏
- android - 在“双 SIM 卡”的情况下,如何使用设备信息在 react-native 中获取设备电话号码
- php - PHP Symfony4 Doctrine 驱动程序/身份验证问题(Windows 10)
- python - 错误舍入时间到前 15 分钟 - Python
- php - laravel中唯一ID行的插入问题
- c++ - C ++删除基址或dynamic_cast指针?