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
上面的代码有什么问题?我在设置结果的行上收到错误。 错误是:
运行时错误1004:应用程序或对象定义错误
我要做的是在CustAR
表格中寻找价值。 Excel文件有两个工作表,包括CustAR
工作表。
“结果”旁边的行是在Excel中有效的公式。
答案 0 :(得分:0)
我相信你要么没有标注result
是什么。
OR
你有某种对象,因此行必须是:
Set result = Application...
答案 1 :(得分:0)
VLOOKUP正在搜索一个字符串,但似乎你没有提供一个字符串 - 所有数字也许?
答案 2 :(得分:0)
我很惊讶您收到了代码中的错误消息,因为我原以为它会返回:
。但是,工作表公式的等效项可能如下所示:
result = Application.VLookup(CurrStr, Sheets("CustAR").Range("A2:A2499"), 1, False)
If IsError(result) Then result = "NotFound"
使用VLookup作为Application对象的属性,而不是作为Worksheetfunction对象的属性,导致result
包含错误代码(在本例中为错误2042)而不是导致VBA运行时错误。另一种方法是在原始代码中测试VBA运行时错误。
答案 3 :(得分:-1)
我修改了下面的代码并且它有效。 我删除了WorkSheetFunction并处理了结果值。
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
On Error Resume Next
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
End Sub