使用循环从具有相似名称的多个表中删除表范围中的数据

时间:2014-06-22 21:16:13

标签: excel vba excel-vba

我想设置一个宏来从一组可能动态变化的数据表中的范围中删除数据。例如,电子表格当前包含16个数据表,列为L2_1,L2_2,L2_3 ..... L2_16。如果表中的表数发生变化,我希望宏足够灵活,以便能够扩展或收缩。我还想删除表格中的[L2编号]范围(这是所有表格的相同范围名称)。

还有另一种类型的表格也在表格中递增(" L3L2_1,L3L2_2 ...... L3L2_16)。我希望宏忽略这些表。以下是我的开始,但我收到的是" 1004"清除内容行的错误。

    Sub Summary_II_Clear_Contents()

    '   Clears Summary II Tab
    Dim tbl As ListObject
    i = 1

    For Each tbl In Sheets("Summary II").ListObjects
        If tbl.Name Like "L2_" & i Then
        Sheets("Summary II").Range("L2_&i&[L2 Number]").ClearContents
            i = i + 1
         End If
    Next tbl

    End Sub

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您只需修复 If语句 此外,您需要确定要使用的 For Loop 构造。

如果您决定使用 For Each 构造:

For Each tbl In Sheets("Summary II").ListObjects
    If InStr(tbl.Name, "L2_") = 1 Then
        Sheets("Summary II").Range(tbl.Name & "[L2 Number]").ClearContents
    End If
Next tbl

现在,您还可以使用经典的 For Next 构造:

With Sheets("Summary II")
    For i = 1 To .ListObjects.Count
        If InStr(.ListObjects(i).Name, "L2_") = 1 Then
            .Range(.ListObjects(i).Name & "[L2 Number]").ClearContents
        End If
    Next tbl
End With

请注意,我们合并了 With Clause ,只是为了让它看起来干净。 HTH。