Excel: 如果单元格 returns #N/A 错误则跳过循环

Excel: Skip loop if cell returns #N/A Error

我写了下面的脚本,但在这部分代码上挂断了:

If TargetWb.Sheets("Expenses").Range("F61").Offset(0, i - 1).Value = CVErr(xlErrNA) Then GoTo Skip Else GoTo Continue

我想做什么:如果单元格的值 returns #N/A 作为函数的一部分,我想转到下一个循环。关于如何完成此操作的任何建议?

提前感谢您提供解决方案。也总是对如何更好地构建此代码的建议持开放态度,因为我仍然是初学者。


    Dim filePath As String
    Dim SourceWb As Workbook
    Dim TargetWb As Workbook
    Dim S_Deal As Range
    Dim i As Integer
    
    'SourceWb - Workbook were data is copied from
    'TargetWb - Workbook were data is copied to and links are stored
    
Application.ScreenUpdating = False
    
    Set TargetWb = ThisWorkbook
    filePath = ThisWorkbook.Sheets("Expenses").Range("S4").Value
    Set SourceWb = Workbooks.Open(filePath)

    For i = 1 To 6
   
 If TargetWb.Sheets("Expenses").Range("F61").Offset(0, i - 1).Value = CVErr(xlErrNA) Then GoTo Skip Else GoTo Continue
    
Continue:

    Set S_Deal = TargetWb.Sheets("Expenses").Cells(11, 5 + i)
    SourceWb.ActiveSheet.Range("OPEX_Control").Value = S_Deal.Value
    
    
    TargetWb.Sheets("Expenses").Range("F12:F15").Offset(0, i - 1).Value = SourceWb.ActiveSheet.Range("P9:P12").Value
    TargetWb.Sheets("Expenses").Range("F18:F21").Offset(0, i - 1).Value = SourceWb.ActiveSheet.Range("o14:o17").Value
    TargetWb.Sheets("Expenses").Range("F23:F26").Offset(0, i - 1).Value = SourceWb.ActiveSheet.Range("o19:o22").Value
    TargetWb.Sheets("Expenses").Range("F29").Offset(0, i - 1).Value = SourceWb.ActiveSheet.Range("o25").Value
    
Skip:
    
    Next i


Application.ScreenUpdating = True

End Sub

如果要检查excel函数是否在vba#N/A中return,可以使用如下代码:

If Application.WorksheetFunction.IsNA(Cells(intRow, x)) Then

既然你想要的是执行一段代码除非wb.function不是#N/A,通过重新安排你的If VBA代码应该可以实现你想要的结果。

If Application.WorksheetFunction.IsNA(TargetWb.Sheets("Expenses").Range("F61")) = false then
{your code}
end if

next i

所以当wb函数return#N/A时,不会执行中间的代码,进入下一个循环