我是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
答案 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