运行时错误1004。需要从同一Excel文件中的其他工作表中获取值

运行时错误1004。需要从同一Excel文件中的其他工作表中获取值,excel,vba,excel-formula,vlookup,worksheet-function,Excel,Vba,Excel Formula,Vlookup,Worksheet Function,上面的代码有什么问题?我在设置结果的行上得到错误。 错误是: 运行时错误1004:应用程序或对象定义错误 我想做的是在CustAR表中查找值。Excel文件有两个工作表,包括CustARsheet “结果”旁边的一行是Excel中使用的公式。我相信您没有标注结果是什么 或 但是,作为某种对象,行需要: Sub UpdateFormula() Dim CurrStr As String Dim EndRow As Long On Error GoTo 0 End

上面的代码有什么问题?我在设置结果的行上得到错误。 错误是:

运行时错误1004:应用程序或对象定义错误

我想做的是在
CustAR
表中查找值。Excel文件有两个工作表,包括
CustAR
sheet


“结果”旁边的一行是Excel中使用的公式。

我相信您没有标注结果是什么

但是,作为某种对象,行需要:

Sub UpdateFormula()

    Dim CurrStr As String
    Dim EndRow As Long
    On Error GoTo 0

    EndRow = Range("A" & Rows.Count).End(xlUp).Row
    BaseStr = UCase(Range("A2").Value)

    Application.ScreenUpdating = False
    For iter = 4332 To EndRow
        CurrStr = UCase(Range("A" & iter).Value)
        result = Application.WorksheetFunction.VLookup(CurrStr, Sheets("CustAR").Range("A2:A2499"), 1, False)

        '=IF(ISERROR(VLOOKUP(A2, CustAR!$A$2:$A2499, 1, FALSE)),"NotFound",VLOOKUP(A2, CustAR!$A$2:$A2499, 1, FALSE))

    Next iter

    Application.ScreenUpdating = True

End Sub

VLOOKUP正在搜索字符串,但您似乎没有提供要查找的字符串-可能是所有数字?

我很惊讶您在代码中收到了错误消息,因为我原以为它会返回:

。但是,工作表公式的等效项可能如下所示:

Set result = Application...

将VLookup用作应用程序对象的属性,而不是工作表函数对象的属性,会导致
result
包含错误代码(在本例中为错误2042),而不是导致VBA运行时错误。另一种方法是在原始代码中测试VBA运行时错误。

我修改了代码,如下所示,它成功了。 我删除了WorkSheetFunction并处理了结果值

result = Application.VLookup(CurrStr, Sheets("CustAR").Range("A2:A2499"), 1, False)
If IsError(result) Then result = "NotFound"
出错时继续下一步

Sub UpdateFormula()

Dim CurrStr As String
Dim EndRow As Long
On Error GoTo 0

EndRow = Range("A" & Rows.Count).End(xlUp).Row
BaseStr = UCase(Range("A2").Value)

Application.ScreenUpdating = False
For iter = 4332 To EndRow
端接头

    result = Application.VLookup(CLng(CurrStr), shAR.Range("A2:A2499"), 1, False) '.WorksheetFunction

    If result = "Error 2042" Then
        result = "NotFound"
    Else
        result = result
    End If

    Cells(iter, 2).Value = result
    On Error GoTo 0
    '=IF(ISERROR(VLOOKUP(A2, CustAR!$A$2:$A2499, 1, FALSE)),"NotFound",VLOOKUP(A2, CustAR!$A$2:$A2499, 1, FALSE))

Next iter

Application.ScreenUpdating = True