首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA -退出MsgBox()

VBA -退出MsgBox()
EN

Stack Overflow用户
提问于 2021-06-09 18:03:17
回答 1查看 73关注 0票数 0

我已经有一段时间没有和VBA合作了,所以我的技能有点生疏。我已经成功地将一个小脚本组合在一起,它将更新我在excel表中的Date ContactedDate Modified列,如果我要更改A列中的相应单元格,那么对于A列中的所有单元格,我使用数据验证工具设置一个列表。List = A, B, C, D

当选择列表项之一时,脚本应该在Date Contacted (列H)中输入当前日期。如果单元格更改为新项,则消息框将询问用户是否要提交更改。如果是,Date Modified (第一列)将被更新。如果不是,A列应该恢复到原来的self,并且日期列中的任何一列都不应该被更新。

代码中没有bug,但是当提示回答是或否时,单击" no“继续循环回消息框。我被困在圈子里,不知道该怎么逃。

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
Dim Answer As Integer

For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
    
        If Cells(Cell.Row, "H").Value <> "" And Cell.Value <> "" Then
            Answer = MsgBox("Are you sure you want to make these changes?", vbYesNo)
            
            If Answer = vbYes Then
                Cells(Cell.Row, "I").Value = Int(Now)
            Else
                Application.Undo
            End If
                
        Else
            Cells(Cell.Row, "H").Value = Int(Now)
        End If
    End If
Next Cell
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-09 18:11:06

在通过宏对工作表进行任何更改之前,您需要关闭事件。更改触发事件,当事件发生更改时,它会重新触发事件,从而产生一个循环,或者在您的情况下,触发一个条件循环。

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
        'Any code that makes changes to worksheet nested inside
    Application.EnableEvents = True

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67909525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档