带有行隐藏/显示宏的工作表单元格选择错位问题咨询
问题根因
选中位置偏移是Excel行隐藏/显示操作后未正确刷新视图坐标缓存导致的已知bug:宏修改行显隐状态后未触发视图重绘,Excel会沿用行隐藏状态下的坐标映射计算点击位置,因此会出现固定偏移量的错位。
修复方案
- 方案1:修改现有宏代码,增加视图刷新逻辑,修正后代码如下:
Sub EUCheck_Click() Application.ScreenUpdating = False ' 可将ActiveSheet替换为指定工作表名称,例如 Sheets("数据统计"),避免误操作其他工作表 With ActiveSheet If .Range("EU_Tick").Value = "True" Then .Rows("54:60").EntireRow.Hidden = False Else .Rows("54:60").EntireRow.Hidden = True End If End With ' 强制刷新屏幕坐标缓存,消除偏移问题 Application.ScreenRefresh Application.ScreenUpdating = True End Sub
- 方案2:若修改代码后问题仍然存在,调整勾选框的属性配置:
- 右键点击对应勾选框,选择「设置控件格式」→「属性」
- 勾选「大小固定,位置不随单元格改变」,避免行显隐时控件坐标偏移带动点击坐标计算错误
- 排查提示:如果工作表内存在多个控制行/列显隐的勾选框宏,所有宏代码末尾都需要添加
Application.ScreenRefresh语句,避免其他宏触发同样的坐标缓存问题。
内容的提问来源于stack exchange,提问作者Alexander Doran
相关产品推荐
相关产品推荐

