【发布时间】:2019-09-30 16:23:46
【问题描述】:
我正在尝试使用某些条件删除 VBA 中的行。 VBA 第一次工作,但第二次它采用原始值并且不更新。例如,如果我使用“Sprint 37”运行代码,它将第一次运行,但如果我将值更改为“Sprint 38”,代码仍会从“Sprint 37”中删除行。另外,我还想在代码中使用用户定义的数字。任何帮助都会很棒。谢谢。
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
【问题讨论】:
-
如果它已经删除了行
Sprint 37,它如何再次删除它们?如果是这样,这可能是由于您的Selection使用了您的意思是删除了相同的行号吗?还不清楚“用户定义的数字”是什么意思。像一个供用户输入数字的输入框? -
你能分享其他信息吗?你的桌子是什么形状的?表格是否从
A1开始,第一行是标题行?是二维表吗?样本数据可能会有所帮助。我问是因为与Selection和xlToRight/xlDown相比,有更好的方法来定义范围 -
您的代码工作正常,但您必须位于您要处理的最左上角的单元格中。你能不使用选择找到数据的第一行和最后一行吗?
-
@urdearboy 我总是在运行代码之前创建一个包含所有数据的新工作表,以便所有 sprint 数据都在那里。该表从 A1 开始并且是二维的。我使用选择的唯一原因是表的大小可以由未来的用户更改。如果有更好的方法来选择数据的动态范围,那就太好了。谢谢。