Блокировка столбца по дате - PullRequest
1 голос
/ 18 февраля 2020

Мне нужно заблокировать столбцы на основе дней, указанных в G8, H8, I8, J8 и K8.

  1. Мне нужно заблокировать G9 через G44, если у G8 нет сегодняшнего дня.
  2. Если сегодня воскресенье, а у G8 воскресенье, то должны быть открыты G9-G44 Если не тогда диапазон данных должен быть заблокирован.

    Это должно быть сделано со всеми столбцами от G до K. Как я могу это сделать? Спасибо за миллион заранее.

    Private Sub worksheet_Change(ByVal Target As Range)
    Dim col As Range
        With ThisWorkbook.Sheets("Sheet1")
            .Unprotect "ABCDE"
            For Each col In .UsedRange.Columns
                col.EntireColumn.Locked = col.Range("A1").Value < Date
            Next col
            .Protect "ABCDE"
            .EnableSelection = xlNoRestrictions
        End With
    End Sub
    

1 Ответ

0 голосов
/ 18 февраля 2020

Добро пожаловать на SO. Ваш код выглядит хорошо, все, что вам нужно сделать, это добавить еще несколько If условий. Попробуйте:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim col                 As Long
    Dim tDate               As Date

    tDate = Date 'today's date

    With ThisWorkbook.Sheets("Sheet1")
        '.Unprotect "ABCDE"
        For col = 0 To .Range("G9:K44").Columns.Count - 1
            'check if row 8 doesn't have today's date
            If .Range("G8").Offset(0, col).Value <> tDate Then
                'if today is Sunday and row 8 has Sunday
                If Format(tDate, "dddd") = "Sunday" And Format(.Range("G8").Offset(0, col).Value, "dddd") = "Sunday" Then
                    .Range("G8:G44").Offset(0, col).EntireColumn.Locked = False
                Else
                    .Range("G8:G44").Offset(0, col).EntireColumn.Locked = True
                End If
            End If
        Next col
        '.Protect "ABCDE"
        '.EnableSelection = xlNoRestrictions
    End With
End Sub

Измените tDate на другую дату для проверки кода, например tDate = '2020-02-16' (воскресенье).

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