VBA检查过滤表是否为空

时间:2016-07-08 16:04:52

标签: excel excel-vba vba

我想检查这个过滤的表是否为空,否则当表没有数据时它最终会复制整个列。但是,当我这样做时,我得到一个错误,因为specialCells是空的。我想知道是否有办法解决这个问题。

numberRows = Range("Table13[Store '#]").SpecialCells(xlCellTypeVisible)
Selection.Copy
Sheets("Style-store report").Select
Cells(7, (3 + ((i - 4) * 3))).Select
ActiveSheet.Paste

2 个答案:

答案 0 :(得分:1)

试试这个:

Dim rng As Range

'ignore any error if there are no visible rows...
On Error Resume Next
Set rng = Range("Table13[Store '#]").SpecialCells(xlCellTypeVisible)
On Error Goto 0 'stop ignoring errors

If Not rng Is Nothing Then
    rng.Copy
    Sheets("Style-store report").Select
    Cells(7, (3 + ((i - 4) * 3))).Select
    ActiveSheet.Paste
End If

答案 1 :(得分:0)

您可以做的是检查表格的可见行数,包括标题,这样,如果没有可见行,您可以避免特殊单元格为0的错误并获得至少计数为 1。

numberRows = ActiveSheet.ListObjects("Table13").Range.SpecialCells(xlCellTypeVisible).Rows.Count-1
if numberRows>0 then 
    Selection.Copy
    Sheets("Style-store report").Select
    Cells(7, (3 + ((i - 4) * 3))).Select
    ActiveSheet.Paste
End If