如何从VBA中查找.net ArrayList中的文字数?
net运行时通过mscorlib.dll向VBA(和其他COM客户端)公开。理论上,这意味着VBA程序员可以使用.net类 我使用了一个ArrayList进行排序,并试图调用其他方法,但对于IndexOf,我遇到了一个问题。参数不需要文字,它需要一个对象。我想一个带框的整数可能会起作用,但也失败了 那么,如何从VBA中查找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
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。好的,为了进一步研究,我考虑了第二个问题。接受这个,对不起。我希望你知道的更多。我会看看是否能找到更好的解释,如果能找到,我会更新。