2016-04-16 18 views
0

Ich versuche, ein Objekt an ein neues Sub zu übergeben, aber weiterhin einen ByRef Mismatch-Fehler zu treffen.VBA ByRef Error Übergabe eines Klassenobjekts an einen Sub

Ich habe erklärt mein Objekt als:

Dim targetWorkbook 
Set targetWorkbook = New CWorkbooks 

ich meine Unter Aufruf unter Verwendung von:

checkbook targetWorkbook 

Und mein Unter gesetzt wie:

Sub checkbook(targetWorkbook As CWorkbooks) 

'Checking if passthrough is working 

End Sub 

Irgendwelche Hilfe wird geschätzt, meine Typen sind ausgerichtet und alles, also bin ich mir nicht sicher, warum das passiert.

Danke!

+1

'TargetWorkbook' muss auf Modulebene deklariert werden, sonst wird es in' checkbook' nicht erfasst. Es sieht nicht so aus, als würden Sie es auf der Modulebene einstellen –

Antwort

0

Ich konnte Ihr Problem mit dem Compiler duplizieren. Das folgende übergibt den Compiler und wird ausgeführt. Sie haben TargetWorkbook als Variant deklariert und dann auf CWorkbooks gesetzt - das funktioniert, aber nicht, wenn es an das Sub-Objekt übergeben wird.

Sub main() 
    Dim TargetWorkbook As CWorkbooks 
    Set TargetWorkbook = New CWorkbooks 
    checkbook TargetWorkbook 
End Sub 
Sub checkbook(ByRef TargetWorkbook As CWorkbooks) 

'Checking if passthrough is working 

End Sub 
+0

Perfekt, danke. –