Никакой выбор не приводит меня к неправильному следующему вводу msgbox

If vbYes = MsgBox("Do you have Federal Employee Health Benefits (FEHBB), such as Blue Cross Blue Shield?", vbYesNo + vbQuestion) Then
End If
If vbYes = MsgBox("Would you like to terminate/suspend your Federal Employee Health Benefits (FEHB) while on orders?", vbYesNo + vbQuestion) Then
    FEHBCancel = InputBox("Please initial here to cancel/suspend your FEHB.")
Else
NoFEHB = InputBox("Please initial here indicating that you do not have Federal Employee Health Benefits.")
End If

Вышеупомянутое, казалось, прошло, но проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я спрашиваю первое окно msgbox «У вас есть FEHB ...», если я выбираю «Нет», я хочу, чтобы он перешел к новому msgbox «пожалуйста инициал здесь указывает, что у вас нет...". Если ответ «ДА», то я бы хотел, чтобы он перешел в msgbox «вы хотите прекратить», еще один msgbox «Да/Нет». И оттуда, возможно, еще одно поле, если они выберут «нет», они не хотят завершать работу.


person Heather Dragon    schedule 23.04.2020    source источник


Ответы (1)


Ниже приведен некоторый код VBA, который показывает, как это должно быть сделано. При выполнении подобных вещей часто бывает полезно нарисовать на листе бумаги логический процесс, а при кодировании операторов If всегда делать отступ для каждого вложенного уровня, чтобы обеспечить удобочитаемость.

Sub sMsg()
    Dim strTerminate As String, strPayFor As String, strNoFEHBB As String
    If vbYes = MsgBox("Do you have FEHBB?", vbYesNo) Then
        If vbYes = MsgBox("Do you want to terminate", vbYesNo) Then
            strTerminate=InputBox("Please initial to terminate")        
        Else    '   No they don't want to terminate
            strPayFor=InputBox("Please initial to pay")
        End If
    Else    ' do not have FEHBB
        strNoFEHBB = InputBox("Please initial here")
    End If
End Sub

С уважением,

person Applecore    schedule 23.04.2020
comment
спасибо - так что, я думаю, мой вопрос в том, что после каждого оператора If у меня должна быть функция End If? - person Heather Dragon; 24.04.2020
comment
Вы можете сделать простой If 1=1 Then MsgBox() все в одной строке без использования End If. Как только действие, которое должно быть выполнено после оценки If, находится на новой строке, вам действительно нужно соответствующее End If. А благодаря одинаковому отступу If/Else/End If становится намного проще определить, когда они не совпадают. - person Applecore; 24.04.2020
comment
Итак, я думаю, у меня есть только одна часть, и тогда она действительно сработает, спасибо, что помогли мне подумать об этом. - person Heather Dragon; 24.04.2020
comment
спасибо, что помогли мне подумать об этом. Я дошел до оператора, который хотел бы завершить, но не могу получить всплывающее окно ввода, если пользователь выбирает «нет». Например, cx, vbYesNo + vbQuestion) Then If vbYes = InputBox(Пожалуйста, инициализируйте здесь, чтобы отменить/приостановить действие FEHB.) Then Else PayForFEHB = InputBox(Пожалуйста, инициализируйте здесь...) End If End If Else NoFEHB = InputBox(Пожалуйста, инициализируйте здесь которого у вас нет.) End If - person Heather Dragon; 24.04.2020
comment
Я изменил свой ответ, чтобы разместить InputBox в том месте, где, как мне кажется, вы хотите его видеть. - person Applecore; 24.04.2020