Excel 单元格更改时vba显示消息框?

Excel 单元格更改时vba显示消息框?,excel,vba,Excel,Vba,我想在每次更改我列中的单元格值时显示一个消息框 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

我想在每次更改我列中的单元格值时显示一个消息框

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
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Cells.Count<3且Target.Column=13,则
如果不相交(Target,Target.Worksheet.Range(“M:M”))则为空
MsgBox“嘿”
如果结束
如果结束
端接头
理想情况下,我希望尽量避免工作表更改事件,因为这似乎会降低我的spreadhseet在其他方面的速度,包括用户键入其他单元格时。光标显示正在加载的光标,就好像vba试图在后台工作一样


有办法解决这个问题吗?

在这种情况下,如果不在事件中添加代码,则无法显示
消息框。您所能做的最好的事情就是先测试可能失败的条件,这样代码在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
Private子工作表\u更改(ByVal目标作为范围)
如果Intersect(Target,Me.Range(“M:M”))为空,则转到退出
如果Target.Cells.Count<3,则转到退出
MsgBox“嘿
退出:
端接头

根据我的经验,您应该避免使用这种代码,因为您说明了一些原因。我总是将我的工作表设置为自由,并创建一个“验证”按钮,指出用户发现错误的地方(我不知道您想用代码实现什么)。

您可以简化代码,只需检查正在更改的单元格是否在M列中,然后检查单元格数是否少于3

如果不满足这两个
,则代码不执行任何操作,直接转到
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
Private子工作表\u更改(ByVal目标作为范围)
如果不相交(目标,范围(“M:M”))则为零
如果Target.Cells.Count<3,则MsgBox“嘿”
如果结束
端接头

抽出时间对您在之前的帖子中得到的答案进行反馈,我发现您没有接受任何答案或/或标记为“答案”???下面的答案有什么反馈吗