我做了一个简单的条件格式化 =$B7="PP"
适用于=$F$7:$M$1000
如果选择"PP",这将变为深灰色。
我现在想锁定单元格F7:M1000
如果从B7:B1000
任何位置的下拉列表中选择了"PP"。我不希望任何人能够输入F7:M1000
.我是 VBA 的完全初学者,所以如果可以通过 VBA 完成,那么简单的说明将帮助我做到这一点。
首先,解锁单元格 B7:B1000。您希望用户始终能够编辑这些内容。
然后保护床单。这将确保无法编辑锁定的单元格。(如果工作表不受保护,则锁定或不锁定单元格没有区别。
然后在工作表模块中添加以下内容:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
Application.EnableEvents = False 'prevent infinite event loops
Me.Unprotect ' else won't be able to modify locked cells
If Not Intersect(Target, Range("B7:B1000")) Is Nothing Then
'User edited a cell in this range.
With Range("F1:M1").Offset(Target.Row - 1, 0)
If Target.Value = "PP" Then
.Interior.Color = RGB(200, 200, 200) 'gray
.Locked = True
Else
.Interior.Color = RGB(255, 255, 255) 'white
.Locked = False
End If
End With
End If
ExitProcedure:
Me.Protect
Application.EnableEvents = True
Exit Sub
ErrorHandler:
MsgBox Err.Description
Resume ExitProcedure
End Sub