我正在使用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
子程序执行得非常好,但是只要它超过集合就会丢失该值并变为空。我很肯定问题收集在我的项目中从不暗淡(我现在必须检查20次)所以范围声明不是问题。如何在文档保持打开状态时确保集合保留所有问题对象?
谢谢
答案 0 :(得分:1)
经过多次挖掘后,我找到了答案:
我的测验生成器使用OLEObjects来表示问题。显然,创建一个OLEObject动态地重置全局变量,这真的很糟糕。如果有人知道解决方法,我会非常感激。