当受保护的单元格被点击时显示警告消息

目前我有这个代码。 在Column A ,我有一个“是”或“否”的select。

 Private Sub worksheet_change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then ActiveSheet.Unprotect If Target = "YES" Then 'Column B to S For i = 1 To 18 With Target.Offset(0, i) .Locked = False .FormatConditions.Add Type:=xlExpression, Formula1:="=ISBLANK(" & Target.Offset(0, i).Address & ")" With .FormatConditions(.FormatConditions.Count) .SetFirstPriority .Interior.ColorIndex = 4 End With End With Next i ElseIf Target = "NO" Then For i = 1 To 73 With Target.Offset(0, i) .Value = "" .Locked = True .FormatConditions.Delete End With Next i End If ActiveSheet.Protect End If End Sub 

现在,当用户单击Column T (19)中的单元格时,我想向用户显示一个警告消息,表明这不适用于“是”select。

这似乎应该做你正在问的任务。

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then On Error GoTo bm_SafeExit Application.EnableEvents = False Me.Unprotect Dim trgt As Range For Each trgt In Intersect(Target, Range("A:A")) If LCase(trgt.Value2) = "yes" Then With trgt.Offset(0, 1).Resize(1, 18) .Locked = False With .FormatConditions.Add(Type:=xlExpression, Formula1:="=ISBLANK(B" & trgt.Row & ")") .Interior.ColorIndex = 4 End With End With Else With trgt.Offset(0, 1).Resize(1, 73) .Value = vbNullString .Locked = True .FormatConditions.Delete End With End If Next trgt End If bm_SafeExit: Application.EnableEvents = True Me.Protect Userinterfaceonly:=True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("T:XFD")) Is Nothing Then On Error GoTo bm_SafeExit Application.EnableEvents = False Dim trgt As Range For Each trgt In Intersect(Target, Range("T:XFD")) If LCase(Me.Cells(trgt.Row, "A").Value2) = "yes" Then MsgBox "Don't try to put Yes here", vbCritical + vbOKOnly, "Bad Choice" Me.Cells(trgt.Row, "A").Select End If Next trgt End If bm_SafeExit: Application.EnableEvents = True End Sub 

设置手表和断点并使用[F8]和[Ctrl] + [F8}来浏览代码。