You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA For循环中多次使用错误处理?解决二次报错中断问题

问题原因及解决方法

你的代码出现二次报错的核心原因有两个:

  • 错误处理语句On Error GoTo SKIPCODE放在了可能触发错误的Worksheets(division).Select之后,第一次错误触发前,后续循环的错误没被提前捕获
  • 触发错误跳转后,未重置错误处理状态,导致后续循环中错误无法被再次捕获

修正后的代码

For Each cell In Workbooks("workbook.xlsm").Sheets("sheet1").Range("P5:P12").Cells
    sheetname = cell.Value
    ' 每次循环前重置错误处理,放在可能出错的代码前
    On Error GoTo SKIPCODE
    Windows("new workbook.xlsx").Activate
    Worksheets(sheetname).Select ' 注:原代码写的是division,推测应为读取到的sheetname,若确为division变量可忽略此提示
    
    {code}

SKIPCODE:
    ' 重置错误状态,确保后续循环能正常捕获错误
    On Error GoTo 0
Next

关键改动说明

  • 将On Error GoTo SKIPCODE移到每次循环的开头、可能触发错误的代码之前,保证每次循环都能提前开启错误捕获
  • 在SKIPCODE:标签后添加On Error GoTo 0,重置错误处理状态,避免错误状态残留导致后续循环无法捕获新错误

内容的提问来源于stack exchange,提问作者Vikas Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:20:33