Я новичок в VBA. У меня проблема с MsgBox, и я не могу найти ответ. Так что объясняет это. Если значение определенной ячейки < 0, то пользователь пытается выдать платежи на максимально допустимую сумму (что в очень редкой ситуации должно произойти). Я создал всплывающее окно, чтобы спросить Да/Нет, чтобы продолжить платеж. Если они нажимают «НЕТ», он отменяет последнюю запись, и они могут повторно ввести платеж.VBA MsgBox продолжает возвращаться
Но если они нажмут ДА, то всплывающее окно исчезнет, что я хочу, но оно все время появляется, когда вы пытаетесь сделать что-либо еще в электронной таблице, потому что значение продолжает оставаться < 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
Я хотел бы использовать либо ячейку или определенное имя, которое вы можете поместите некоторый текст (например, «Проверено»), затем ваш код может проверить это до предоставления сообщения и просто выйти, если суммы уже были проверены. – Rory
Незначительная семантическая проблема: я бы изменил 'cannot' на' should not' в вашем предупреждающем сообщении, так как вся суть окна сообщения - спросить, нормально ли продолжать, несмотря на сомнительную переплату. – FreeMan