@Mark Biek你的keyExists与我的标准Exists()函数密切相关。为了使该类对于COM暴露的集合和检查数字索引更有用,我建议将sKey和myCollection更改为不输入。如果该函数将与对象集合一起使用,则需要“set”(在设置val的行上)。
编辑:这是在告诉我,我从来没有注意到基于对象和基于值的Exists()函数的不同要求。我很少使用非对象的集合,但这似乎是一个错误的完美瓶颈,当我需要检查存在时,这个错误很难跟踪。因为如果错误处理程序已经处于活动状态,错误处理将失败,因此需要两个函数来获取新的错误范围。只有Exists()函数需要被调用:
Public Function Exists(col,index) As Boolean On Error GoTo ExistsTryNonObject Dim o As Object Set o = col(index) Exists = True Exit Function ExistsTryNonObject: Exists = ExistsNonObject(col,index) End Function Private Function ExistsNonObject(col,index) As Boolean On Error GoTo ExistsNonObjectErrorHandler Dim v As Variant v = col(index) ExistsNonObject = True Exit Function ExistsNonObjectErrorHandler: ExistsNonObject = False End Function
并验证功能:
Public Sub TestExists() Dim c As New Collection Dim b As New Class1 c.Add "a string","a" c.Add b,"b" Debug.Print "a",Exists(c,"a") ' True ' Debug.Print "b","b") ' True ' Debug.Print "c","c") ' False ' Debug.Print 1,1) ' True ' Debug.Print 2,2) ' True ' Debug.Print 3,3) ' False ' End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。