VLOOKUP生成运行时错误' 1004'

时间:2017-06-23 14:31:55

标签: vba excel-vba do-loops excel

我想设置一个模板,根据另一个工作表中的粘贴数据查找数据。

Private Sub GoNoGo()

Dim i As Integer
Dim OffInt As Integer
Dim Neg As Integer
Neg = -30

Dim Ret As String
Dim I3 As Cell
Dim FindValue As String

Worksheets("BF59520").Activate
Range("AE3").Activate
i = 3
OffInt = 0

Do Until ActiveCell.Offset(0, Neg).Value = ""

    If ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 235, 160) Then
        ActiveCell.Offset(1, 0).Activate
        i = i + 1
    Else
       ActiveCell.Value = Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -18), Worksheets("Go No Go").Range("B2:O180"), 4, False)

        ActiveCell.Offset(1, 0).Activate
        i = i + 1
    End If
        OffInt = OffInt + 1
Loop

End Sub

当循环到达VLOOKUP行时,代码返回运行时错误错误' 1004':

  

无法获取workheetFunction类的VLOOKUP属性。

1 个答案:

答案 0 :(得分:0)

通常,当您在Worksheet函数上获得该错误时,这意味着函数本身已返回错误。确保你传递的是正确的值。如果您不能保证从函数中获得正确的值,那么您可以尝试使用On Error,如此

On Error Resume Next
Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -18), Worksheets("Go No Go").Range("B2:O180"), 4, False)
On Error GoTo 0

或者您可以在评估语句中捕获错误,如此

ActiveCell.Value = Evaluate("=IFERROR(VLOOKUP(" & ActiveCell.Offset(0,-18) & ", 'Go No Go'!B2:O180, 4, FALSE),0)")

当vlookup失败时,第一个将导致ActiveCell没有变化,第二个允许你将默认值设置为'IFERROR'函数的第二个参数。

希望这有帮助!

相关问题