繁体   English   中英

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

[英]vba display message box when cell changes?

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

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试图在后台工作一样。

有没有解决的办法?

在这种情况下,如果不将代码放入事件中,则无法显示MessageBox 最好的办法是测试可能首先失败的条件,因此代码在事件内测试条件的次数更少,并且运行速度更快。

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

以我的经验,由于陈述的原因,您应该避免使用此类代码。 我始终将工作表设置为自由状态,并创建一个“验证”按钮来指出用户发现错误的位置(这很困难,我不知道您想用代码完成什么)。

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

如果这些2 If s的不符合,代码做什么,只是直接进入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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM