不要让改变发生 - Worksheet_Change
Don't let change happen - Worksheet_Change
我有一个非常基本的要求,但我不知道如何编写代码。
我正在寻找的是,如果单元格 >=1,则不要在特定范围 ("J10:J1000") 中进行任何更改。如果说得通。
所以从 J10 到 J1000 的任何单元格如果为 0 都可以更改为任何数量,但如果它大于 0 那么我想显示和消息说 "Sorry! change can not happen."
试一试。
将以下代码放在 Sheet 模块上。
为此,右键单击 Sheet 选项卡 --> 查看代码并将下面给出的代码粘贴到打开的代码中 window --> 将您的工作簿另存为启用宏的工作簿。
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
我有一个非常基本的要求,但我不知道如何编写代码。 我正在寻找的是,如果单元格 >=1,则不要在特定范围 ("J10:J1000") 中进行任何更改。如果说得通。
所以从 J10 到 J1000 的任何单元格如果为 0 都可以更改为任何数量,但如果它大于 0 那么我想显示和消息说 "Sorry! change can not happen."
试一试。 将以下代码放在 Sheet 模块上。
为此,右键单击 Sheet 选项卡 --> 查看代码并将下面给出的代码粘贴到打开的代码中 window --> 将您的工作簿另存为启用宏的工作簿。
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