同一Worksheet_Change中行隐藏语句相互覆盖问题求助
解决独立下拉菜单控制行隐藏的问题
问题核心是原代码每次操作下拉时都会显示所有行,导致另一组的隐藏设置被覆盖。要让两组下拉独立生效,只需分别重置各自控制的行范围,而非全局重置所有行:
修改后的VBA代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 关闭事件触发,避免循环调用 Application.EnableEvents = False If Target.Address = "$A$11" Then ' 仅重置A11控制的行范围(12-36行) Range("12:36").EntireRow.Hidden = False Select Case UCase(Target.Value) Case "INDIVIDUAL" Range("24:36").EntireRow.Hidden = True Case "4-TIER" Range("12:24").EntireRow.Hidden = True End Select End If If Target.Address = "$A$47" Then ' 仅重置A47控制的行范围(48-52行) Range("48:52").EntireRow.Hidden = False Select Case UCase(Target.Value) Case "COMPOSITE" Range("48:51").EntireRow.Hidden = True Case "AGE-BANDED" Range("52:52").EntireRow.Hidden = True End Select End If ' 恢复事件触发 Application.EnableEvents = True End Sub
关键改动说明:
- 移除全局的
Cells.EntireRow.Hidden = False,替换为仅重置对应下拉控制的行范围:- A11控制12-36行,操作A11时只重置这部分行的显示状态
- A47控制48-52行,操作A47时只重置这部分行的显示状态
- 添加
Application.EnableEvents = False/True,防止修改行隐藏状态时再次触发Worksheet_Change事件,避免不必要的循环
内容的提问来源于stack exchange,提问作者aleyoop
相关产品推荐
相关产品推荐

