2016-05-26 26 views
0

Ich habe in mehreren spezifischen Blätter obwohl Liste Objekte Schleife versucht, um, wenn die Listenobjekte Daten enthält, um zu überprüfen, scheint es sich jedoch nicht zu funktionieren:Looping durch Listobjects in mehreren spezifischen Blätter

Dim SheetsArray_Reports As Sheets 
Dim ListObject_Reports As ListObject 

Set SheetsArray_Reports = ThisWorkbook.Worksheets(Array(All_CleaningRangeReport.Name, SD_CleaningRangeReport.Name, SC_CleaningRangeReport.Name, Excl_CleaningRangeReport.Name)) 

For Each ListObject_Reports In SheetsArray_Reports 

     If Not ListObject_Reports.DataBodyRange Is Nothing Then 

      ListObject_Reports.DataBodyRange.Delete 

     End If 

Next ListObject_Reports 
+0

Ihre if-Anweisung wird immer zu false ausgewertet. Versuchen Sie es mit 'ListObject_Reports.DataBodyRange.Rows.Count> 1' – Tom

+0

Das obige funktioniert nicht. –

Antwort

1

Sie durchlaufen die Arbeitsblätter und nicht die Listenobjekte, sodass Sie auf diese Weise nicht in Ihrer for Schleife darauf verweisen können. Versuchen Sie mit

Dim SheetsArray_Reports As Sheets 
Dim ws As Worksheet 
Dim ListObject_Reports As ListObject 

Set SheetsArray_Reports = ThisWorkbook.Worksheets(Array(All_CleaningRangeReport.Name, SD_CleaningRangeReport.Name, SC_CleaningRangeReport.Name, Excl_CleaningRangeReport.Name)) 

For Each ws In SheetsArray_Reports 
    ' Use if only 1 listobject per worksheet if more you will have to loop through them with something like: 
     'For Each ListObject_Reports In ws.ListObjects 
     ' 
     'Next ListObject_Reports 
    Set ListObject_Reports = ws.ListObjects(1) 

    If ListObject_Reports.DataBodyRange.Rows.Count > 1 Then 
     ListObject_Reports.DataBodyRange.Delete 
    End If 
Next ListObject_Reports