gpt4 book ai didi

Vba msgbox 只显示一次

转载 作者:行者123 更新时间:2023-12-04 21:53:41 28 4
gpt4 key购买 nike

是否可以使此代码的 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

最佳答案

我会建议另一种方式。

访问工作表的任务,如ClearContents需要更长的时间来处理。

因此,不要每次在单个单元格的循环内清除内容,并重复数百次,而是使用 ClrRng作为 Range目的。每次If满足条件,将其添加到 ClrRng使用 Application.Union功能。

完成循环遍历所有单元格后,清除 ClrRng 中的整个单元格同时。

代码

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cell22 As Range, b As Boolean
Dim ClrRng As Range ' define a range to add all cells that will be cleared

Application.EnableEvents = False

For Each cell22 In Target
If Not Application.Intersect(cell22, Range("A501:Z6000")) Is Nothing Then
If cell22.Value <> "" Then
If Not ClrRng Is Nothing Then
Set ClrRng = Application.Union(ClrRng, cell22)
Else
Set ClrRng = cell22
End If
End If
End If
Next cell22

If Not ClrRng Is Nothing Then ' make sure there is at least 1 cell that passed the If criteria
ClrRng.ClearContents ' clear all cell's contents at once
MsgBox "You cannot insert more than 500 rows", vbInformation, "Important:"
End If

Application.EnableEvents = True

End Sub

关于Vba msgbox 只显示一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072954/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com