VBA如何查找首个未隐藏行(需排除A1所在行)
解决方案
你可以直接从第2行开始向下遍历匹配可见行即可,以下是可直接复用的代码:
Dim firstVisibleRow As Long Dim i As Long ' 从第2行开始遍历,排除A1所在行 For i = 2 To Rows.Count If Not Rows(i).Hidden Then firstVisibleRow = i Exit For ' 找到第一个就退出循环,避免不必要的遍历 End If Next i ' 可选:做边界判断,避免所有行都隐藏的情况报错 If firstVisibleRow = 0 Then MsgBox "未找到符合要求的未隐藏行" Else ' 这里写你拿到firstVisibleRow之后的业务逻辑 MsgBox "首个符合要求的未隐藏行是第" & firstVisibleRow & "行" End If
如果你的数据量很大,不想逐行遍历浪费性能,可以用SpecialCells方法实现更高效的查找:
Dim visibleRng As Range Dim firstVisibleRow As Long On Error Resume Next ' 捕获无可见单元格时的报错 ' 定义从A2开始到A列最后一行的查找范围 Set visibleRng = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible) On Error GoTo 0 If Not visibleRng Is Nothing Then firstVisibleRow = visibleRng.Cells(1).Row Else MsgBox "未找到符合要求的未隐藏行" End If
注意:使用SpecialCells方法时如果指定范围内没有可见单元格会触发运行时错误,必须搭配错误捕获语句使用避免程序崩溃。
内容的提问来源于stack exchange,提问作者SQLUser
相关产品推荐
相关产品推荐

