2016-05-10 9 views
0

auf Werte aus einer Arbeitsmappe Der Versuch, auf einen anderenTyp passt nicht zur Deklaration Arbeitsmappe VBA

Sub CopyValues() 

    'Current Workbook 1 
    Dim B As Worksheet: Set bun = Sheets("Workbook1Sheet1") 

    'Since Workbook 2 is open 
    'Getting a type mismatch error on this line, please note the workbook is open 
    Dim wkb2 As Workbook: Set wkb2 = "Workbook2.xls" 


    Dim x As Integer 
    x = 3 
    B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" 

End Sub 
+2

'Set wkb2 = Workbooks ("Workbook2")' – Ambie

+0

Dank einer Tonne für die schnelle Antwort :) –

+0

Auch denke ich, das '' bun' sollte sein B' in 'Dim B als Arbeitsblatt: Stellen Sie bun = Sheets ("Workbook1Sheet1") '. Ich würde empfehlen, dass Sie "Option Explicit" auf Ihrem Code hinzufügen –

Antwort

2

wie die Formel Zuordnung versuchen,

B.Range("E" & x).Formula = "=vlookup(D" & x & ", [Workbook2.xls]Sheet1!$D:$F, 3, false)" 

Sobald Sie die zweite Arbeitsmappe mit Set wkb2 = Workbooks("Workbook2.xls") zugewiesen haben Sie nicht verwenden können wkb2 innerhalb einer Zeichenfolge in Anführungszeichen und Sie benötigen ein Arbeitsblatt sowie einen Zellbereich.

4

Wenn Sie Set x = .... verwenden, setzen Sie ein Objekt. So Set Wkb2 = "..." funktioniert nicht, weil Sie eine Zeichenfolge zuweisen. Ambie beantwortete Ihre Frage. Es funktioniert, weil WorkBooks("...") gibt Ihnen ein Objekt

0
B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" 

Damit Sie es

B.Range("E"&x).Value = "=vlookup(D3,'" & wkb2 & "'A!$D:$F,3,0)" 

Sicherzustellen wkb2 erklärt die Arbeitsmappe und das Blatt auch sein wollen.

Verwandte Themen