0

我要编写 VBA 代码来删除某些行(列中包含某些单词)。我有一个在下面。我在删除两个较早删除的行(小计)之间的所有行时遇到问题(*并且作为条件,这只是它们之间的一行,如果更多不删除它们)

你能告诉我有没有办法克服这个问题?如果这个问题含糊不清,请告诉我(因为我是新手)

Sub DeleteRows()
Dim c As Range
Dim SrchRng As Range
Dim SrchStr As String

Set SrchRng = ActiveSheet.Range("F1", ActiveSheet.Range("F10000").End(xlUp))
SrchStr = InputBox("Please Enter A Search String")
Do
    Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
    If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing

End Sub
4

1 回答 1

0

您已经获得了感兴趣的列(在本例中为 F),并且您还提示用户指定要删除的字符串,这听起来像是巧妙地使用该Range.Autofilter方法的完美秘诀。(这是一个 MSDN 链接: http: //msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.autofilter (VS.80).aspx )

假设您正在操作的数据块来自 A:F,您可以编写:

Option Explicit
Sub DeleteRowsWithAutoFilter()

Dim DataRng As Range, DeleteMe As Range
Dim SrchStr As String

'set references up-front
Set DataRng = ActiveSheet.Range("A1", ActiveSheet.Range("F10000").End(xlUp))
SrchStr = InputBox("Please Enter A Search String")

'turn off alerts for delete action
Application.DisplayAlerts = False
DataRng.AutoFilter Field:=6, Criteria1:=SrchStr '<~ apply autofilter
With DataRng
    Set DeleteMe = .Offset(1, 0) '<~ set the delete range
    DeleteMe.Delete
End With
ActiveSheet.AutoFilterMode = False
Application.DisplayAlerts = True

End Sub
于 2014-05-22T20:20:15.803 回答