按日期锁定 Excel 列

Lock Excel Columns by Date

我正在尝试创建一个简单的代码来根据日期锁定单元格列。我有从单元格 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

ProtectUnprotect 作用于 sheet,而不作用于范围。您确实需要解锁 sheet,但您需要在重新锁定之前将 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