我是VBA的新手,我正在尝试创建一个msgbox,如果在列中进行了更改,它将响应。此列的结果由公式运行,结果以文本形式显示。例如,公式是检查两个余额。如果它们匹配,配制的细胞将显示"匹配",如果它们没有,它将显示" Not Matched"代替。当它从"匹配"为了"不匹配",我想要一个msgbox来显示,以提醒谁做出了不正确的改变。但是,这就是问题,当我在下面运行我的代码时,msgbox会循环并且每次更改都会显示多次。我怎样才能让它只出现一次,因为#34;匹配"到"不匹配"。这是我的代码:
Private Sub Worksheet_Calculate()
Dim rr As Range, r As Range
Set rr = Range ("L6:L57").Cells.SpecialCells(xlCellTypeFormulas)
For Each r in rr
If r.Value = "Not Matched" Then
MsgBox "Please Checked Date Entered", vbExclamation
End If
Next r
End Sub
请帮助!
非常赞赏。
答案 0 :(得分:0)
试试此代码
Private Sub Worksheet_Calculate()
Dim rr As Range, r As Range
Dim bNotMatched as Boolean
Set rr = Range ("L6:L57").Cells.SpecialCells(xlCellTypeFormulas)
bNotMatched = false
For Each r in rr
If r.Value = "Not Matched" Then
bNotMatched = true
End If
Next r
If bNotMatched = true then
MsgBox "Please Checked Date Entered", vbExclamation
End if
End Sub
答案 1 :(得分:0)
我的想法是获得具有静态值的“匹配/不匹配”列的副本,并且每次检查rr
中的“未匹配”值时,您都可以将该值与副本进行比较。如果两者都是“未匹配”,请转到下一个r
。如果没有,则在复制列中将“匹配”更改为“未匹配”并显示msgbox。