【问题标题】:How do I delete multiple row ranges simultaneously for all excel sheets?如何同时删除所有 Excel 工作表的多个行范围?
【发布时间】:2019-11-15 15:19:07
【问题描述】:

我有一个包含大约 50 张工作表的 excel 文件,我需要删除这些行范围: 57-62、113-118、169-174等我需要这样做,因为有不连续的行。我的意思是我有来自行(1-56)的数据,然后我有污染我的数据的单词(113-118),然后清除数据,依此类推。所以我想同时删除所有excel表的多个行范围。

我正在尝试使用此代码:

Sub WorksheetLoop1()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.Range("57:62").EntireRow.Delete
    Next ws

End Sub
Sub WorksheetLoop2()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.Range("113:118").EntireRow.Delete
    Next ws

End Sub

但是当我运行第一个代码( Sub WorksheeyLoop1() )时出现错误,然后运行下一个。这 范围明显从113-118变为107-112。我不想要那个。我想为每个 excel 表同时运行所有代码(同时消除多个行范围),因此我不必更改每个代码的行范围。 .您能否建议使用 VBA 代码来执行此操作?

提前致谢!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    删除多行部分时,首先从最高的行号开始,然后向下工作,这样您的行就不会受到班次的影响。这样的事情应该可以解决您的问题。

     Sub WorksheetLoop()
        Dim ws As Worksheet
    
        For Each ws In ActiveWorkbook.Worksheets
            ws.Range("169:174").EntireRow.Delete
            ws.Range("113:118").EntireRow.Delete
            ws.Range("57:62").EntireRow.Delete
        Next ws
        End Sub
    

    【讨论】:

    • 请注意,这会按顺序删除它们,而不是真正立即按要求删除。只需使用一行 ws.Range("57:62,113:118,169:174").EntireRow.Delete 即可真正立即删除它们,而不是按顺序删除它们。请注意,此语法的长度限制为 255 个字符。 真的立即删除它们的另一种替代方法是先使用Application.Union method,然后立即删除统一范围。
    • @Pᴇʜ 谢谢,正是我要找的。​​span>
    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多