我正在尝试使用 VBA 删除在 B 列中找到值“X”的每一行。但是,我遇到了三个问题:
- 我无法使用 cells.find 方法让我的 VBA 代码从事件单元格向下移动到下一个单元格 (B3)(请参阅下面的代码)
- 我的代码不会删除在 B 列中找到值“X”的整行
- B 列中的数据量可能会有所不同:今天可能会以 B10 结束,明天可能会以 B100 结束(请参见下面的屏幕截图)
任何帮助将不胜感激。
Sub RemoveRows()
Dim strLookFor As String
Dim strRow As String
Worksheets("Sheet1").Range("B2").Activate
strLookFor = "X"
strRow = Range("B2").Address
Do Until ActiveCell.Value = ""
MsgBox (ActiveCell.Value)
If ActiveCell.Value = strLookFor Then
Rows.Delete (strRow)
End If
strRow = Cells.Find(what:=strLookFor).Address
Loop
MsgBox ("Deleted all rows with value " & strLookFor)
End Sub
最佳答案
使用自动筛选
比范围循环更有效
Sub QuickCull()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("Sheet1")
Set rng1 = ws.Range(ws.[b2], ws.Cells(Rows.Count, "B").End(xlUp))
Application.ScreenUpdating = False
With ActiveSheet
.AutoFilterMode = False
rng1.AutoFilter Field:=1, Criteria1:="X"
rng1.Offset(1, 0).EntireRow.Delete
.AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
关于excel - 根据搜索键删除行VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614997/