我有一个受保护的Excel工作表,其中包含用于删除行的命令按钮。 用户可以突出显示并选择多行,并通过单击命令按钮将其删除。但我不希望删除第一行(第11行),因为它包含公式和格式。我在命令按钮下面有代码删除。当用户突出显示并从第11行到第40行选择行时,它可正常工作并保护第11行(因为此处活动行为11)。但问题是当用户从工作表按钮突出显示行并单击命令按钮时,它甚至会删除第11行,因为此处的活动行大于11(示例活动行= 40)。请告诉我如何保护第11行不被用户删除,即使他们选择删除也是如此。
Private Sub CommandButton2_Click()
If ActiveCell.Row > 11 Then
ActiveSheet.Unprotect "xxx"
Selection.EntireRow.Delete
ActiveSheet.Protect "xxx", True, True
End If
End Sub
答案 0 :(得分:1)
这是一种方法。检查用户是否选择了第11行
Private Sub CommandButton2_Click()
Dim rng As Range
Dim rw As Variant
'~~> Check if what the user selected is a valid range
If TypeName(Selection) <> "Range" Then
MsgBox "Select a range first."
Exit Sub
End If
Set rng = Selection
'~~> Check if the user has selected Row 11
For Each rw In rng.Rows
If rw.Row = 11 Then
MsgBox "Please do not select Row 11"
Exit Sub
End If
Next rw
ActiveSheet.Unprotect "xxx"
rng.Rows.Delete
ActiveSheet.Protect "xxx", True, True
End Sub