在for循环中的VBA中的Vlookup

时间:2013-09-27 18:09:11

标签: excel vba excel-vba vlookup

我一直无法让这个宏工作。我希望它循环遍历一个范围,并通过vlookup函数突出显示一个单元格,如果它不等于另一个工作表上的相应值。但我一直在使用此代码收到错误:

For Each cell In Worksheets("Sheet1").Range("A2:A1000")
    If cell <> Application.WorksheetFunction.VLookup(cell, Worksheets("Sheet2").Range("C3:E128"), 3, 0) Then
        cell.Interior.Color = 65535
    Else
    End If
Next cell

它不断返回

  

运行时错误'1004':无法获取WorksheetFunction类的VLookup属性

非常感谢任何见解!!

3 个答案:

答案 0 :(得分:3)

您收到该错误,因为VLookup无法找到并返回任何内容。有各种方法来处理它。这是一个例子。

Sub Sample()
    Dim cell As Range
    Dim Ret

    For Each cell In Worksheets("Sheet1").Range("A2:A1000")
        On Error Resume Next
        Ret = Application.WorksheetFunction.VLookup(cell, _
              Worksheets("Sheet2").Range("C3:E128"), 3, 0)
        On Error GoTo 0

        If Ret <> "" Then
            If cell <> Ret Then
                cell.Interior.Color = 65535
            End If
            Ret = ""
        End If
    Next
End Sub

答案 1 :(得分:1)

试试此代码

WorksheetFunction.Vlookup v/s Application.Vlookup

On Error Resume Next

For Each cell In Worksheets("Sheet1").Range("A2:A1000")
    Result = Application.VLookup(cell, Worksheets("Sheet2").Range("C3:E128"), 3, 0)

    If Result = "Error 2042" Then
        'nothing found
    ElseIf cell <> Result Then
        cell.Interior.Color = 65535
    End If

Next

On Error GoTo 0

答案 2 :(得分:0)

通常&#34;无法获取WorksheetFunction的&....属性#34;之所以出现是因为传递给函数的参数有问题。

例如,如果您的范围内的任何单元格包含错误,则会发生错误