首页 > 解决方案 > 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,我应该无法编辑它们。但相反,我可以编辑它们。那么我该如何解决呢?

标签: excelvba

解决方案


如果单元格未锁定,则保护工作表不会阻止编辑。

Me.Range(ProtectRange).Locked = True

应该解决问题。


推荐阅读