VBA MsgBox不断回归

时间:2015-03-16 14:42:03

标签: excel-vba vba excel

我是VBA的新手。我遇到了MsgBox的问题,我似乎无法找到答案。接下来是解释。如果某个单元格的值<0,则用户试图在允许的最大数量(在非常罕见的情况下必须发生)上发出支付。我创建了一个弹出窗口,询问是/否以继续付款。如果他们按NO,则取消最后一个条目,他们可以重新进入付款。

但是,如果他们点击“是”,则弹出窗口会消失,这是我想要的,但是当您尝试在电子表格上执行任何其他操作时,它会不断弹出,因为该值仍然是<0。当按下“是”时,如何使msgbox完全停止?

到目前为止,这是我的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
  If Range("C39") < 0 Then 
    If MsgBox("Total cash flow/payout cannot exceed maximum contract amount" & vbCrLf & "Do you want to continue?", vbYesNo + vbCritical, "WARNING") = vbNo Then 
     Application.Undo 
    End If 
End Sub

1 个答案:

答案 0 :(得分:1)

有许多方法可以使用此代码,但从业务方面来说,我建议当他们选择“是”时,您可以捕获他们的选择并为您自己的记录添加注释。

这也允许您在顶级if语句中使用过去的选择。

例如,如果在选择yes时将Range(“40”)设置为“Allowable”,则可以更改为

If Range("C39") < 0 AND Range("C40") <> "Allowable" Then
     If MsgBox("Total cash flow/payout cannot exceed maximum contract amount" & vbCrLf & "Do you want to continue?", vbYesNo + vbCritical, "WARNING") = vbNo Then 
          Application.Undo
     Else
          Range("C40").Value = "Allowable" 
     End If 
End If