#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 / ws2. Я ссылаюсь на нижнюю строку
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"