Excel VBA实现非连续行逐段取消隐藏(无需currentStage,支持光标定位)
优化后的VBA代码:激活单元格附近逐段取消隐藏行
直接上优化后的代码,完全移除了currentStage阶段循环逻辑,改成根据光标激活单元格的位置,优先显示附近的隐藏行,每次处理3-4行:
Sub UnhideNearbyRows() Dim activeRow As Integer Dim startRow As Integer Dim endRow As Integer activeRow = ActiveCell.Row ' 从激活行向上查找最近的隐藏行起始位置 startRow = activeRow Do While startRow > 1 And Not Rows(startRow).Hidden startRow = startRow - 1 Loop ' 向上没找到的话,就向下查找 If startRow < 1 Or Not Rows(startRow).Hidden Then startRow = activeRow Do While startRow <= Rows.Count And Not Rows(startRow).Hidden startRow = startRow + 1 Loop End If ' 找到隐藏行后,取消连续3-4行的隐藏 If startRow <= Rows.Count And Rows(startRow).Hidden Then endRow = startRow ' 最多取连续4行隐藏行,或者到非隐藏行截止 Do While endRow <= startRow + 3 And endRow <= Rows.Count And Rows(endRow).Hidden endRow = endRow + 1 Loop endRow = endRow - 1 ' 修正为最后一行隐藏行的行号 Rows(startRow & ":" & endRow).EntireRow.Hidden = False End If End Sub
代码说明
- 先获取当前光标激活单元格的行号,以此为起点查找附近隐藏行
- 优先向上找最近的隐藏行块,找不到再向下找
- 找到隐藏行后,自动识别连续的隐藏行,最多取消4行(如果连续隐藏行不足4行,就取消当前连续块的全部)
- 每次点击按钮只处理激活单元格附近的一段隐藏行,直到所有隐藏行都被显示
内容的提问来源于stack exchange,提问作者Clara Monspiette
相关产品推荐
相关产品推荐

