2016-04-16 11 views
0

オブジェクトを新しいサブに渡そうとしていますが、ByRefの不一致エラーが発生し続けています。VBA ByRefエラークラスオブジェクトをサブに渡す

私は私の物のように宣言した:

Dim targetWorkbook 
Set targetWorkbook = New CWorkbooks 

私が使用して自分のサブを呼んでいる:

checkbook targetWorkbook 

そして、私のサブのように設定されている:

Sub checkbook(targetWorkbook As CWorkbooks) 

'Checking if passthrough is working 

End Sub 

どれでも助けていただきありがとうございます、私のタイプは整列しているので、私はなぜこれが発生しているのか分かりません。

ありがとうございます!

+1

'TargetWorkbook'はモジュールレベルで宣言する必要があります。それ以外の場合は' checkbook'で範囲外になります。それはあなたがモジュールレベルでそれを設定しているようには見えません –

答えて

0

コンパイラで問題を再現できました。以下はコンパイラをパスして実行されます。あなたはTargetWorkbookをVariantとして宣言してから、それをCWorkbookに設定しました。これは動作しますが、サブに渡されたときは動作しません。

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

パーフェクト、ありがとう。 –

関連する問題