不要让变化发生 - Worksheet_Change

时间:2017-04-18 18:51:36

标签: excel onchange

我有一个非常基本的要求,但我不知道如何编码。 我要找的是,如果单元格> = 1,则不要在特定范围(“J10:J1000”)中进行任何更改。如果那是有道理的。

因此,从J10到J1000的任何单元格都可以变为任何数量,如果它是0,但如果它大于0,那么我想显示并显示消息“抱歉!改变不可能发生。”

1 个答案:

答案 0 :(得分:0)

试一试。 将以下代码放在图纸模块上。

要执行此操作,请右键单击工作表标签 - >查看代码并将下面给出的代码粘贴到打开的代码窗口中 - >将工作簿另存为启用宏的工作簿。

Dim oVal
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo SkipError
Application.EnableEvents = False
If Not Intersect(Target, Range("J10:J1000")) Is Nothing Then
    If Target.CountLarge > 1 Then
        Application.Undo
    Else
        If oVal > 0 Then
            Application.Undo
            Target.Offset(1, 0).Select
            MsgBox "Sorry! you cannot change the cell content.", vbExclamation, "Change Not Allowed!"
        End If
    End If
End If
SkipError:
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("J10:J1000")) Is Nothing Then
    oVal = Target.Value
End If
End Sub