【发布时间】:2018-03-02 16:07:23
【问题描述】:
是否可以让这段代码的 msgbox 只出现一次?我的问题是,如果用户插入数据,即从第 501 行到第 510 行,消息框将出现 9 次,我只想拥有一次。这样做的原因是因为代码在每个单元格中查找以验证是否插入了某些内容,然后删除了内容并出现了 msg。如果可能的话,我想保留下面代码的格式,但只显示一次 msgbox。如果没有,欢迎提出任何建议。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell22 As Range
Application.EnableEvents = False
For Each cell22 In Target
If Not Application.Intersect(cell22, Range("a501:z6000")) Is Nothing Then
If cell22.Value <> "" Then
cell22.ClearContents
MsgBox "You cannot insert more than 500 rows", vbInformation, "Important:"
End If
End If
Next cell22
Application.EnableEvents = True
End Sub
【问题讨论】:
-
检查另一个替代方案(我的回答如下),它运行得更快
-
注意下面的其他答案,还要考虑在循环之前移动交叉检查的逻辑。
-
另外,你的逻辑说,如果单元格不为空,则清除它。换句话说,您的最终结果是所有单元格都是空的。您可以设置范围并一击清除,类似于 Shai 提到的但没有循环。