Не понимаю, почему я получаю ошибку компиляции - PullRequest
0 голосов
/ 17 ноября 2018

Я получаю ошибку компиляции: иначе без If, и я не знаю почему.

Dim product As String

    Do Until product = "P" Or product = "p"
    product = Left(InputBox("Please enter product number", "Product please", "Enter product number here"), 1)
        If product = "P" Or product = "p" Then MsgBox "Thank you"
        ElseIf product = "Enter product number here" Then Exit Sub
        Else: MsgBox "Please enter a valid product number"
        End If
    Loop

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Подумайте о логическом потоке - что происходит после первого IF, когда MsgBox помещается в ту же строку. Используйте F8, чтобы перейти в код ниже, чтобы понять это. Ура!

Sub test()

    Dim product As String

    Do Until product = "P" Or product = "p"
        product = Left(InputBox("Please enter product number", "Product please", "Enter product number here"), 1)
        If product = "P" Or product = "p" Then
            MsgBox "Thank you"
            ElseIf product = "Enter product number here" Then Exit Sub
            Else: MsgBox "Please enter a valid product number"
        End If
    Loop

End Sub
0 голосов
/ 17 ноября 2018

Поскольку ваш оператор If немного сложнее, чем просто «Сделайте одну вещь, если это условие истинно», вы должны отделить условия от действий в их собственные строки:

Dim product As String

Do Until product = "P" Or product = "p"
    product = Left(InputBox("Please enter product number", "Product please", "Enter product number here"), 1)

    If product = "P" Or product = "p" Then 
         MsgBox "Thank you"
    ElseIf product = "Enter product number here" Then 
         Exit Sub
    Else
         MsgBox "Please enter a valid product number"
    End If
Loop

Также, как я заметилв моем комментарии ваше условие ElseIF никогда не будет выполнено, и вы будете зацикливаться, если вы запустите этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...