Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba-出错时如何转到循环中的下一个交互_Vba_For Loop_Error Handling - Fatal编程技术网

vba-出错时如何转到循环中的下一个交互

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

我有下面的代码,当在Vlookup公式中发现错误时,我不能跳到下一个交互(I)。它给我一个错误“编译错误子或函数未定义”

例如,如果Vlookup公式在第二次交互(i=2)中给出错误,则代码应跳过下一行代码并转到下一次交互(i=3)


我将在下一次错误恢复时使用

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万个单元格。