【发布时间】:2021-03-13 06:46:36
【问题描述】:
我遇到了一个问题,即我的 vba 宏卡住并且 excel 冻结。我已将其缩小到 do until 循环,但似乎无法通过它。我尝试过添加强制等待时间,看看是否有帮助,但无济于事。
宏的目的是删除特定标题下的所有行,直到只剩下一个值为“Net Change”的行。因此,在下面的示例中,仅保留标题和“净变化”行。一如既往地感谢任何帮助。
编辑 1:运行此宏时,工作表中的所有其他行都需要保持不变。我的思考过程是从数组中找到标题并删除它下面不需要的行并继续下一个标题。我还需要查看其他包含信息的标题。
Sub Delete_Rows_NotNetChange()
Dim deleteNotNetChange As Variant
Dim sr As Range
Dim fr As Range
With ActiveSheet
Set sr = ActiveSheet.Range("A:A")
Application.ScreenUpdating = False
deleteNotNetChange = Array("4008 - Tenant Paid Trash Fee", "4015 - Guardian Water (Mulberry)", "6003 - Leasing Fee (3rd Party)", _
"6277 - Property Cleaning", "6403 - Water", "6408 - Trash and Recycling", "6515 - Parking Garage", "6612 - Property Manager Salary", _
"6622 - Workman's Comp Insurance", "6633 - Coffee Bar / Machine Supplies", "6639 - Telephone Service")
For Each Header In deleteNotNetChange
On Error Resume Next
Range(Cells.Find(Header).Address).Select
ActiveCell.Offset(1, 0).Select
Do Until InStr(1, ActiveCell.Value, "Net Change") > 0
On Error Resume Next
ActiveCell.EntireRow.Delete
Loop
Next Header
Application.ScreenUpdating = True
End With
End Sub
【问题讨论】:
-
我可以推荐一种更好的删除行的方法吗?使用不使用循环的Autofilter。如果您想使用循环,请参阅Union 方法。
-
请注意,
6633 - Coffee Bar / Machine Supplies中斜线和 Machine 之间有一个双空格。