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
的地址以适合您的应用程序。
祝一切顺利
有人可以修改我的代码,让消息框只显示一次吗? 我已经尝试了一段时间,但没有成功。
我正在处理的文件是一个寄存器。每当 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
的地址以适合您的应用程序。
祝一切顺利