Excel 2013 Workbook_BeforeSave создает ошибку в Excel 2016 - PullRequest
0 голосов
/ 30 августа 2018

Этот макрос работал в Excel 2013, но теперь, когда я обновился до 2016 года, он больше не работает. Он предназначен для блокировки ячеек на нескольких листах в книге, если они были заполнены.

Private Sub Workbook_BeforeSave()

    'Resume to next line if any error occurs
    On Error Resume Next

    Dim WS_Count As Integer
    Dim I As Integer
    Dim Cell As Range

    'Set WS_Count equal to the number of worksheets in the active workbook.
    WS_Count = ActiveWorkbook.Worksheets.Count

    'loop through all of the Worksheets
    For I = 1 To WS_Count
        With ActiveWorkbook.Worksheets(I)
             'first of all unprotect the entire sheet and unlock all cells
            .Unprotect Password:="open"
            .Cells.Locked = False
             'Now search for non blank cells and lock them
             'unlock blank cells
            For Each Cell In ActiveWorkbook.Worksheets(I).UsedRange
                If Cell.Value > "" Then
                    Cell.Locked = True
                Else
                    Cell.Locked = False
                End If
            Next Cell
             'Now protect the entire sheet
            .Protect Password:="open"
        End With
    Next I

    Exit Sub
End Sub

При удалении On Error Resume Next происходит ошибка Cell.Locked = True.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Я решил проблему. Ошибка Noob У меня был макрос в модуле, а не в книге.

0 голосов
/ 30 августа 2018

В Excel 2016 для метода workbook_BeforeSave требуются дополнительные, необязательные параметры

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Вам необходимо включить их в объявление вашего метода, даже если ваш код их игнорирует.

...