Как отобразить сообщение об ошибке при работе на заблокированном листе - PullRequest
0 голосов
/ 17 июня 2019

У меня есть код, который удаляет значение из заблокированного листа.Всякий раз, когда я запускаю код, отображается сообщение об ошибке

Не удалось удалить метод класса Range

.Как мне подсказать пользователю сообщение типа first unprotect the sheet?

Sub DeleteRow()
    Dim rng As Range

    On Error Resume Next
    With Selection.Cells(1)
        Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange)
        On Error GoTo 0
        If rng Is Nothing Then
            MsgBox "Please select a valid table cell.", vbCritical
        Else
            rng.delete xlShiftUp
        End If
    End With
End Sub

1 Ответ

0 голосов
/ 17 июня 2019

Это будет работать:

Activesheet.ProtectContents сообщит вам, защищен лист или нет.

Sub DeleteRow()

    Dim rng As Range

    On Error Resume Next

    If ActiveSheet.ProtectContents = False Then

        With Selection.Cells(1)
            Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange)
            On Error GoTo 0
            If rng Is Nothing Then
                MsgBox "Please select a valid table cell.", vbCritical
            Else
                rng.Delete xlShiftUp
            End If
        End With

    Else: MsgBox "Unprotect the Sheet First!"

    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...