vba-出错时如何转到循环中的下一个交互
我有下面的代码,当在Vlookup公式中发现错误时,我不能跳到下一个交互(I)。它给我一个错误“编译错误子或函数未定义” 例如,如果Vlookup公式在第二次交互(i=2)中给出错误,则代码应跳过下一行代码并转到下一次交互(i=3)vba-出错时如何转到循环中的下一个交互,vba,for-loop,error-handling,Vba,For Loop,Error Handling,我有下面的代码,当在Vlookup公式中发现错误时,我不能跳到下一个交互(I)。它给我一个错误“编译错误子或函数未定义” 例如,如果Vlookup公式在第二次交互(i=2)中给出错误,则代码应跳过下一行代码并转到下一次交互(i=3) 我将在下一次错误恢复时使用: For i = 1 To 10: If Range("A" & i).Value = "" Then Else On Error Resume Next datavalue = Applic
我将在下一次错误恢复时使用
:
For i = 1 To 10:
If Range("A" & i).Value = "" Then
Else
On Error Resume Next
datavalue = Application.WorksheetFunction.VLookup(Sheets("DataManipulation").Range("A" & i), Sheets("ExtractQ1").Range("A1:G1048576"), 4, False)
If Err = 0 Then
Sheets("DataManipulation").Range("B" & i).Value = datavalue
End If
On Error Goto 0 ' Reactivate normal error reporting
End If
Next i
我将在下一次错误恢复时使用:
For i = 1 To 10:
If Range("A" & i).Value = "" Then
Else
On Error Resume Next
datavalue = Application.WorksheetFunction.VLookup(Sheets("DataManipulation").Range("A" & i), Sheets("ExtractQ1").Range("A1:G1048576"), 4, False)
If Err = 0 Then
Sheets("DataManipulation").Range("B" & i).Value = datavalue
End If
On Error Goto 0 ' Reactivate normal error reporting
End If
Next i
您可以利用Application.VLookUp并检查其返回值是否为错误:
dim dataValue As Variant
For i = 1 To 10
If Range("A" & i).Value <> "" Then
dataValue = Application.VLookup(Sheets("DataManipulation").Range("A" & i), Sheets("ExtractQ1").Range("A1:G1048576"), 4, False)
If Not IsError(dataValue) Then Sheets("DataManipulation").Range("B" & i).Value = dataValue
End If
Next i
dim数据值作为变量
对于i=1到10
如果范围(“A”&i).Value为“”,则
数据值=Application.VLookup(表(“数据操纵”).Range(“A”和i),表(“ExtractQ1”).Range(“A1:G1048576”),4,False)
如果不是IsError(dataValue),则工作表(“DataManipulation”).范围(“B”和“i”).值=dataValue
如果结束
接下来我
您可以利用Application.VLookUp并检查其返回值是否为错误:
dim dataValue As Variant
For i = 1 To 10
If Range("A" & i).Value <> "" Then
dataValue = Application.VLookup(Sheets("DataManipulation").Range("A" & i), Sheets("ExtractQ1").Range("A1:G1048576"), 4, False)
If Not IsError(dataValue) Then Sheets("DataManipulation").Range("B" & i).Value = dataValue
End If
Next i
dim数据值作为变量
对于i=1到10
如果范围(“A”&i).Value为“”,则
数据值=Application.VLookup(表(“数据操纵”).Range(“A”和i),表(“ExtractQ1”).Range(“A1:G1048576”),4,False)
如果不是IsError(dataValue),则工作表(“DataManipulation”).范围(“B”和“i”).值=dataValue
如果结束
接下来我
如果将数据值设置为变量
,则可以使用iError(datavalue)
存储并测试它是否存在错误,但您需要使用Application.vlookup()
而不是Application.worksheetfunction.vlookup()
,以便错误不会破坏代码。但是,我的任何注释都与您收到的错误不匹配。此外,请检查这两个工作表/范围(查找值和查找表)是否都存在。查看是否可以最小化查找表的范围,因为现在您似乎正在检查至少100万个单元格。如果您将datavalue设置为变量
,则可以使用iError(datavalue)
——存储并测试它是否存在错误,但您需要使用Application.vlookup()
而不是Application.worksheetfunction.vlookup()
,这样错误就不会破坏代码。但是,我的任何注释都与您收到的错误不匹配。此外,请检查这两个工作表/范围(查找值和查找表)是否都存在。看看是否可以最小化查找表的范围,因为现在您似乎正在检查至少100万个单元格。