2013-04-16 84 views
4

我想将表中的可见行复制到同一工作簿中的单独工作表中。我有点新使用'ListObject'方法来处理表格(由于几个原因,直接引用表格是我的模块其余部分更好的方法)Excel VBA - 仅复制和粘贴可见表格行

以下是我的最佳尝试,当我运行它时,我得到''Sheets("Sheet8").Range("A1").Paste'线上的运行时错误'438'',我一直在网上搜索一个小时,试图弄清楚我做错了什么,用它来表示它将复制的数据粘贴到另一个表/表中?任何援助将不胜感激!

感谢,

亚当

Private Sub CopyVisibleAreaOfTable(ByVal TableName As String) 

Const FN_NAME As String = "CopyVisibleAreaOfTable" 
On Error GoTo catch 

    Dim TargetTable As ListObject 
    Dim NumberOfAreas As Long 

    Set TargetTable = Sheets("Adj1").ListObjects(TableName) 

    ' Check that there are fewer than 8192 seperate areas 
    With TargetTable.ListColumns(1).Range 
     NumberOfAreas = .SpecialCells(xlCellTypeVisible).Areas(1).Cells.Count 
     Debug.Print NumberOfAreas 
    End With 

    If NumberOfAreas = 0 Then 
     'Do something to trigger an error message 
    Else 

     TargetTable.Range.SpecialCells(xlCellTypeVisible).Copy 
     Sheets("Sheet8").Range("A1").Paste 
     Application.CutCopyMode = False 

    End If 

finally: 
    Exit Sub 

catch: 
    Call ErrorReport(FN_NAME, True, Err.Number, Err.Description, "Table Name: " & TableName) 
    Resume finally 

End Sub 
+2

'.PasteSpecial xlPasteAll'代替'.Paste' –

+0

此担任好,非常感谢! – AdamDynamic

回答

7

指定目的地为.Copy方法的一部分:使用

TargetTable.Range.SpecialCells(xlCellTypeVisible).Copy _ 
    Destination:=Sheets("Sheet8").Range("A1") 
+0

这工作完美,非常感谢!作为一个便笺,有没有简单的方法,以便它只粘贴源表中的数据,不包括头文件? – AdamDynamic

+1

忽略这一点,解决方法是将代码更改为在复制数据的行中使用'DataBodyRange'而不是'Range'。再次感谢你的帮助! Adam – AdamDynamic

+0

+ 1 Good Work :) –