创建集合和类:caas,caa,cbbs,cbb
代码如下:
caas:
Public Key As String
Private mvarstr As String '局部复制
Private mvarcbbs As cbbs
Private mvarItem As cbbs '局部复制
Public Property Set Item(ByVal vData As cbbs)
Set mvarItem = vData
End PropertyPublic Property Get Item() As cbbs
If mvarItem Is Nothing Then
Set mvarItem = New cbbs
End If
Set Item = mvarItem
End PropertyPublic Property Get cbbs() As cbbs
If mvarcbbs Is Nothing Then
Set mvarcbbs = New cbbs
End If
Set cbbs = mvarcbbs
End Property
Public Property Set cbbs(vData As cbbs)
Set mvarcbbs = vData
End Property
Private Sub Class_Terminate()
Set mvarcbbs = Nothing
End SubPublic Property Let str(ByVal vData As String)
mvarstr = vData
End PropertyPublic Property Get str() As String
str = mvarstr
End Propertycaa:
Private mCol As CollectionPublic Function Add(Key As String, str As String, Optional sKey As String) As caa
Dim objNewMember As caa
Set objNewMember = New caa objNewMember.Key = Key
objNewMember.str = str
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As caa
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
Count = mCol.Count
End Property
Public Sub Remove(vntIndexKey As Variant)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
Set NewEnum = mCol.[_NewEnum]
End PropertyPrivate Sub Class_Initialize()
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
cbbs:
Private mCol As CollectionPublic Function Add(Key As String, dd As String, Optional sKey As String) As cbb
Dim objNewMember As cbb
Set objNewMember = New cbb
objNewMember.Key = Key
objNewMember.dd = dd
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As cbb
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
Count = mCol.Count
End PropertyPublic Sub Remove(vntIndexKey As Variant)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Subcbb:
Public Key As StringPrivate mvardd As String '局部复制
Public Property Let dd(ByVal vData As String)
mvardd = vData
End PropertyPublic Property Get dd() As String
dd = mvardd
End Property
窗体代码如下:Private Sub Command1_Click()
Dim ucaa As New caa
ucaa.str = "10"
For i = 1 To 3
With ucaa.Item(i)
.dd = "dd" & i
End With
Next i
End Sub运行出错,请大哥大姐帮忙检查原因
代码如下:
caas:
Public Key As String
Private mvarstr As String '局部复制
Private mvarcbbs As cbbs
Private mvarItem As cbbs '局部复制
Public Property Set Item(ByVal vData As cbbs)
Set mvarItem = vData
End PropertyPublic Property Get Item() As cbbs
If mvarItem Is Nothing Then
Set mvarItem = New cbbs
End If
Set Item = mvarItem
End PropertyPublic Property Get cbbs() As cbbs
If mvarcbbs Is Nothing Then
Set mvarcbbs = New cbbs
End If
Set cbbs = mvarcbbs
End Property
Public Property Set cbbs(vData As cbbs)
Set mvarcbbs = vData
End Property
Private Sub Class_Terminate()
Set mvarcbbs = Nothing
End SubPublic Property Let str(ByVal vData As String)
mvarstr = vData
End PropertyPublic Property Get str() As String
str = mvarstr
End Propertycaa:
Private mCol As CollectionPublic Function Add(Key As String, str As String, Optional sKey As String) As caa
Dim objNewMember As caa
Set objNewMember = New caa objNewMember.Key = Key
objNewMember.str = str
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As caa
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
Count = mCol.Count
End Property
Public Sub Remove(vntIndexKey As Variant)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
Set NewEnum = mCol.[_NewEnum]
End PropertyPrivate Sub Class_Initialize()
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
cbbs:
Private mCol As CollectionPublic Function Add(Key As String, dd As String, Optional sKey As String) As cbb
Dim objNewMember As cbb
Set objNewMember = New cbb
objNewMember.Key = Key
objNewMember.dd = dd
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As cbb
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
Count = mCol.Count
End PropertyPublic Sub Remove(vntIndexKey As Variant)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Subcbb:
Public Key As StringPrivate mvardd As String '局部复制
Public Property Let dd(ByVal vData As String)
mvardd = vData
End PropertyPublic Property Get dd() As String
dd = mvardd
End Property
窗体代码如下:Private Sub Command1_Click()
Dim ucaa As New caa
ucaa.str = "10"
For i = 1 To 3
With ucaa.Item(i)
.dd = "dd" & i
End With
Next i
End Sub运行出错,请大哥大姐帮忙检查原因
caas里面有,不过ucaa.Item(i)根本没有一下级属性了~~
你这是自己写的代码吗?