输入工作簿声明VBA不匹配

时间:2016-05-10 05:47:25

标签: excel vba excel-vba vlookup

尝试从一个工作簿到另一个工作簿的值

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

3 个答案:

答案 0 :(得分:4)

使用Set x = ....时,您正在设置对象。 因此,Set Wkb2 = "..."不起作用,因为您正在分配字符串。 安贝回答了你的问题。它有效,因为WorkBooks("...")为您提供了一个对象

答案 1 :(得分:2)

尝试将公式赋值为

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

一旦您使用Set wkb2 = Workbooks("Workbook2.xls")分配了第二个工作簿,就无法在带引号的字符串中使用 wkb2 ,并且您需要一个工作表以及一个单元格范围。

答案 2 :(得分:0)

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

你想要它

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

确保wkb2也声明了工作簿和工作表。