【发布时间】:2020-03-16 14:55:49
【问题描述】:
所以我知道可以将单元格格式化为锁定,然后保护工作表以防止该数据被覆盖。但我希望能够动态锁定工作表中的单元格。通过做一些谷歌搜索,我尝试根据我的需要调整下面的代码块。目的是,如果 A 列有值,则该行的其余部分将被锁定,因此没有人可以覆盖该行的其余部分。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(ActiveSheet.Cells(18, 1), Target) Is Not Nothing Then
If ActiveSheet.Cells(18, 1).Text = "X" Then
ActiveSheet.Range(Cells(18, 2), Cells(18, 20)).Locked = True
Else
ActiveSheet.Range(Cells(18, 2), Cells(18, 20)).Locked = False
End If
End If
End Sub
非常感谢任何帮助,以及简洁地将其应用于工作表中每一行的提示。
更新:
根据 BigBen 的回答,我已修改为以下内容:
Private Sub Workbook_Open()
Sheets(“Sheet8”).Protect Password:="Secret", UserInterFaceOnly:=True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Me.Columns(1), Target)
If rng Is Nothing Then Exit Sub
Dim cell As Range
For Each cell In rng
cell.EntireRow.Locked = (cell.Value = "X")
Next
End Sub
但这似乎仍然不起作用......
【问题讨论】:
-
IsNot Nothing=) 看来您对 vb.net 感到困惑 -
that still doesn't seem to be working.- 什么不起作用?