2013-02-22 5 views
0

Je suis complètement nouveau à VBA et j'apprécierais de l'aide avec quelque chose qui devrait être trivial. Je le code suivant:Passer des collections d'objets en tant que paramètres dans 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 

Les collections ci-dessus contiennent des objets instanciés par une classe I définis. Lorsque j'essaie d'exécuter le code ci-dessus, j'obtiens une erreur d'exécution 424 "Object Required" L'erreur se produit lorsque l'appel à handleBuy a lieu. Qu'est-ce qui me manque ici? Toute aide est grandement appréciée.

+2

Je pense que la question est avec rowCounter. Je ne vous vois pas le définir n'importe où et si vous utilisez Option Explicit, vous devez définir la variable. A part cela, j'ai pu exécuter le code sans problème. – Sorceri

+0

Je viens de lancer votre code - ça marche bien. Est-ce que _actuellement ce code produit l'erreur sur votre machine? Ou avez-vous omis quelque chose de vital? –

+0

Il s'avère que j'ai juste tapé une des variables dans ce sous-programme. Merci pour vos réponses. –

Répondre

1

2 options:

  1. Définir la variable rowCounter; ou
  2. Annuler le Option Explicit

1 est préféré.

1

L'erreur se produit parce que depuis rowCounter n'est pas Dim « ed comme Integer (et en l'absence de Option Explicit) est du type par défaut Variant. Ce qui est Incompatible avec la déclaration Sub handleBuy(ByVal rowNum As Integer

Solution: utiliser Option Explict - cela aidera à prévenir ce type d'erreur Et déclarer Dim rowCounter As Integer

BTW, vous devrait utiliser Long plutôt que Integer

Questions connexes