VBA:单元格编辑模式下宏先执行、Worksheet_Change后触发的问题求助
问题场景
我开发了一款Excel工具,用户输入参数后运行宏,结果会填充到指定单元格。为避免用户修改参数后不运行宏,导致参数与结果错误匹配,我编写了Worksheet_Change事件过程,在参数被修改时自动清除结果字段。
但遇到一个问题:当单元格处于编辑模式时启动宏,宏会先执行完成,之后Worksheet_Change才触发,直接把宏生成的结果清除了。
最简复现代码
工作表事件代码
Private Sub Worksheet_Change(ByVal Target As Range) Debug.Print "Worksheet_Changed trigger" End Sub
测试宏代码
Sub Test() Debug.Print "Sub Test completed" End Sub
调试输出显示,编辑单元格时宏的执行顺序比Worksheet_Change靠前,和预期相反。尝试过用Application.EnableEvents但无效;也试过让代码退出编辑模式,但Worksheet_Change仍会在最后触发。需要找到能在宏运行前退出编辑模式的方法。
临时解决方法
目前无完美解决方案,暂用按钮调度实际宏的方式,让Worksheet_Change先完成触发再执行宏:
Sub Schedule() Application.OnTime Now + TimeSerial(0, 0, 0.5), "Module1.ActualMacro" End Sub Sub ActualMacro() Debug.Print "Actual macro running" End Sub
内容的提问来源于stack exchange,提问作者Kyle Strachan
相关产品推荐
相关产品推荐

