检查键是否在Excel VBA中的集合中的通用方法

用户名

我的代码中有不同的集合。有些保存对象(各种),另一些保存其中的类型(如Long)。

有没有一种方法可以检查键是否包含在适用于类型和对象的Collection中?

到目前为止,我有两个功能。

第一个功能:

Private Function ContainsObject(objCollection As Object, strName As String) As Boolean
    Dim o As Object
    On Error Resume Next
    Set o = objCollection(strName)
    ContainsObject = (Err.Number = 0)
    Err.Clear
End Function

第二功能:

Private Function ContainsLong(AllItems As Collection, TheKey As String) As Boolean
    Dim TheValue As Long
    On Error Resume Next
    TheValue = AllItems.Item(TheKey)
    ContainsLong = (Err.Number = 0)
    Err.Clear
End Function

这两个函数的原因是,如果我传递具有Longs对的Collection,则ContainsObject似乎不起作用(该函数始终返回False。)

PS:第一个功能是“测试”中第三个答案的副本,或者检查是否存在工作表

罗宾·麦肯齐

您应该Variant在第一个函数中使用a 您可以将分配ObjectVariant,例如,这不会出错:

Sub Test()
    Dim var As Variant
    Dim obj As Object
    Set obj = Application
    var = Application
    Debug.Print var
End Sub

但这会产生Type Mismatch编译错误,即尝试将a分配LongObject

Sub Test()
    Dim obj As Object
    Dim lng As Long
    lng = 3
    Set obj = lng
End Sub

因此,对于用于检查Collection键是否有效的泛型函数(沿代码行),可以使用:

Function HasKey(coll As Collection, strKey As String) As Boolean
    Dim var As Variant
    On Error Resume Next
    var = coll(strKey)
    HasKey = (Err.Number = 0)
    Err.Clear
End Function

测试代码:

Sub Test()
    Dim coll1 As New Collection
    coll1.Add Item:=Sheet1.Range("A1"), Key:="1"
    coll1.Add Item:=Sheet1.Range("A2"), Key:="2"
    Debug.Print HasKey(coll1, "1")

    Dim coll2 As New Collection
    coll2.Add Item:=1, Key:="1"
    coll2.Add Item:=2, Key:="2"
    Debug.Print HasKey(coll2, "1")
End Sub

关于此,MSDN上有一篇有用的文章上下文是VB6,但与VBA有关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查键是否在Excel VBA中的集合中的通用方法

来自分类Dev

检查 CosmosDB 的集合中是否存在分区键

来自分类Dev

检查DSN是否在excel vba中存在

来自分类Dev

检查VBA中是否存在嵌套的字典键

来自分类Dev

Laravel检查集合是否包含外键

来自分类Dev

检查键/值是否在JSON中

来自分类Dev

检查数组中是否存在键/值对

来自分类Dev

检查嵌套对象中是否存在键

来自分类Dev

检查TreeSet中的键是否以String开头,并获取该键

来自分类Dev

检查excel 2010 vba中是否存在目录

来自分类Dev

检查数组中的元素是否为Null / Excel VBA

来自分类Dev

检查单元格是否是 Excel VBA 中的数字

来自分类Dev

使用vba检查列是否在excel中可见

来自分类Dev

如何检查T是否是通用方法中的对象列表

来自分类Dev

检查范围是否在Scala中包含值的通用方法

来自分类Dev

Excel VBA:Shapes集合中的Index = ZOrderPosition?

来自分类Dev

在Excel VBA中检查两个范围是否相等的最快方法

来自分类Dev

在Excel VBA中检查两个范围是否相等的最快方法

来自分类Dev

Python检查列表中的任何元素是否是字典中的键

来自分类Dev

如何检查参数键是否以通用类型列出?

来自分类Dev

检查Excel版本中是否支持JavaScript方法或属性

来自分类Dev

Excel VBA检查是否设置了命名范围

来自分类Dev

检查控件是否被锁定-VBA Excel

来自分类Dev

检查是否在tkinter中按下了修饰键

来自分类Dev

如何检查键是否存在于数组数组中?

来自分类Dev

检查Python字典中是否存在键/值对

来自分类Dev

在R中,如何检查列表是否包含特定键?

来自分类Dev

检查多维数组中是否存在特定的数组键-PHP

来自分类Dev

通过NSDate检查值是否存在作为字典中的键

Related 相关文章

热门标签

归档