2013-02-22 79 views
0

我對VBA來說是全新的,對於某些應該是微不足道的東西我會很感激。 我有以下代碼:在vba中傳遞對象的集合作爲參數

Sub sub1() 
Dim buys As Collection 
Dim sells As Collection 
Set buys = New Collection 
Set sells = New Collection 


handleBuy rowCounter, buys, sells 

End Sub 




Sub handleBuy(ByVal rowNum As Integer, ByRef listBuys As Collection, ByRef listSells As Collection) 
'do something here with the collections 

End Sub 

上述集合包含對象由I類定義實例化。 當我嘗試運行上面的代碼時,我得到一個運行時錯誤424「Object Required」 錯誤發生在調用handleBuy的地方。 我在這裏錯過了什麼? 任何幫助,不勝感激。

+2

我認爲這個問題是與rowCounter。我沒有看到你在任何地方定義它,如果你使用Option Explicit,那麼你需要定義變量。除此之外,我能夠毫無問題地運行代碼。 – Sorceri 2013-02-22 22:13:07

+0

我剛剛運行你的代碼 - 它工作正常。 _exactly this_code是否會在您的機器上產生錯誤?或者你遺漏了一些至關重要的東西? – 2013-02-22 22:13:24

+0

事實證明,我只是輸入了該子程序中的一個變量。 感謝您的回覆。 – 2013-02-22 22:58:26

回答

1

2個選擇:

  1. 定義rowCounter變量;或
  2. 卸下Option Explicit

1是優選的。發生

1

此錯誤的原因,因爲rowCounter不是Dim「ED作爲Integer(和在沒有Option Explicit)是默認的類型Variant的。這是不相容與申報Sub handleBuy(ByVal rowNum As Integer

解決方法:使用Option Explict - 這將有助於防止這種類型的錯誤 和申報Dim rowCounter As Integer

順便說一句,你應該使用Long,而不是Integer

相關問題