VBA6代码(EXCEL)伟大的工作。升级到Office 2010/VBA7,代码中断。升级VBA 6-> 7的原因错误:如果集合
使用代码从SO:
Determining whether an object is a member of a collection in VBA
Public Function Contains(col As Collection, key As Variant) As Boolean
Dim obj As Variant
On Error GoTo err
Contains = True
obj = col(key)
Exit Function
err:
Contains = False
End Function
我得到运行时错误5:无效的过程调用或参数。
这对我来说没有任何意义,但是因为obj = col(key)
行上出现错误,应该由On Error GoTo err
语句覆盖,但它会停止。
其他如果X存在于收集型解决方案有同样的问题。
而不是修复破损的代码,我真正需要的是能够查看是否已经为一个集合设置了一个记录,如果可以在VBA7中做一些其他(新的)方式,那就可以解决问题(我可以梦想)。
如何解决方案在已批准的答案中提供的问题(循环)中放入的链接中... – 2013-04-26 19:53:18
作为一种临时解决方案,我在前面提供了“On Error Resume Next”收集检查和事情似乎没问题,但这让我感到紧张。 – MECU 2013-04-26 20:12:15
这是侧步进问题,所以不是一个真正的答案,但我更喜欢'Scripting.Dictionary'对象,而不是,那些具有一个内置'.exists()'调用。对于我的许多功能,他们似乎也跑得更快。 – Gaffi 2013-04-26 20:15:58