使用button删除行,但不在某些行上删除

我一直在放在一起的电子表格,并希望包括一个button来删除行。 在表单顶部有一些单元格,它们是表单function的组成部分,所以我想阻止用户也能够删除这些单元格。 下面是我试图实现每个button的点击的样本。

ActiveSheet.Unprotect Password:="password" If ActiveCell = Range("B21") Then Exit Sub Else Selection.EntireRow.Activate Selection.Delete Shift:=xlUp ActiveSheet.Protect Password:="password" End Sub 

我正在努力争取这个工作,并取得了混合成功。

如果你只是想阻止行10以上的行被删除,那么:

 If ActiveCell.Row < 10 Then Exit Sub ActiveSheet.Unprotect Password:="password" Selection.EntireRow.Delete Shift:=xlUp ActiveSheet.Protect Password:="password" 

但是,这不会考虑用户select多行,所以你也需要考虑这一点。 您也可以检查Selection.Rows.Count > 1 ,如果为true,则退出。

根据您的示例尝试下面的代码(当ActiveCell在“B21”中时不要删除一行:

 ActiveSheet.Unprotect Password:="password" If Intersect(ActiveCell, Range("B21")) Is Nothing Then ' delete the entire row (no need to use select) ActiveCell.EntireRow.Delete Shift:=xlUp End If ActiveSheet.Protect Password:="password"