Word 2007'de VBA kullanarak bir form belgesini temsil etmek için kod oluşturmaya çalışıyorum. Bölüm, Soru Dizisi ve Soruyu temsil edecek sınıflar oluşturdum.VBA - Bir koleksiyon koleksiyonuna nasıl koleksiyon eklenir
Bu yüzden 15 bölümüm var. Her bir 'Bölüm' Nesnesi 'Bölümler' Koleksiyonuna eklemek için bir fonksiyon yarattım, ardından nesneyi yok edin, sonuç olarak nesneler koleksiyonda (veya bir şeyde) kalıcı olarak kalır.
Koleksiyonlara koleksiyon eklemek için aynı yöntemi kullanmak mümkün mü yoksa her koleksiyonu açık bir şekilde tanımlamalı mıyım? Modülünde
Kod: O zaman bu aracılığıyla denir
Public Sections As Collection
Function DefineSection(ByVal SectionName As String)
Set Section = New clsSection
Section.myName = SectionName
Sections.Add Section, SectionName
End Function
Function DefineQuestionSet(ByVal SectionName As String, ByVal Name As String, ByVal NoOfQuestions As Integer, ByVal IsMutuallyExclusive As Boolean, Optional ByVal DependentOnSection As String)
Dim Qsets As Collection
Set Qsets = New Collection
Set QuestionSet = New clsQuestionSet
QuestionSet.Name = Name
QuestionSet.NoOfQuestions = NoOfQuestions
QuestionSet.MutuallyExclusive = IsMutuallyExclusive
If Not (DependentOnSection) = "" Then
QuestionSet.DependentOnSection = DependentOnSection
End If
Qsets.Add QuestionSet
Sections.Item(SectionName).Add Qsets
End Function
:
Sub Initilise()
Set Sections = New Collection
DefineSection "PersonalDetails"
DefineQuestionSet "PersonalDetails", "PersonalDetails", 29, False
End Sub
Ne yazık ki şimdilik kod değiştirdik bir initializated koleksiyon dönmek - ancak 'Sections.Item (SectionName) .Add Qsets' satırında 'DefineQuestionSet' işlevinde bir hata var. – Stevo
Sadece açıklığa kavuşmak için, kod nesneleri toplamaya ekler ve nesnenin örneğini yok eder, ancak koleksiyonda kalıcı olarak kalır, bu yüzden nesneleri takip etmek zorunda kalmam. Bu koleksiyonlar için aynı mı? yani, B koleksiyonunu yaratın, A koleksiyonuna ekleyin, B koleksiyonunu imha edin, fakat A koleksiyonuna eklendiğinden, A koleksiyonunda bir 'item' kalır. – Stevo
hata mesajı, her zaman esrarengiz 'nesne bu özelliği desteklemez veya yöntem ' – Stevo