excel - 按日期锁定 Excel 列

标签 excel vba ms-office

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

相关文章:

vba - 简单的 Excel VBA 搜索和查找功能给出#VALUE!错误

具有日期条件的表的 vba excel AdvancedFilter 方法不起作用

PHP xls、xlsx、ppt、pptx 标题

multithreading - 多线程场景中的 Microsoft.ACE.OLEDB.12.0 错误

c# - 将 WPF 数据网格导出到 Excel

excel - SSIS excel源错误

VBA - 用户窗体按钮(宏)继续运行子

vba - 从更新查询提示中获取值

ms-access 本地化和默认 bool 值

excel - 从 Access 报告到 Excel 电子表格的某些字段会损坏