VBA – 如何删除一个单元格中find一个特定值后的所有20行?

我有一个excel文件,在随机的时间间隔里面遍布着20行无用的信息。 这是完全相同的20行反复重复,所以它始终始于相同的单元格值。 像这样: https : //i.gyazo.com/fdec2c2f6c6244d108e6bd07ad6e5181.png

我需要删除它们出现的整个行,所以我一直在使用这个VBA代码:

Sub DeleteRows() 'Updateby20140314 Dim rng As Range Dim InputRng As Range Dim DeleteRng As Range Dim DeleteStr As String xTitleId = "KutoolsforExcel" Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8) DeleteStr = Application.InputBox("Delete Text", xTitleId, Type:=2) For Each rng In InputRng If rng.Value = DeleteStr Then If DeleteRng Is Nothing Then Set DeleteRng = rng Else Set DeleteRng = Application.Union(DeleteRng, rng) End If End If Next DeleteRng.EntireRow.Delete End Sub 

但它不是很有用,因为我必须为每个文件做20次。 所以,我想知道是否有办法删除第一行后面的所有20个无用的信息(图像上的黄色)的行。 我试图通过在上面的代码的“下一个”之后添加这个来做到这一点:

 Set DeleteRng = DeleteRng.Resize(DeleteRng.Rows.Count + 20) 

但没有工作(运行时错误'1004'应用程序定义或对象定义的错误)。

我有成百上千的其他文件有相同的问题,所以一个代码可以做到这一点真的会节省我一堆时间。

提前致谢

编辑:解决由拱廊下面:

在将其添加到DeleteRng之前(或在此期间)resize。 Application.Union(DeleteRng, rng.Resize(20,1))