私はVBAでWordでクイズジェネレータアプリケーションを作成しています。ユーザーは一度に1つの質問を生成するので、すべての質問をパブリックコレクションに保存しようとしています。次のようにコレクションに質問オブジェクトを追加するためのサブです:パブリックVBAコレクションにカスタムクラスを格納する
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回チェックしたに違いありません)。文書を開いたままでコレクションにすべての質問オブジェクトが保持されるようにするにはどうすればよいですか?
マイクイズジェネレータが質問を表現するためにOLEObjectsを使用しています。
は、いくつかのより多くの私は答えを見つけ掘りしたら
コードがユーザーフォームではなくモジュール内にあることを確認してください。 –
コードは実際にはパブリックモジュール – mattdeak