2011-10-26 1 views
3

매크로를 사용하여 Excel 2003의 필터링 된 목록 범위에서 Copy() 메서드를 사용했으며 반환 된 범위를 가져 와서 행 수를 계산했습니다. 그래서 하나 이상의 행을 복사했는지 확인할 수 있습니다. 그러나 에 '필요한 개체'오류.VBA의 Copy() 메서드에서 반환 된 Range 개체를 설정 하시겠습니까?

은 내가 복사() 메소드는 범위 개체를 반환 마이크로 소프트의 웹 사이트에서 VBA 참조로 이야기하고있다. 그러나이 경우하지에 표시되는 코드에서. 알려 주시기 바랍니다!

감사합니다.

For J = 1 To .ListObjects.Count 
    ' Filter 
    .ListObjects(J).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=CritRange 
    Set CopiedRange = .ListObjects(J).Range.Copy ' Object required error 
    If CopiedRange.Rows.Count > 1 Then 
    {etc...} 
+1

답변에 답변이 있으면 답변으로 게시하고 해결 됨으로 표시해야합니다. 그래서 제 자신과 같은 사람들은 당신의 질문이 해결되었다는 것을 알게 될 것입니다. – Reafidy

+0

나는 그 당시 너무 새로운 멤버 였기 때문에 나는 할 수 없었다. – deed02392

+0

충분히 공정하게! 감사. – Reafidy

답변

0

Excel에서는 Copy() 작업에서 범위 개체를 반환하지 않습니다. 그것을 복사하기 전에 행 수를 계산하지만, 특히 보이는 행에 대해서만 고려하지 않으면 작동하지 않습니다. 따라서 나는 새로운 기능을 쓸 필요 :

Function CountVisibleRows(rg As Range) 
    Dim NumRows As Integer 
    ' Count visible cells in the first column, minus one to account for the header 
    NumRows = rg.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 
    CountVisibleRows = NumRows 
End Function 

난 후 복사하기 전에 범위에서이 테스트를 복사 할 것이다 행의 수를 결정을 (때문에 복사() 메소드를 복사 기본적으로 만 볼 수 행).

관련 문제