使用Vlookup函数时运行时错误1004

时间:2016-12-14 06:45:07

标签: excel vba excel-vba exception-handling

我试图在假期列表中出现日期时突出显示单元格范围。但是在运行以下代码时,将显示运行时错误1004。我甚至尝试在错误处理程序中处理它;但它不起作用。有人可以帮助我为什么会出现这个错误并解决相同的问题吗?

Sub highlight_cells()
Dim myrange As Range
On Error GoTo myerr:
For i = 1 To 10
Set myrange = Range(Cells(1, i), Cells(10, i))
temp = Application.WorksheetFunction.VLookup(Range(Cells(1, i)), [holidays], 2, False)
If (Application.WorksheetFunction.IsNA(temp)) Then
myrange.Interior.Color = 3
End If
Next i

myerr:
If Err.Number = 1004 Then
MsgBox "vlookup error"
End If
End Sub

4 个答案:

答案 0 :(得分:0)

Range(Cells(1, i))不是有效的范围参考

也许您想参考Cells(1, i)

此外,您可以利用Application VLookup()方法包装返回的变量变量中的可能错误,您可以使用IsError()函数检查该变量,如下所示:

Dim temp As Variant
For i = 1 To 10
    Set myrange = Range(Cells(1, i), Cells(10, i))
    temp = Application.VLookup(Cells(1, i), [holidays], 2, False)
    If Not IsError(temp) Then Cells(1, i).Interior.Color = 3
Next i

答案 1 :(得分:0)

这是一种条件格式化方法,不使用VBA。

选择您的范围>条件格式>新规则>使用公式...

输入此公式

=VLOOKUP($A2,$J$2:$K$6,1,FALSE)

照顾公式中的“$”。这应该突出显示在假期列表中找到的所有单元格。

Conditional Formatting V lookup

答案 2 :(得分:0)

您的代码没问题,它在Excel 2010中有效,您的问题在于VBA错误处理方法。

转到工具 - >选项 - >一般 - >错误捕获 并检查"打破无法解决的错误"

enter image description here

答案 3 :(得分:0)

很抱歉这些时候我指的是vlookup中的第2列。这导致了这个问题。假期列表是单列列表。因此vlookup抛出错误。还有一件事,命名范围就像我输入的那样工作,甚至实际范围也会产生相同的结果。

Sub highlight_cells() Dim myrange As Range

对于i = 1到10

设置myrange = Range(Cells(1,i),Cells(10,i)) MsgBox Cells(1,i) temp = Application.VLookup(Cells(1,i),[holidays],1,False) 如果Not IsError(temp)那么 myrange.Interior.ColorIndex = 3 结束如果

接下来我

End Sub