创建Excel宏以根据工作表中选定的单元格删除行
我已经创建了一个宏,但是它并没有真正起作用,因为行在删除过程中实际上发生了变化。用户可以选择表格中的任意单元格。运行宏时,只删除属于选定单元格的行。以下是我到目前为止的收获:创建Excel宏以根据工作表中选定的单元格删除行,excel,vba,Excel,Vba,我已经创建了一个宏,但是它并没有真正起作用,因为行在删除过程中实际上发生了变化。用户可以选择表格中的任意单元格。运行宏时,只删除属于选定单元格的行。以下是我到目前为止的收获: Sub DeleteSelectedRows() Dim Cell As Range With Sheet1 For Each Cell In Selection .Range(Cell.Address).EntireRow.Delete Next Cell End With End Sub 任何帮助都将
Sub DeleteSelectedRows()
Dim Cell As Range
With Sheet1
For Each Cell In Selection
.Range(Cell.Address).EntireRow.Delete
Next Cell
End With
End Sub
任何帮助都将不胜感激。在某些(可能很少)情况下,用户可以按住ctrl键并单击以选择非连续范围。此代码将考虑这种可能性,同时仍然只删除实际选定的行:
Sub DeleteSelectedRows()
Dim rArea As Range
For Each rArea In Selection.Areas
rArea.EntireRow.Delete
Next rArea
End Sub
在某些(可能很少)情况下,用户可以按住ctrl键并单击以选择非连续范围。此代码将考虑这种可能性,同时仍然只删除实际选定的行:
Sub DeleteSelectedRows()
Dim rArea As Range
For Each rArea In Selection.Areas
rArea.EntireRow.Delete
Next rArea
End Sub
修改集合时,不要对每个循环使用
,对
循环使用更简单的,从最后一行索引(或列索引)开始,向后到第一个索引
确保将循环设置为Step-1
向后。之所以需要向后,是因为在Excel中,删除行/列时,其余行/列会向上/向左移动,因此在第一次编辑后,所有后续索引可能都会出错
Dim rng as Range
Set rng = Selection
Dim firstRow as Integer
Dim lastRow as Integer
firstRow = rng.Row
lastRow = rng.Rows(rng.Rows.Count).Row
Dim i as Integer
For i = lastRow to firstRow Step -1
Call ActiveSheet.Rows(i).Delete()
Next i
修改集合时,不要对每个
循环使用,对
循环使用更简单的,从最后一行索引(或列索引)开始,向后到第一个索引
确保将循环设置为Step-1
向后。之所以需要向后,是因为在Excel中,删除行/列时,其余行/列会向上/向左移动,因此在第一次编辑后,所有后续索引可能都会出错
Dim rng as Range
Set rng = Selection
Dim firstRow as Integer
Dim lastRow as Integer
firstRow = rng.Row
lastRow = rng.Rows(rng.Rows.Count).Row
Dim i as Integer
For i = lastRow to firstRow Step -1
Call ActiveSheet.Rows(i).Delete()
Next i
您只需要Selection.EntireRow.Delete
无需循环。您只需要Selection.EntireRow.Delete
无需循环。感谢您,这比Selection.area在用户高度多行时工作得更好。非常感谢当用户高度多行时,这比Selection.area工作得更好。非常感谢