保护第一行不被删除

时间:2017-06-09 10:17:09

标签: excel excel-vba vba

我有一个受保护的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  

1 个答案:

答案 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