【发布时间】:2015-10-21 12:26:11
【问题描述】:
我对一个范围进行一些过滤,并复制过滤后的范围
myRange.SpecialCells(xlCellTypeVisible).Copy
一旦过滤器过滤掉我得到的所有案例
错误 1004 未找到单元格
我正在寻找一种方法来检查(没有On Error)过滤范围是否为空。
我已经尝试使用lastRow = .Cells(.Rows.Count, ColumnName).End(xlUp).Row 设置范围并检查if lastRow > 0,但通过这种方式,我还计算了过滤(或隐藏)的行内容。
我也试过
Sub test()
Dim rngStart As Range
Dim rngFiltered As Range
Set rngStart = Sheets(1).Range("A1:A6")
Set rngFiltered = rngStart.SpecialCells(xlCellTypeVisible).Select
If rngFiltered.Rows.Count = 0 Then
MsgBox ("No Cases")
Else
MsgBox ("Found Cases")
End If
End Sub
但我在Set rngFiltered 行中也收到错误“未找到单元格”。
我没有标题行,因为过滤器非常复杂,以至于我在没有使用.Sort 函数的情况下对其进行了编程
【问题讨论】:
-
如果您进行过滤,应该始终有一行可见 - 标题行。您可以使用它来测试是否有不止一行可见 - 然后在复制之前将大小调整为少 1 行并偏移 1。
-
嗨!不幸的是,我没有标题行,因为过滤器非常复杂,以至于我在没有使用 .Sort 函数的情况下对其进行了编程。
-
那么它不是过滤器,它是手动隐藏行的负载。过滤器总是需要一个标题行。在这种情况下,您的代码应该能够确定它未隐藏的行数。
On Error有什么问题? -
如何确定有多少行未隐藏?如果 rngStart.Rows.SpecialCells(xlCellTypeVisible).Count = 0 仍然给我上面提到的错误。我试图避免 On Error,因为我不想在代码中跳来跳去,只需要一个值来检查。胸围我刚刚写了一个函数来为我执行此操作,但出现错误。
-
使用
On Error Resume Next,将可见单元格分配给Range变量,然后On Error Goto 0,然后测试范围是否为Nothing。由于您尚未发布隐藏行的代码,因此很难提出其他方法。