我正在尝试创建一个带有Collection
的类,它将保存其他CASN
(有点像链接列表),我不确定我的类的实例是否是正确。但每次我尝试运行下面的代码时,都会收到错误
对象变量或未设置块
代码运行:
If (Numbers.count > 0) Then
Dim num As CASN
For Each num In Numbers
If (num.DuplicateOf.count > 0) Then 'ERROR HERE
Debug.Print "Added " & num.REF_PO & " to list"
ListBox1.AddItem num.REF_PO
End If
Next num
End If
CLASS - CASN:
Private pWeek As String
Private pVendorName As String
Private pVendorID As String
Private pError_NUM As String
Private pREF_PO As Variant
Private pASN_INV_NUM As Variant
Private pDOC_TYPE As String
Private pERROR_TEXT As String
Private pAddressxl As Range
Private pDuplicateOf As Collection
'''''''''''''''' Instantiation of String, Long, Range etc.
'''''''''''''''' Which I know is working fine
''''''''''''''''''''''
' DuplicateOf Property
''''''''''''''''''''''
Public Property Get DuplicateOf() As Collection
Set DuplicateOf = pDuplicateOf
End Property
Public Property Let DuplicateOf(value As Collection)
Set pDuplicateOf = value
End Property
''''' What I believe may be the cause
基本上我所做的是创建了两个CASN类Collection
,我试图比较两者,看看是否有任何与变量.REF_PO
相关的匹配值,如果有的话我希望将其添加到该类的cthisWeek
集合中的CASN
类DuplicateOf
集合中。
希望这很有意义......我知道我的所有代码在比较两个CASN
Collection
时都很有用。我已经彻底测试了一切并尝试了一些不同的方法,似乎无法找到解决方案
修改
我在第一期发现了错误,但现在出现了一个新问题......
答案 0 :(得分:2)
这对Get方法来说是一个相对简单的修复:
Public Property Get DuplicateOf() As Collection
If pDuplicateOf Is Nothing Then Set pDuplicateOf = New Collection
Set DuplicateOf = pDuplicateOf
End Property
编辑:解决您的问题 - "因此,在创建课程时,是否要将所有值初始化为Nothing或Null?我也应该有Class_Terminate吗?"
答案是"它取决于" - 通常不需要将所有类属性设置为某个特定值:大多数非对象属性已经具有其特定变量类型的默认值。您只需要了解未设置变量的影响 - 主要是当它们是对象类型时。
您是否需要Class_Terminate
取决于您的班级实例是否需要执行任何"清理" (例如,关闭所有打开的文件句柄或数据库连接),然后才能销毁它们。