在VBA中使用vlookup的iferror函数

问题描述 投票:0回答:1

我正在尝试使用vlookup函数来搜索单独工作簿中的多个工作表中的值。我试图使用vlookup的iferror函数,但我没有正确格式化它。

Sub CommandButton1_Click()

Dim item As String
    item = 8

Dim brange, rbrange, jrange, cdrange, cprange As range
    Set brange = Workbooks("Library_Database.xlsx")_
                 .Worksheets("BOOKS").range("A2:H51")
    Set rbrange = Workbooks("Library_Database.xlsx")_
                  .Worksheets("REFERENCE BOOKS").range("A2:H51")
    Set jrange = Workbooks("Library_Database.xlsx")_
                 .Worksheets("JOURNALS").range("A2:H51")
    Set cdrange = Workbooks("Library_Database.xlsx")_
                  .Worksheets("CDS").range("A2:H51")
    Set cprange = Workbooks("Library_Database.xlsx")_
                  .Worksheets("CONFERENCE PROCEEDINGS").range("A2:H51")

Dim title As String
    title = IfError(VLookup(item, brange, 2, False), _
            IfError(VLookup(item, rbrange, 2, False), _
            IfError(VLookup(item, jrange, 2, False), _
            IfError(VLookup(item, cdrange, 2, False), _
            IfError(VLookup(item, cprange, 2, False), "")))))

End Sub

请帮忙!!!

excel-vba vba excel
1个回答
0
投票

试试这个。使用WorksheetFunction时需要使用Iferror,你需要使用Application.VLookup(在这里阅读:http://dailydoseofexcel.com/archives/2004/09/24/the-worksheetfunction-method/)。 此外VBA VLookup对数据类型很敏感,因此当你定义item as string时它将无法工作。相反,你应该使用VariantDim item As Variant

您还需要将这些范围定义为Range。使用当前代码,您只需将cprange定义为实际范围。 请改用:Dim brange As Range, rbrange As Range, jrange As Range, cdrange As Range, cprange As Range

title = Application.WorksheetFunction.IfError(Application.VLookup(item, brange, 2, False), _
Application.WorksheetFunction.IfError(Application.VLookup(item, rbrange, 2, False), _
Application.WorksheetFunction.IfError(Application.VLookup(item, jrange, 2, False), _
Application.WorksheetFunction.IfError(Application.VLookup(item, cdrange, 2, False), _
Application.WorksheetFunction.IfError(Application.VLookup(item, cprange, 2, False), "")))))  

一般来说,使用qazxsw poi是一种好习惯。将它放在模块的绝对第一行(程序外)。

© www.soinside.com 2019 - 2024. All rights reserved.