我正在尝试创建一个简单的代码,用于根据日期锁定单元格列。我有从单元格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
答案 0 :(得分:2)
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