VBA Access Message Box беды - PullRequest
0 голосов
/ 26 мая 2018

Я последовал за несколькими простыми комментариями о том, как открыть окно подтверждения перед выполнением сценария, но, к сожалению, если я нажму да, сценарий не запустится.

Private Sub Overwrite_Btn_Click()
    If MsgBox("Yes?", vbOKCancel) = ok Then
        Me.Product_Quantity = Me.Quantity_Input
    Else
        Exit Sub
    End If
End Sub

Я пытаюсьустановите Product_Quantity равным Quantity_Input, и хотя он работает без команды MsgBox, он не работает с ним.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Вместо If MsgBox("Yes?", vbOKCancel) = ok Then try: If MsgBox("Yes?", vbOKCancel) = vbOK Then

Обычно взаимодействия с формами возвращают одну константу из набора из нескольких констант.Они занесены в каталоги enums .В этом случае у вас есть несколько констант в классе VbMsgBoxResult, а vbOK - это константа со значением 1, которая возвращается после нажатия кнопки ОК.

На самом деле, If MsgBox("Yes?", vbOKCancel) = 1 Then также будет работать,но сложнее вспомнить, что нажатие Ok возвращает 1, а затем просто указание константы с именем vbOK

В обозревателе объектов (F2 на VBE) поиск VbMsgBoxResult даст все возможные результаты, полученные в результате взаимодействияс окном сообщения.

0 голосов
/ 27 мая 2018

Одна строка:

If MsgBox("Yes?", vbOKCancel) <> vbOk then Exit Sub

'continue code here.

Дополнительная информация:

0 голосов
/ 26 мая 2018

https://www.techonthenet.com/access/constants/msgbox_ret.php

1) Уменьшить значение переменной как целое число.

2) Проверить значение целого числа, равное 6, или проверить значение vbYess

3)?????

4) Прибыль

, заимствованная по ссылке

 Dim LResponse As Integer

 LResponse = MsgBox("Do you wish to continue?", vbYesNo, "Continue")

 If LResponse = vbYes Then
    {...statements...}
 Else
    {...statements...}
 End If
...