Next没有在Excel VBA中嵌套循环错误

我想通过检查“新数据”文件中的表来找出在“系统文件”中在单元上运行Vlookup的方法。 但是,如果有#N / A错误,我希望单元格的值不变。 我已经提出了以下,但是,我不断收到“下一个没有For”错误。 是否有可能转义嵌套For Next循环?

tl; dr语义版本:

For i 1 to 10 For j 1 to 3 Something with .Cells(i,j) Set range X = .Find(thing If X = Nothing Then Next j *** <THIS IS WHERE MY ERROR IS THROWN Else -Do Something with X- End if Next j Next i 

我或多或less的实际代码如下:

 Sub Thing() Dim SysWS As Worksheet Dim NewDataWS As Worksheet Dim NDSKUs As Range ' This is set to the first column of the NewDataWS Dim NDMonthsRow As Range ' This is set to the first row of the NewDataWS Dim SKU2look4 As String, Month2look4 As String Dim ifoundtheSKU As Range 'the result of finding SKU2look4 inside of NDSKUs range Dim ifoundtheDate As Range 'the result of finding Month2look4 inside of NDMonthsRow range Dim i As Integer, j As Integer Dim workzone As Range 'The Cell being evaluated For i = 2 To SysWS.UsedRange.Columns.Count For j = 2 To SysWS.UsedRange.Rows.Count Set workzone = SysWS.Cells(j, i) SKU2look4 = SysWS.Cells(j, 1) 'SKUs are along the left column Month2look4 = SysWS.Cells(1, i) 'Dates are along the top row '1-Find the right Date Column for extraction Set ifoundtheDate = NDMonthsRow.Find(What:=Month2look4, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If ifoundtheDate Is Nothing Then Debug.Print (Month2look4 & " -Date NOT Found in New Date File") ******Next j****** Else Debug.Print ("ifoundtheDate:" & ifoundtheDate.Address) End If '2-Find the row Set ifoundtheSKU = NDSKUs.Find(What:=SKU2look4, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If ifoundtheSKU Is Nothing Then Debug.Print (SKU2look4 & " Not Found in the New Data File") *********Next j****** Else Debug.Print ("ifoundtheSKU:" & ifoundtheSKU.Address) End If 'Set the "workzone" cell's value to that of the found row offset by the found column workzone = ifoundtheSKU.Offset(, (ifoundtheDate.Column - 1)) Next j Next i 

当然这些***并不在那里。 任何想法,我怎么能做到这一点? 提前致谢

 For i = 1 to 10 For j = 1 to 3 Something with .Cells(i,j) Set rngX = .Find(thing) If Not rngX Is Nothing Then Set rngY = .Find(thingelse) If Not rngY Is Nothing Then 'something with rngX and rngY End If End if Next j Next i 

使用

  For i=1 to 10 For j=1 to 3 Something with .Cells(i,j) Set range X = .Find(thing If X = Nothing Then Goto Nextj *** <THIS IS WHERE MY ERROR IS THROWN Else -Do Something with X- End if NextJ: Next j Next i 

退出为了终止当前的循环提前(内在你的情况)。