我希望每次更改列中的单元格值时都显示一个消息框。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count < 3 And Target.Column = 13 Then
If Not Intersect(Target, Target.Worksheet.Range("M:M")) Is Nothing Then
MsgBox "hEY"
End If
End If
End Sub
理想情况下,我想尝试避免工作表更改事件,因为这似乎会减慢我的传播速度,包括当用户键入其他单元格时。光标显示加载光标,就像vba尝试在后台工作一样。
有解决方法吗?
答案 0 :(得分:0)
在这种情况下,您无法在事件中放置代码而无法显示MessageBox
。您可以做的最好的事情是测试可能首先失败的条件,因此代码测试de事件中的条件次数会更少,并且运行得更快。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("M:M")) Is Nothing Then GoTo Quit
If Target.Cells.Count < 3 Then GoTo Quit
MsgBox "Hey!"
Quit:
End Sub
根据我的经验,你应该避免使用这种代码,因为你说的原因。我总是免费设置我的工作表并创建一个“验证”工具。按钮,指出用户发现错误的地方(很难,我不知道你想用你的代码完成什么)。
答案 1 :(得分:0)
您可以简化代码,只需检查要更改的单元格是否在M列中,然后检查单元格数是否小于3.
如果不符合这两个If
,则代码不执行任何操作,直接转到End Sub
。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M:M")) Is Nothing Then
If Target.Cells.Count < 3 Then MsgBox "Hey"
End If
End Sub