excel - VBA 受保护的单元格,但仍允许编辑
问题描述
我有一个 python 脚本可以编辑某个列的内容,而 VBA 可以检查该列是否已更改。当它检测到更改时,它会锁定该列以防止用户编辑。它成功地保护了工作表,但仍然可以编辑单元格。我不明白为什么会这样。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Protect As String
Dim NotProtectRange As String
ProtectRange = "A1:A1049576"
NotProtectRange = "B1:XFD1048576"
If Not Intersect(Target, Target.Worksheet.Range(ProtectRange)) Is Nothing Then
Worksheets("Sheet1").Unprotect
Range(NotProtectRange).Locked = False
Worksheets("Sheet1").Protect UserInterfaceOnly:=True, Contents:=True
End If
End Sub
我希望当我双击范围中的单元格时ProtectRange
,我应该无法编辑它们。但相反,我可以编辑它们。那么我该如何解决呢?
解决方案
如果单元格未锁定,则保护工作表不会阻止编辑。
Me.Range(ProtectRange).Locked = True
应该解决问题。
推荐阅读
- python-3.x - 如何在 python 中将“大约 35 分钟 20 秒前”和“9.35 AM Apr 2nd”分别更改为今天的日期和 02-04-2019?
- javascript - 在 d3 中添加悬停工具提示气泡图
- powershell - 为什么在一行中运行两个 PowerShell 命令时输出格式会发生变化?
- javascript - 如何在不检索密钥的情况下检索 Firebase 子数据?
- javascript - 过滤和映射更新的数组并在表格中呈现
- javascript - matchMedia 不完全参考设备方向来模拟 CSS 媒体查询
- php - 网站不显示使用 PHP 存储在数据库中的图像
- c# - Xamarin iOS 高存储使用和奇怪的文件
- typescript - 问题将 ResizeSensor 导入打字稿
- python - !!ValueError:检查输入时出错:预期 lstm_2_input 具有 3 个维度,但得到的数组具有形状 (4982, 12)