Блокировка столбцов Excel по дате - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать простой код для блокировки столбцов ячеек на основе даты.У меня есть настройки даты (каждую пятницу) от ячеек C1 до BA1.Код, который я использую, выглядит следующим образом и, кажется, блокирует все или дает ошибку несоответствия типов.

Private Sub worksheet_selectionChange(ByVal Target As Range)

If Range("C1:BA1").Value < Date Then
    ActiveSheet.Protect Password:="1234"
ElseIf Range("C1:BA1").Value > Date Then
    ActiveSheet.Unprotect Password:="1234"
    ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub

Любая помощь будет принята с благодарностью.

Спасибо !!-D

1 Ответ

0 голосов
/ 27 сентября 2018

Protect и Unprotect действуют на лист, а не на диапазон.Вам нужно разблокировать лист, но затем вам необходимо установить для свойства Range.Locked значение true / false, прежде чем снова заблокировать его.Также для этого требуется цикл, вы не можете сразу воздействовать на весь диапазон для достижения этого результата.

Я бы порекомендовал поместить это в Workbook_Open, поэтому он запускается только один раз, если вы не меняете даты;тогда это должно идти в Worksheet_Change.

Private Sub Workbook_Open()

    Dim col As Range

    'Set the correct sheet name here:
    With ThisWorkbook.Sheets("Sheet1")

        .Unprotect "1234"

        For Each col In .UsedRange.Columns

            col.EntireColumn.Locked = col.Range("A1").Value < Date

        Next col

        .Protect "1234"

        .EnableSelection = xlNoRestrictions

    End With

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