代码给我:应用程序定义或对象定义的错误。
Sub test()
Dim rCell As Range
Set rCell = Rows(1, 0).Offset(2, 0).SpecialCells(xlCellTypeVisible).Cells(1, 1)
If rCell <> "" Then
MsgBox rCell.Value
End If
End Sub
我想知道第二行的单元格中是否有一个值(因为第一行是标题),在过滤某些数据后该值可见。
我正在过滤数据库,大多数情况下,在执行一次过滤后,它将具有所需的数据,但有时仍需要进行其他过滤。
查看我的问题的另一种方法是:如果可见行多于两个,则继续执行过滤程序,否则继续执行宏。
答案 0 :(得分:1)
好的,所以这是获取范围或工作表上可见行的计数的方法:
Function VisibleRowcount() As Long
Dim count As Long
With ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
For i = 1 To .Areas.count
For j = 1 To .Areas(i).Rows.count
count = count + 1
Next j
Next i
End With
VisibleRowcount = count
End Function
由于您真正想要的是在过滤后仍然有x的行数可见的情况下执行更多操作,因此,您将使用此功能来解决问题:
Sub main()
If VisibleRowcount > 2 Then
'your code here
End If
End Sub
请注意,如果过滤器后没有可见的单元格,我的功能将不喜欢您。有时它喜欢返回1,有时是0-但是到目前为止,我的测试在至少仍显示一个单元格的情况下是正确的。
如果您将来要阅读此书,并且希望它处理没有可见单元格的情况,请通过评论让我知道,我将再次讨论:)