2013-09-27 150 views
2

我一直無法讓這個宏工作。如果它通過vlookup函數不等於另一個工作表上的相應值,我希望它遍歷一個範圍並使單元格高亮。不過,我不斷收到一個錯誤與此代碼:在for循環內的VBA 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 

下一頁細胞

它保留返回「運行時錯誤‘1004’:無法獲取WorksheetFunction類的VLOOKUP財產」

任何有識之士都非常感謝!

+0

如果vlookup找不到匹配項,則會出現該錯誤。這裏的目標是什麼?您的代碼似乎只是檢查ColC中的值是否與每個查找值的ColD相匹配...... –

回答

2

你得到的是錯誤,因爲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 
0

通常「無法獲得WorksheetFunction的....屬性」出現,因爲傳遞給該函數的參數有問題。

例如,如果你的範圍內的任何單元格包含一個錯誤,它會發生

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