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