2017-06-23 129 views
0

我想設置一個模板,該模板可以根據另一個工作表中的粘貼數據找到數據。VLOOKUP生成運行時錯誤'1004'

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」的錯誤:

無法獲取WorksheetFunction類的VLOOKUP財產。

回答

0

通常,當您在工作表函數上發生該錯誤時,意味着函數本身返回了錯誤。確保你傳遞了正確的值。如果你不能保證你會得到從功能的正確值,那麼你可以嘗試使用上的錯誤,像這樣

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'函數的第二個參數。

希望這會有所幫助!