【发布时间】:2016-04-12 02:23:22
【问题描述】:
我正在尝试根据我的标准过滤一系列值,有时我可能没有符合我标准的数据。在这种情况下,我不想从过滤后的数据中复制任何数据。如果有过滤数据,我想复制它。
这是我的代码:
With Workbooks(KGRReport).Worksheets(spreadSheetName).Range("A1:I" & lastrowinSpreadSheet)
.AutoFilter Field:=3, Criteria1:=LimitCriteria, Operator:=xlFilterValues 'Do the filtering for Limit
.AutoFilter Field:=9, Criteria1:=UtilizationCriteria, Operator:=xlFilterValues 'Do the filtering for Bank/NonBank
End With
'Clear the template
Workbooks(mainwb).Worksheets("Template").Activate
Workbooks(mainwb).Worksheets("Template").Rows(7 & ":" & Rows.Count).Delete
'Copy the filtered data
Workbooks(KGRReport).Activate
Set myRange = Workbooks(KGRReport).Worksheets(spreadSheetName).Range("B2:H" & lastrowinSpreadSheet).SpecialCells(xlVisible)
For Each myArea In myRange.Areas
For Each rw In myArea.Rows
strFltrdRng = strFltrdRng & rw.Address & ","
Next
Next
strFltrdRng = Left(strFltrdRng, Len(strFltrdRng) - 1)
Set myFltrdRange = Range(strFltrdRng)
myFltrdRange.Copy
strFltrdRng = ""
它给了我一个错误
Set myRange = Workbooks(KGRReport).Worksheets(spreadSheetName).Range("B2:H" & lastrowinSpreadSheet).SpecialCells(xlVisible)
当根本没有数据时,它会返回错误:“未找到单元格”。
尝试过像这篇文章这样的错误处理:1004 Error: No cells were found, easy solution?
但这没有帮助。需要一些有关如何解决此问题的指导。
【问题讨论】:
-
只要使用类似:
If Workbooks(KGRReport).Worksheets(spreadSheetName).Range("B2:H" & lastrowinSpreadSheet).RowHeight Then,如果没有显示,高度为0,这将被视为False(其他所有内容都将被视为True) -
FWIW 链接的问题(以及该问题的链接,因为它是一个骗子)应该提供了解决此问题的可行途径。也就是说,如果您知道有可能抛出错误,则需要处理该错误。我给出了一种避免错误处理的方法,但其他答案基本上与其他问题相同:处理错误。
标签: excel vba autofilter