【发布时间】:2016-07-04 22:35:22
【问题描述】:
我正在使用 VBA 在 Word 中制作一个测验生成器应用程序。用户一次生成一个问题,所以我试图将所有问题存储在公共集合中。将问题对象添加到集合中的子如下:
Option Explicit
Public questionCollection As VBA.Collection
'Initialize question collection
Sub addToQuestionCollection(cQuestion As Object)
Dim key As Long
'Set question collection if it has not yet been initialized
If questionCollection Is Nothing Then
Set questionCollection = New VBA.Collection
End If
'Generate key for question
key = Bas04CRC32Hash.CRC32(cQuestion.question)
'Assign key to question
cQuestion.Id = key
'Adds question object to question collection
questionCollection.add cQuestion, CStr(key)
End Sub
子例程执行得非常好,但是一旦它结束,集合就会丢失值并变为空。我很肯定 questionCollection 在我的项目中永远不会变暗(我现在必须检查 20 次)所以范围声明不会是问题。如何确保集合在文档保持打开状态时保留所有问题对象?
谢谢
【问题讨论】:
-
确保代码在模块中,而不是在用户表单中。
-
代码确实在公共模块中