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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:05:13