2017-04-09 1 views
0

나는 Excel 테이블을 가지고 있으며 Excel의 데이터 삭제 및 데이터 삽입을 자동화하려고합니다. 내가 같은 테이블이 매우 느립니다 내 엑셀 충돌로 (약 11 000 행) 데이터를 삽입 할 때Excel VBA를 통해 테이블에 데이터 삽입

나는,

Sub Macro2() 
    Application.ScreenUpdating = False 
    Sheets("Report").Select 
    ActiveSheet.ListObjects("Report").HeaderRowRange.Select 
    'Remove the filters if one exists. 
    If ActiveSheet.FilterMode Then 
    Selection.AutoFilter 
    End If 

    With Worksheets("Report").ListObjects("Engagement_report") 
     .DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.Count - 1, .DataBodyRange.Columns.Count).Rows.Delete 
     .DataBodyRange.Rows(1).SpecialCells(xlCellTypeConstants).ClearContents 
    End With 

End Sub 

그러나 내 테이블에서 내 데이터를 제거하려면이 VBA 코드를 사용하고 . resize 함수가 모든 행을 삭제하고 따라서 데이터를 다시 삽입 할 때 범위가 다시 느려지므로 느리게 처리되는지 확실하지 않습니다.

아무에게도 도움이 될만한 제안이 있습니까?

당신의 도움이

+0

당신이'Delete'를 사용해야하는 경우 끝? 'ClearContents'를 사용하고 있지 않습니까? 처음에 여러 개의 '선택'을 제거 할 수도 있습니다. –

+0

워크 시트에는 어떤 것이 있습니까? 다른 시트로 옮기고 ListObject를 사용하지 않고 전용 11K 행 전용 워크 시트를 유지하십시오. – Variatus

+0

안녕하세요 @Variatus,이 특정 시트에 수식이 있습니다.이 수식을 사용하여 다양한 비즈니스 조건 및 기준을 평가할 때이 전체 데이터를 테이블 범위로 변환했습니다. – Adam

답변

0
Public Sub addDataToTable(ByVal strTableName As String, _ 
    ByVal strData As String, ByVal col As Integer) 

ActiveSheet.Table(strTableName).Select 
If strTableName.Rows.Count = 1 Then 
    strTableName(Row, col).Value = strData 
Else 
    strTable(LastRow, col).Value = strData 
End If 
End Sub 

NB를 감사합니다 :이 당신에게 도움이 될 것이라 생각합니다.

+0

이것은 나를 위해 일했습니다! – Adam

+0

그건 내 기쁨 아드리안, 제발 계속 부탁드립니다 ☺ –

0

이 샘플 코드는 여러 행을 삽입하는 데 도움이됩니다.

서브 InsrtRw2() 범위 같이 FST 범위로 희미한 C, 범위로서 C2

집합 C = Cells.Find ("시험"MatchCase = 거짓, _ 바라 = xlWhole, 보이는 : = xlValues)

하지 C는 아무것도 다시 그런 C (2) .EntireRow.Resize (10)를 취소하려면

설정 FST = C

없는 경우 :

설정 C2 = Cells.FindNext (C)

하지 C2는 아무것도 그런

c2.Address < 만약> c.Address _ 그리고 c2.Address <> fst.Address 그런

없는 경우 C2 (2) .EntireRow.Resize (10)를 취소하려면

집합 C = C2

고토 다시

최종면 끝 최종 하위

경우

관련 문제