VBA - 如何在单元格中找到一个特定值后删除所有20行?

时间:2016-07-04 06:56:54

标签: excel vba excel-vba

我有一个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行以及无用的信息(图像上的黄色)。我尝试通过在" next"之后添加这个来做到这一点。在上面的代码:

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

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

我有数百个具有相同问题的其他文件,因此可以做到这一点的代码真的会为我节省大量时间。

提前致谢

编辑:由arcadeprecinct解决:

  

在将其添加到DeleteRng之前(或期间)进行调整大小。   Application.Union(DeleteRng, rng.Resize(20,1))

0 个答案:

没有答案