gpt4 book ai didi

vba - 仅当用户修改现有值时禁用消息框弹出

转载 作者:行者123 更新时间:2023-12-02 19:46:25 24 4
gpt4 key购买 nike

我有 vba 代码,如果输入的值为零,则会弹出 msg 框。如果用户稍后想要将零更改为其他数字,它仍然会弹出 msg 框,然后才允许将零编辑为其他数字。

如果用户更改现有值,我不希望弹出 msgbox

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Intersect(Target, Range("b4:af18")) Is Nothing Then

If Target.Value = 0 Then
Application.EnableEvents = True
MsgBox "This is it", vbApplicationModal, "Scikess/Holiday"
End If

End If

Application.EnableEvents = True

End Sub

最佳答案

我相信您描述的是用户在输入新答案之前点击删除键的情况。在这种情况下,空白单元格的数值为零,并且您在检查用户是否输入了零时会得到误报。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("b4:af18")) Is Nothing Then
On Error GoTo bm_Safe_Exit
Dim trgt As Range
Application.EnableEvents = False
For Each trgt In Intersect(Target, Range("b4:af18"))
If trgt.Value = 0 And trgt.Text = "0" Then
MsgBox "This is it" & Chr(10) & trgt.Address(0, 0) & " cannot be zero.", _
vbApplicationModal, "Scikess/Holiday"
Application.Undo
trgt.Activate
Exit For
End If
Next trgt

End If

bm_Safe_Exit:
Application.EnableEvents = True

End Sub

我尝试在涉及多个目标时运行代码(例如粘贴或填充操作),但这使得 Application.Undo 难以保留其他有效条目。如果此行为不合适,请发表评论。

也不清楚您希望它在什么范围内使用react。您似乎错过了 Intersect method 中的 Not ,使其对不在该范围内的任何细胞使用react。我已在上面进行了调整以包括您指定的范围,而不是排除它。

关于vba - 仅当用户修改现有值时禁用消息框弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620979/

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