错误处理什么都不做

时间:2018-04-12 09:13:31

标签: excel vba excel-vba

我有一个宏对列D:BC执行求和,但是在这些列之间散布,有些列不需要sumif,并且在搜索范围内找不到它们的列标题,从而导致错误。

发生错误是否有任何方法使其保留之前的值?或者让它什么都不做?

如果我使用On Error Resume Next,它将占用我的最后一个值并使用该值填充范围,直到下一个非错误值:

Sub Sum()
Dim result As Variant, n&, u&
n = Worksheets("Sum Worksheet").Cells(Rows.Count, 1).End(xlUp).Row - 1
u = Worksheets("Sum Worksheet").Cells(2, Columns.Count).End(xlToLeft).Column
On Error Resume Next
For J = 4 To u
For i = 2 To n
    result = Application.WorksheetFunction.SumIf(Sheets("Raw Data").Range("BS:BS"), Sheets("Sum Worksheet").Cells(i + 1, 1).Value, Application.WorksheetFunction.Index(Sheets("Raw Data").Range("A:NK"), 1, Application.WorksheetFunction.Match(Sheets("Sum Worksheet").Cells(2, J).Value, Sheets("Raw Data").Range("A1:NK1"), 0)))
    Sheets("Sum Worksheet").Cells(i + 1, J) = result
Next i
Next J
End Sub

提前致谢。

1 个答案:

答案 0 :(得分:3)

很少有情况,On Error Resume Next可以留在代码中,因此删除它总是一个好主意。因此,删除On Error Resume Next,然后将嵌套循环编辑为:

For J = 4 To u
    For i = 2 To n
        result = Application.WorksheetFunction.SumIf(Sheets("Raw Data")...
        If IsError(result) Then
            'write your ideas
            'or leave it empty, it will do nothing
        Else
            Sheets("Sum Worksheet").Cells(i + 1, J) = result
        End If
    Next i
Next J