Worksheet_Change事件触发时Excel异常关闭问题求助
问题背景
设备为HP I5、8GB内存笔记本,Windows 10系统,使用Excel 2007。通过按钮执行Message_Age宏正常,但绑定Worksheet_Change事件监测E3单元格变更时,Excel无提示直接关闭;甚至空的Worksheet_Change事件过程也会导致崩溃。
测试代码:
- 模块1宏:
Sub Message_Age() If Sheets("Sheet1").Range("E3") >= 18 Then MsgBox "Hello " & Sheets("Sheet1").Range("D3") Else MsgBox "You are a minor " & Sheets("Sheet1").Range("D3") End If End Sub - 工作表事件代码:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$3" Then Call Message_Age End If End Sub - 空事件代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' ' End Sub
解决方法
修复Excel程序
打开Excel,点击左上角Office按钮→Excel选项→资源→诊断,运行「Microsoft Office诊断」排查程序损坏;若无效,到控制面板→程序和功能→找到Microsoft Office 2007→右键选择「更改」→选「修复」完成安装修复。禁用所有加载项
加载项冲突是常见崩溃原因:打开Excel→Office按钮→Excel选项→加载项→底部「管理」下拉选「COM加载项」→点击「转到」→取消所有加载项勾选→确定后重启Excel测试。重建VBA工程
原工作簿的VBA工程可能损坏,新建空白工作簿,复制原Sheet1内容,重新编写宏和事件代码。同时规范事件代码写法(避免潜在循环触发,虽空事件也崩溃,但规范写法可排除其他问题):Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$E$3" Then Call Message_Age End If Application.EnableEvents = True End Sub更新兼容性补丁
Excel 2007在Windows 10上存在兼容性问题,安装Office 2007最新Service Pack(SP3),并将Windows 10更新至最新版本,修复系统与软件的兼容性漏洞。安全模式测试
按住Ctrl键双击Excel图标,弹出提示后点击「是」进入安全模式。若安全模式下事件正常运行,说明是加载项或模板导致的崩溃,可逐一排查加载项恢复使用。
内容的提问来源于stack exchange,提问作者Cristian Vildosola

