MSGBOX не работает должным образом при нажатии на заказ

#vba #loops #case #msgbox

#vba #циклы #случай #msgbox

Вопрос:

У меня есть кнопка заказа, которая определяет цену продукта, а затем предоставляет пользователю детали заказа. Однако мое окно MSG не работает.

 Sub ButtonOrder_Click()
    Dim TotalOrdered As Integer
    Dim Price As Single
    Dim StrMsg As String
    Const OrderPrice = 2.5
    Const TaxRate = 0.06
    Const TaxRateMultiplier = 1.06

    With ThisWorkbook.Sheets("Form")
        If (Len(.Range("B2")) = 0) Then
            Range("B2") = InputBox("Enter your name:  ")
        ElseIf (Len(.Range("B3")) = 0) Then
            Range("B3") = InputBox("Please enter your email: )
        ElseIf (Len(.Range("B4")) = 0) Then
            Range("B4") = InputBox("Please Enter Chocolate Amount:  )
        ElseIf (Len(.Range("B5")) = 0) Then
            Range("B5") = InputBox("Please Enter Vanilla Amount : )
        ElseIf (Len(.Range("B6")) = 0) Then
            Range("B6") = InputBox("Please Enter Strawberry Amount: )
        Else
            TotalOrdered = Range("B4").Value   Range("B5").Value   Range("B6").Value
            Exit Sub
        End If
    End With

    'goes through checking the order and number and discount amount
    Select Case Price
        Case TotalOrdered >= 6 And TotalOrdered <= 10
            Price = TotalOrdered * OrderPrice * 0.95
        Case TotalOrdered >= 11 And TotalOrdered <= 20
            Price = TotalOrdered * OrderPrice * 0.9
        Case TotalOrdered >= 21
            Price = TotalOrdered * OrderPrice * 0.8
        Case Else 'less than 6
            Price = TotalOrdered * OrderPrice
           End Select

    'I incorporated the unit price with discount so it is more informative for the customer
    StrMsg = ("Unit Price: $" amp; Price / TotalOrdered _ 'format function from HW 2
    amp; "Quantity: " amp; TotalOrdered _
    amp; "Tax Rate: $" amp; TaxRate _
    amp; "Final Total Price: " amp; Price * TaxRateMultiplier)

End Sub
  

Комментарии:

1. Я не вижу окон сообщений, но я вижу поля ввода с отсутствующими кавычками. ("Please enter your email: ) должно быть ("Please enter your email: ") и т.д. Вы также ссылаетесь на диапазоны без указания wb / ws

2. Я ссылаюсь на нижнюю строку

3. Это не инициирует окно сообщения, это всего лишь переменная, которую вы заполняете строкой. Вы могли бы использовать эту строку в окне сообщения.

4. У вас есть ошибки sytax над этой строкой, как указано @TimStack. Ваш код как есть никогда не попадет в StrMsg , не выдав вам ошибку. Исправьте ошибки, указанные выше. Затем используйте MsgBox StrMsg

Ответ №1:

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

Чтобы узнать больше о окнах сообщений и о том, как их использовать, ознакомьтесь с этой страницей MDOCS!

 With ThisWorkbook.Sheets("Form")
    If Len(.Range("B2")) = 0 Then
        .Range("B2") = InputBox("Enter your name:  ")
    ElseIf Len(.Range("B3")) = 0 Then
        .Range("B3") = InputBox("Please enter your email: ")
    ElseIf Len(.Range("B4")) = 0 Then
        .Range("B4") = InputBox("Please Enter Chocolate Amount:  ")
    ElseIf Len(.Range("B5")) = 0 Then
        Range("B5") = InputBox("Please Enter Vanilla Amount : ")
    ElseIf Len(.Range("B6")) = 0 Then
        Range("B6") = InputBox("Please Enter Strawberry Amount: ")
    Else
        TotalOrdered = .Range("B4").Value   .Range("B5").Value   .Range("B6").Value
        Exit Sub
    End If
End With

'goes through checking the order and number and discount amount
Select Case Price
    Case TotalOrdered >= 6 And TotalOrdered <= 10
        Price = TotalOrdered * OrderPrice * 0.95
    Case TotalOrdered >= 11 And TotalOrdered <= 20
        Price = TotalOrdered * OrderPrice * 0.9
    Case TotalOrdered >= 21
        Price = TotalOrdered * OrderPrice * 0.8
    Case Else 'less than 6
        Price = TotalOrdered * OrderPrice
       End Select

'I incorporated the unit price with discount so it is more informative for the customer
StrMsg = ("Unit Price: $" amp; Price / TotalOrdered _ 'format function from HW 2
amp; "Quantity: " amp; TotalOrdered _
amp; "Tax Rate: $" amp; TaxRate _
amp; "Final Total Price: " amp; Price * TaxRateMultiplier)

MsgBox strMsg, vbInformation, "Prices"