Excel 更改VBA函数以删除行
我有下面的VBA函数,它将查找输入框中键入的信息,并删除具有该值的每一行 如何将其更改为删除除您输入的值之外的所有行。示例I输入123。我希望它删除所有行,除了B列中带有123的单元格Excel 更改VBA函数以删除行,excel,vba,Excel,Vba,我有下面的VBA函数,它将查找输入框中键入的信息,并删除具有该值的每一行 如何将其更改为删除除您输入的值之外的所有行。示例I输入123。我希望它删除所有行,除了B列中带有123的单元格 Sub DeleteRows() Dim c As Range Dim SrchRng As Range Dim SrchStr As String Set SrchRng = ActiveSheet.Range("B1", ActiveSheet.Range("B4343").
Sub DeleteRows()
Dim c As Range
Dim SrchRng As Range
Dim SrchStr As String
Set SrchRng = ActiveSheet.Range("B1", ActiveSheet.Range("B4343").End(xlUp))
SrchStr = InputBox("Please Enter Value")
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
好的,也许有更好的方法可以做到这一点,但是我创建了一个临时工作表,复制与搜索匹配的行,清除工作表中的所有行,最后复制回匹配的行,然后删除临时工作表:
Sub DeleteRows()
Dim c As Range, b As Range, SrchRng As Range, SrchStr As String, MasterSheet As Worksheet, TempSheet As Worksheet
Set MasterSheet = ActiveSheet
Set SrchRng = ActiveSheet.Range("A1", ActiveSheet.Range("A4343").End(xlUp))
SrchStr = InputBox("Please Enter Value")
Worksheets.Add
Set TempSheet = ActiveSheet
MasterSheet.Select
Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
Set b = c
Do
If Not c Is Nothing Then
c.EntireRow.Copy
TempSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Set c = SrchRng.FindNext(After:=c)
If c.Address = b.Address Then Exit Do
Loop While Not c Is Nothing
Range("A2:A" & Rows.Count).EntireRow.ClearContents
TempSheet.Range("A2:A" & TempSheet.Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
ActiveSheet.Range("A2:A" & TempSheet.Range("A" & Rows.Count).End(xlUp).Row).PasteSpecial xlPasteAll
Application.DisplayAlerts = False
TempSheet.Delete
Application.DisplayAlerts = True
End Sub
希望有帮助
我开始尝试从搜索结果中一次填充一个数组,但没有循环,但效果不好,很遗憾,我已经没有多余的时间来进一步探索这个问题。我的想法是尝试一次性从结果填充一个数组,然后选择所有行减去联接数组中的任何行,然后删除。不确定这有多可能,但如果你有时间的话,也许可以探索一下
我的测试数据使用A列,您需要更改B列的一些部分