Msgbox 只显示一次

Msgbox show only once

有人可以修改我的代码,让消息框只显示一次吗? 我已经尝试了一段时间,但没有成功。

我正在处理的文件是一个寄存器。每当 AD13:AJ13 的总和超过 4 时,消息应显示, 提示用户的操作。但是到目前为止,一旦范围内的单元格超过 4,msgbox 就会显示范围内的所有更改,甚至总和低于 4。这不是故意的,我只希望用户收到范围内每个单元格的通知一次( AD13:AJ13)

代码:

Private Sub Worksheet_Calculate()

    Dim myCell As Range

    For Each myCell In Range("AD13:AJ13")
        If myCell > 4 Then
        MsgBox "Management approval is required once the value exceed 4"
            Exit Sub
        End If
    Next myCell
End Sub

我有点同意问题下方的评论,因为 Worksheet_Change 似乎是更自然的触发因素。但是,问题可能在于此范围不会直接更改(即单元格具有可能依赖于其他工作表甚至其他工作簿中的单元格的公式)。

您基本上需要以某种方式保存这些单元格的当前状态。请尝试此代码,看看它是否有帮助或为您开辟新的 window 思路。

Private Sub Worksheet_Calculate()
    Dim rngSavedState As Range
    Dim j As Integer
    Dim bMsgBoxShown As Boolean
    
    Set rngSavedState = Range("AD14:AJ14")
    
    Application.EnableEvents = False
    With Range("AD13:AJ13")
        bMsgBoxShown = False
        For j = 1 To .Columns.Count
            If .Cells(1, j).Value <> rngSavedState.Cells(1, j).Value Then
                rngSavedState.Cells(1, j).Value = .Cells(1, j).Value
                If .Cells(1, j) > 4 And Not bMsgBoxShown Then
                    MsgBox "Management approval is required once the value exceed 4"
                    bMsgBoxShown = True
                End If
            End If
        Next j
    End With
    Application.EnableEvents = True
End Sub

您显然需要更改 rngSaveState 的地址以适合您的应用程序。 祝一切顺利