Excel:Worksheet_SelectionChange事件中拆分窗格关闭极慢求助
问题:Excel VBA 切换曲目时关闭分窗运行极慢
背景
我做了一个音乐曲目库Excel工作簿,核心功能包括:
- 歌单筛选
- 点击曲目打开对应YouTube视频
- 从"歌单"工作表快速访问内置的50个纯文本和弦表工作表
为了切换曲目时能同步查看和弦表,我用新建窗口垂直分组的方式布局,代码写在Worksheet_SelectionChange事件里,实现方向键切换歌单行时自动加载对应和弦表。代码里加了关闭第二个窗口的逻辑,用On Error Resume Next处理窗口未打开的异常,代码功能正常但不够美观。
工作簿仅600KB,Excel完全能轻松应对,但实际使用时运行极慢——i7笔记本要等近10秒,奇怪的是调试模式下代码执行速度非常快。
疑似问题点
排查后发现,慢的根源在Worksheet_SelectionChange事件里关闭和弦表所在第二个窗格的代码部分,而且这个问题在其他小型工作簿里也会出现。
相关代码片段(问题代码已标记)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 其他逻辑代码... ' 以下为疑似问题代码 On Error Resume Next Windows(2).Close On Error GoTo 0 ' 重新打开分窗并加载对应和弦表的代码... End Sub
附相关截图
- Excel分窗运行界面:歌单工作表与和弦表工作表垂直分屏显示
- MS Office 365版本信息:确认使用最新Office 365订阅版
求各位帮忙分析下为什么关闭窗口的操作在事件里会这么慢,有没有优化方案?
内容的提问来源于stack exchange,提问作者Spreader
相关产品推荐
相关产品推荐

