2017-06-29 2 views
0

Ich muss 2 Arbeitsmappe Objekte verwenden, um eine zweite Sub in meinem Makro auszuführen. Es scheint jedoch immer einen ByRef-Fehler für das erste Blatt zu geben, das ich eingerichtet habe. Ich habe unten ein Beispiel vorgestellt. Definiere ich das Objekt falsch?ByRef Fehler beim Versuch, 2 Arbeitsmappen als Objekte zu verwenden

Sub test1() 
Dim inputwb, outputwb As Workbook 

'sets current workbook as inputwb 
Set inputwb = ThisWorkbook '<---this sheet causes the ByRef error 

'open 2nd workbook 
Workbooks.Open (filepath & "\" & filename) 
'sets 2nd workbook as outputwb 
Set outputwb = ActiveWorkbook 

'call next sub 
Call test2(inputwb, outputwb) 

End Sub 

Sub test2(wb1 As Workbook, wb2 As Workbook) 

MsgBox ("done!") 

End Sub 
+2

Sie sollten erklären, ändern 'inputwb' ein' Workbook' eher als ein 'Variant' zu sein, das heißt' Wie Arbeitsmappe Dim inputwb, Ausgabewb als Arbeitsmappe'. – YowE3K

+1

Verlassen Sie sich nicht auf ActiveWorkbook. Verwenden Sie 'Set outputwb = Workbooks.Open (Dateipfad &" \ "& Dateiname)' – ThunderFrame

Antwort

3

Wenn Sie Dim eine Variable ohne As type Klausel wird eingestellt, ein Variant standardmäßig zu sein. Der Versuch, einen Variant als Parameter an eine Funktion/Subroutine zu übergeben, die Workbook erwartet, führt zu einem Fehler.

Deshalb ist ihre Dim Aussage von

Dim inputwb, outputwb As Workbook 

zu

Dim inputwb As Workbook, outputwb As Workbook 
Verwandte Themen