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