2016-05-26 2 views
0

Я пытался петля, хотя список объектов в нескольких конкретных листах, для того, чтобы проверить, если список объекты содержат данные, однако это не похоже на работу:Перебора listobjects в нескольких конкретных листах

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

Оператор if всегда будет оценивать значение false. Попробуйте использовать 'ListObject_Reports.DataBodyRange.Rows.Count> 1' – Tom

+0

Вышеуказанное не работает. –

ответ

1

Вы просматриваете листы, а не списки, поэтому вы не можете ссылаться на них в своем цикле for таким образом. Попробуйте использовать

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 
Смежные вопросы