Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从VBA中查找.net ArrayList中的文字数?_.net_Vba_Arraylist_Com_Com Interop - Fatal编程技术网

如何从VBA中查找.net ArrayList中的文字数?

如何从VBA中查找.net ArrayList中的文字数?,.net,vba,arraylist,com,com-interop,.net,Vba,Arraylist,Com,Com Interop,net运行时通过mscorlib.dll向VBA(和其他COM客户端)公开。理论上,这意味着VBA程序员可以使用.net类 我使用了一个ArrayList进行排序,并试图调用其他方法,但对于IndexOf,我遇到了一个问题。参数不需要文字,它需要一个对象。我想一个带框的整数可能会起作用,但也失败了 那么,如何从VBA中查找ArrayList中的文字数呢 Sub Test() Dim obj As Object Set obj = CreateObject("System.Coll

net运行时通过mscorlib.dll向VBA(和其他COM客户端)公开。理论上,这意味着VBA程序员可以使用.net类

我使用了一个ArrayList进行排序,并试图调用其他方法,但对于IndexOf,我遇到了一个问题。参数不需要文字,它需要一个对象。我想一个带框的整数可能会起作用,但也失败了

那么,如何从VBA中查找ArrayList中的文字数呢

Sub Test()
    Dim obj As Object
    Set obj = CreateObject("System.Collections.ArrayList")
    obj.Add 4
    obj.Add 8
    obj.Add 12
    obj.Add 16
    obj.Add 20
    Debug.Assert obj.Count() = 5
    Debug.Assert obj.Item(2) = 12

    '* try a literal
    Debug.Print obj.IndexOf(12) 'ERRORS err.Description=Invalid procedure call or argument

    '* try a boxed integer
    Dim boxedInteger As mscorlib.Int32
    boxedInteger.m_value = 12

    Debug.Print obj.IndexOf(boxedInteger) 'ERRORS err.Description=Invalid procedure call or argument

End Sub
添加参数0

Debug.Print obj.IndexOf(12, 0)

属性
.IndexOf
表示一个 ArrayList中的项

第一个参数是您要查找的值,第二个参数是 要检查值是否存在的位置


上面的链接定义是,第二个参数行为在之后是,而实际上它是从开始的。网站作者正在更新以反映这一点。就第二个参数而言,这与重载方法一致:

返回范围内第一次出现的从零开始的索引 ArrayList中从指定索引扩展到 最后一个元素

例如,
Debug.Print obj.IndexOf(4,0)
将正确返回
0

我对一些涉及这种行为的文档很感兴趣,因为很明显,对象不是作为第一个agment传递的。我还没有找到。

好的,首先谢谢。第二,我现在很困惑,因为我知道它们超载了,我想调用第二个超载,需要调用IndexOf_2(),我以前看过那个网站。我恐怕不能给出技术上的详细信息。我只知道之前我必须使用position的第二个参数,0将从0开始,尽管它在该链接中表示after。例如,obj.IndexOf(4,0)将给出0。好的,为了进一步研究,我考虑了第二个问题。接受这个,对不起。我希望你知道的更多。我会看看是否能找到更好的解释,如果能找到,我会更新。