gpt4 book ai didi

vba - 什么都不做的错误处理

转载 作者:行者123 更新时间:2023-12-04 21:53:27 26 4
gpt4 key购买 nike

我有一个宏对 D:BC 列执行 sumif,但散布在这些列之间,有些列不需要 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

提前致谢。

最佳答案

在极少数情况下,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

关于vba - 什么都不做的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49792576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com