办公软件Excel宏,如何连续跳过错误?on error goto ?错误处理
我想要做一个筛选计数的宏,对表格某列做筛选,然后选中已筛选的部分计数,但如果筛选项目为零,excel则会自动跳出1004错误中断程序,我希望能发现项目为零之后跳到下一段语...
我想要做一个筛选计数的宏,对表格某列做筛选,然后选中已筛选的部分计数,但如果筛选项目为零,excel则会自动跳出1004错误中断程序,我希望能发现项目为零之后跳到下一段语句继续执行,但似乎on error goto 标签 只能使用一次, 第二次错误就跳不出去了,用什么办法能连续使用on error goto?
err.clear语句么?
语句如下:
'计数第一项()
Dim b As Integer
Dim n As Integer 'n在之前定义为总行数-1
Sheets(1).Select
ActiveSheet.AutoFilterMode = False '取消筛选
[a1].AutoFilter 75, "*第一组*" '筛选包含语句第一组的项
Range("bw2", "bw" & n + 1).Select ‘bw列即75列
b = WorksheetFunction.CountIf(Selection, "*第一组*")
Sheets(1).Cells(6, 139) = b '把第一组项数放到单元格
'计算平均时间()
Columns("DS:DS").Select
On Error GoTo second2: '如果之前项数为0,这里开始就会出错,我希望能跳过,但只能跳过一次,后续如果再为0项就无法跳过错误了
Sheets(1).Cells(6, 144) = Round(WorksheetFunction.Subtotal(101, Selection), 2) '计算出平均时长
[a1].AutoFilter 87, "否" '附加条件
Columns("DQ:DQ").Select
Sheets(1).Cells(6, 140) = Round(WorksheetFunction.Subtotal(101, Selection), 2)
'Subtotal101指平均值,分类汇总统计函数,还有其他功能
ActiveSheet.AutoFilterMode = False
[a1].AutoFilter 75, "*长实-深圳-无线*"
[a1].AutoFilter 121, ">10"
Range("dq2", "dq" & n + 1).Select
Sheets(1).Cells(6, 141) = WorksheetFunction.Subtotal(102, Selection) '长实-深圳-无线故障历时大于10的工单数
second2:
'计数第二项
Dim c As Integer 'n在之前定义为总行数-1
Sheets(1).Select
ActiveSheet.AutoFilterMode = False '取消筛选
[a1].AutoFilter 75, "*第二组*" '筛选包含语句第一组的项
Range("bw2", "bw" & n + 1).Select ‘bw列即75列
c = WorksheetFunction.CountIf(Selection, "*第一组*")
Sheets(1).Cells(6, 139) = c '把第二组项数放到单元格
'计算平均时间()
Columns("DS:DS").Select
On Error GoTo third3: '如果之前项数为0,这里开始就会出错,我希望能跳过,但只能跳过一次,后续如果再为0项就无法跳过错误了
其中b、c在后续语句中会用到,这里不提 展开
err.clear语句么?
语句如下:
'计数第一项()
Dim b As Integer
Dim n As Integer 'n在之前定义为总行数-1
Sheets(1).Select
ActiveSheet.AutoFilterMode = False '取消筛选
[a1].AutoFilter 75, "*第一组*" '筛选包含语句第一组的项
Range("bw2", "bw" & n + 1).Select ‘bw列即75列
b = WorksheetFunction.CountIf(Selection, "*第一组*")
Sheets(1).Cells(6, 139) = b '把第一组项数放到单元格
'计算平均时间()
Columns("DS:DS").Select
On Error GoTo second2: '如果之前项数为0,这里开始就会出错,我希望能跳过,但只能跳过一次,后续如果再为0项就无法跳过错误了
Sheets(1).Cells(6, 144) = Round(WorksheetFunction.Subtotal(101, Selection), 2) '计算出平均时长
[a1].AutoFilter 87, "否" '附加条件
Columns("DQ:DQ").Select
Sheets(1).Cells(6, 140) = Round(WorksheetFunction.Subtotal(101, Selection), 2)
'Subtotal101指平均值,分类汇总统计函数,还有其他功能
ActiveSheet.AutoFilterMode = False
[a1].AutoFilter 75, "*长实-深圳-无线*"
[a1].AutoFilter 121, ">10"
Range("dq2", "dq" & n + 1).Select
Sheets(1).Cells(6, 141) = WorksheetFunction.Subtotal(102, Selection) '长实-深圳-无线故障历时大于10的工单数
second2:
'计数第二项
Dim c As Integer 'n在之前定义为总行数-1
Sheets(1).Select
ActiveSheet.AutoFilterMode = False '取消筛选
[a1].AutoFilter 75, "*第二组*" '筛选包含语句第一组的项
Range("bw2", "bw" & n + 1).Select ‘bw列即75列
c = WorksheetFunction.CountIf(Selection, "*第一组*")
Sheets(1).Cells(6, 139) = c '把第二组项数放到单元格
'计算平均时间()
Columns("DS:DS").Select
On Error GoTo third3: '如果之前项数为0,这里开始就会出错,我希望能跳过,但只能跳过一次,后续如果再为0项就无法跳过错误了
其中b、c在后续语句中会用到,这里不提 展开
1个回答
展开全部
用 On Error Resume Next '忽略该行代码之后出现的运行时错误
on error goto遇到一次就会跳出程序
你用我给你的代码替换再试试,采纳
on error goto遇到一次就会跳出程序
你用我给你的代码替换再试试,采纳
更多追问追答
追问
早就用过了,在第一个错误加入这句,也没用。 你是说只要在最前面写上on error resume next之后,整个程序的错误都会被忽略吗?
------------------------------16:22 补充————————————
我去掉了所有含goto的语句及其标签,似乎可以忽略所有错误硬是执行下去了,但这样无法调试错误啊
追答
你总共就这么同句,就不能一次检查完了再把这语句加上去啊,就算是goto也一样,遇到一次错误就直接跳出来了,不是同理...???
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询