0

リストオブジェクトにデータが含まれているかどうかを確認するために、複数の特定のシートでリストオブジェクトをループしようとしましたが、うまくいかないようです:

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
4

1 に答える 1

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
于 2016-05-26T10:35:39.497 に答える