Excel 使用VBA宏中的某些条件删除行,但公式不';t更新
我试图使用某些条件删除VBA中的行。VBA第一次工作,但第二次使用原始值,不更新。例如,如果我使用“Sprint 37”运行代码,它将在第一次运行,但是如果我将值更改为“Sprint 38”,代码仍然会删除“Sprint 37”中的行。此外,我还希望在代码中使用用户定义的编号。任何帮助都会很好。谢谢Excel 使用VBA宏中的某些条件删除行,但公式不';t更新,excel,vba,Excel,Vba,我试图使用某些条件删除VBA中的行。VBA第一次工作,但第二次使用原始值,不更新。例如,如果我使用“Sprint 37”运行代码,它将在第一次运行,但是如果我将值更改为“Sprint 38”,代码仍然会删除“Sprint 37”中的行。此外,我还希望在代码中使用用户定义的编号。任何帮助都会很好。谢谢 Sub Macro4() Worksheets("Master").Activate Range(Selection, Selection.End(xlToRight)).Select
Sub Macro4()
Worksheets("Master").Activate
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
For Each Cell In Selection
If Cell.Value = "Sprint 38" Then
Rows(Cell.Row).ClearContents
End If
Next
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub
假设您的表格从单元格
A1
开始
。选择)
联合
(单元格集合)联合李>
如果它已经删除了行Sprint 37
,它如何再次删除它们?如果是,这可能是由于您的选择
使用造成的。您的意思是删除了相同的行号吗?还不清楚“用户定义的数字”是什么意思。就像用户输入数字的输入框一样?您可以共享其他信息吗?你的桌子是什么形状的?表格是否从A1
开始,第一行是标题行?这是一张二维桌子吗?样本数据可能会有所帮助。我这样问是因为与选择
和xlToRight
/xlDown
相比,有更好的方法来定义范围。您的代码工作正常,但您必须位于尝试处理的左上角单元格中。你能在不使用选择的情况下找到数据的第一行和最后一行吗?@Urderboy我总是在运行代码之前创建一个包含所有数据的新工作表,这样所有sprint数据都在那里。表格从A1开始,是二维的。我使用选择的唯一原因是表的大小可以由未来的用户更改。如果有更好的方法来选择数据的动态范围,那就太好了。谢谢
Sub Jeeped()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim lr As Long, lc As Long
Dim iCell As Range, DeleteMe As Range
lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
lc = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
For Each iCell In ws.Range(ws.Cells(2, 1), ws.Cells(lr, lc))
If iCell = "Spring 37" Then
If Not DeleteMe Is Nothing Then
Set DeleteMe = Union(iCell, DeleteMe)
Else
Set DeleteMe = iCell
End If
End If
Next iCell
If Not DeleteMe Is Nothing Then DeleteMe.EntireRow.Delete
End Sub