我正在尝试创建一个简单的代码来根据日期锁定单元格列。我设置了从单元格 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
最佳答案
保护
和取消保护
作用于工作表,而不是范围。您确实需要解锁工作表,但随后需要将 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
关于excel - 按日期锁定 Excel 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538437/