VBA Worksheet_Change触发时频繁出现Code execution has been interrupted错误求助
解决VBA运行"Code execution has been interrupted"错误
问题核心原因
你的代码在Worksheet_Change事件中调用WeldCalc_Click时频繁触发中断,主要源于两个冲突点:
WeldCalc_Click修改单元格会再次触发Worksheet_Change事件,形成递归触发的冲突GoalSeek执行过程中,Excel后台计算或事件触发逻辑会和当前代码执行流程产生干扰
具体修复方案
1. 禁用事件防止递归触发
在调用WeldCalc_Click前后关闭事件触发,避免修改单元格时重复触发Worksheet_Change:
Private Sub Worksheet_Change(ByVal Target As Range) ' 先判断目标单元格范围,减少无意义执行 If Not Intersect(Target, Range("C36,C39:C41,C43:C44")) Is Nothing Then If Range("C34") = "DWB" Then ' 禁用事件,避免修改单元格时再次触发Change事件 Application.EnableEvents = False WeldCalc_Click ' 执行完成后恢复事件触发 Application.EnableEvents = True End If End If End Sub
2. 优化WeldCalc_Click代码
去掉不必要的Select和ActiveCell操作,直接操作单元格对象,减少界面交互带来的不稳定:
Private Sub WeldCalc_Click() ' 直接赋值,无需选中单元格 Range("C428").FormulaR1C1 = "10" Range("R502").GoalSeek Goal:=0, ChangingCell:=Range("C428") ActiveWindow.ScrollRow = 1 End Sub
额外排查方向
- 检查Excel是否加载了第三方插件,部分插件会后台干扰宏执行
- 确认Excel信任中心的宏设置为"启用所有宏",避免权限限制引发的中断
内容的提问来源于stack exchange,提问作者StructEng
相关产品推荐
相关产品推荐

