如何在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
相关产品推荐
相关产品推荐

