在公共VBA集合中存储自定义类

时间:2016-07-04 13:41:39

标签: vba word-vba

我正在使用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次)所以范围声明不是问题。如何在文档保持打开状态时确保集合保留所有问题对象?

谢谢

1 个答案:

答案 0 :(得分:1)

经过多次挖掘后,我找到了答案:

我的测验生成器使用OLEObjects来表示问题。显然,创建一个OLEObject动态地重置全局变量,这真的很糟糕。如果有人知道解决方法,我会非常感激。