本文介绍了VBA类 - 如何让一个类持有额外的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有一个挑战,我想用类解决。I have a challenge that I am trying to solve using classes.我将事务记录到类中。每笔交易都有以下内容:Each transaction has the following: 姓名 日期 时间 说明 NameDateTimeDescription但是每笔交易也可以有很多商家具有以下属性的相关联系人However each transaction can also have many business related contacts with the following properties 商家联系人姓名 商务区 比尔的百分比 有什么样的例子。 我已经尝试为业务联系人添加第二个类,然后在事务类中创建一个集合,都没有快乐。I have tried adding a second class for the business contact and then building a collection inside the transaction class, all with no joy.我也试过将交易类别中的商业联系人详情作为一个集合,也没有快乐。I have also tried making the business contact details a collection within the transaction class also with no joy.下面是我到目前为止,我可能已经走了一个盲道,它可能不值得尝试拯救的代码Below is what I have so far, but i may have gone down a blind alley and it may not be worth trying to rescue the code任何帮助非常感激。感谢 JP ThanksJPSub test() Dim x As Integer Dim xx As Integer 'code to populate some objects Dim clocklist As Collection Dim clock As classClocks Dim businesscontactlist As Collection Dim businesscontact As classBusinessContact Set businesscontactlist = New Collection Set clocklist = New Collection For x = 1 To 3 Set clock = New classClocks clock.LawyerName = "lawyer " & Str(x) For xx = 1 To 3 businesscontact.Name = "Business Contact " & Str(xx) businesscontactlist.Add businesscontact Next xx clock.BusinessContactAdd businesscontactlist '----- errors here clocklist.Add clock Next x Set businesscontactlist = Nothing 'write the data backout again For Each clock In clocklist Debug.Print clock.LawyerName Set businesscontactlist = clock.BusinessContacts For Each businesscontact In businesscontactlist Debug.Print businesscontact.Name Next NextEnd Sub 时钟类 - 这是事务类 Clock Class - this is the transaction classPrivate pLawyerName As StringPrivate pBusinessContactList As CollectionPublic Property Get LawyerName() As String LawyerName = pLawyerNameEnd PropertyPublic Property Let LawyerName(ByVal sLawyerName As String) pLawyerName = sLawyerNameEnd PropertyPublic Property Get BusinessContacts() As Collection Set BusinessContacts = pBusinessContactListEnd PropertyPublic Property Set BusinessContactAdd(ByRef strName() As Collection) Set pBusinessContactList = New Collection Dim businesscontact As classBusinessContact Set businesscontact = New classBusinessContact For Each businesscontact In strName businesscontact.Name = strName.Item() pBusinessContactList.Add businesscontact NextEnd Property 业务联系人类 - 目前只有一个属性 Business contact Class - For the moment it only has one propertyPrivate pBusinessContactName As StringPublic Property Get Name() As String Name = pBusinessContactNameEnd PropertyPublic Property Let Name(ByVal sName As String) pBusinessContactName = sNameEnd Property 推荐答案不要在你的代码中做你期望的。我已经清理了一点,这个新版本应该更接近你想要的。 There are a few things that don't do what you expect in your code. I have cleaned it a bit and this new version should be closer to what you want. Let me know if the changes are not self-explanatory.主要程序:Sub test() Dim i As Long Dim j As Long 'code to populate some objects Dim clocklist As Collection Dim clock As classClocks Dim businessContactList As Collection Dim businessContact As classBusinessContact Set clocklist = New Collection For i = 1 To 3 Set businessContactList = New Collection Set clock = New classClocks clock.LawyerName = "lawyer " & i For j = 1 To 3 Set businessContact = New classBusinessContact businessContact.Name = "Business Contact " & j businessContactList.Add businessContact Next j Set clock.BusinessContactAdd = businessContactList clocklist.Add clock Next i Set businessContactList = Nothing 'write the data backout again For Each clock In clocklist Debug.Print clock.LawyerName Set businessContactList = clock.BusinessContacts For Each businessContact In businessContactList Debug.Print businessContact.Name Next NextEnd Sub classClocks:classClocks:Private pLawyerName As StringPrivate pBusinessContactList As CollectionPrivate Sub Class_Initialize() Set pBusinessContactList = New CollectionEnd SubPublic Property Get LawyerName() As String LawyerName = pLawyerNameEnd PropertyPublic Property Let LawyerName(ByVal sLawyerName As String) pLawyerName = sLawyerNameEnd PropertyPublic Property Get BusinessContacts() As Collection Set BusinessContacts = pBusinessContactListEnd PropertyPublic Property Set BusinessContactAdd(contactCollection As Collection) For Each contactName In contactCollection pBusinessContactList.Add contactName NextEnd Property 这篇关于VBA类 - 如何让一个类持有额外的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 09-21 11:10