2013-04-16 2 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

데이터를 복사하는 줄의 'Range'대신 'DataBodyRange'를 사용하도록 코드를 변경하는 것이 해결책입니다. 도와 주셔서 다시 한 번 감사드립니다! Adam – AdamDynamic

+0

+ 1 좋은 직장 :) –