7,763
社区成员
发帖
与我相关
我的任务
分享
Dim Count_ As Long
Dim M_()
Public Sub Add(Item)
On Error Resume Next
Count_ = Count_ + 1
ReDim Preserve M_(Count_)
Err.Clear
Set M_(Count_) = Item '可以添加对象
If Len(Err.Description) <> 0 Then M_(Count_) = Item
End Sub
Public Function Count() As Long
Count = Count_
End Function
Public Function Item(index) ‘此处已经通过菜单中’过程属性‘把item函数设为缺省成员
On Error Resume Next
Err.Clear
Set Item = M_(index)
If Len(Err.Description) <> 0 Then Item = M_(index)
End Function
Private Sub Form_Load()
Dim c1 As New Collection
Dim c2 As New Coll '自己定义的集体类
c1.Add "abcd"
c1.Add "abcd"
c1.Add "abcd"
c1.Add "abcd"
For Each j In c1
Debug.Print j 'collection集合可以正常列出集合成员
Next
c2.Add "1234"
c2.Add "1234"
c2.Add "1234"
c2.Add "1234"
For i = 1 To c2.Count
Debug.Print c2(i) '可以正常运行
Next
For Each j In c2 '运行此处显示对象不支持该方法
Debug.Print j
Next
End Sub
'Calss: ValueObject'
'先得将值封装在对象中'
Option Explicit
Private m_Value As Variant
'属性要设为 (Default)'
Public Property Get Value() As Variant
Value = m_Value
End Property
Public Property Let Value(ByVal RHS As Variant)
m_Value = RHS
End Property
'为方便使用,在任意模块中加个封装的函数'
Public Function ValueObject(ByVal v As Variant) As ValueObject
Dim obj As New ValueObject
obj.Value = v
Set ValueObject = obj
End Function
'调用'
c2.Add ValueObject("1234")
c2.Add ValueObject("1234")
c2.Add ValueObject("1234")
c2.Add ValueObject("1234")
For Each j In c2 '成功使用 For Each
Debug.Print j '由于 ValueObject 的默认属性 Value,所以该语句依旧可以输出字符串'
Next