Если Вы используете curses
пакет, Вы имеете намного больший контроль над консолью. Это также прибывает в более высокую стоимость в сложности кода и является, вероятно, ненужным, если Вы не разрабатываете большое основанное на консоли приложение.
Для простого решения, можно всегда помещать прялку в конце состояния messge (последовательность символов |, \, -, /
, который на самом деле выглядит хорошим под мерцающим курсором.
MsgBox
действительно возвращает Enum (eration)
с именем MsgBoxResult
, которое по сути представляет собой не что иное, как числовые значения с «меткой». 6 и 7 в данном случае являются членами этого перечисления, которые отображаются в ответах Да
и Нет
.
Использование так называемых «магических чисел» вместо констант или перечислений должно по возможности избегать.
В принципе, вы могли бы переписать код так:
Dim message As Integer
message = MsgBox("Click Yes to Proceed, No to stop", vbYesNoCancel, "Login")
If message = MsgBoxResult.Yes Then
Range("A1").Value = "You may proceed"
ActiveWorkbook.Activate
ElseIf message = MsgBoxResult.No Then
ActiveWorkbook.Close
End If
Возможно, Enum называется vbMsgBoxResult или что-то в этом роде ... У меня нет офиса, чтобы проверить это, только Visual Studio.
] Пока мы на нем ... это может быть легче понять:
Select Case MsgBox("Click Yes to Proceed, No to stop", vbYesNoCancel, "Login")
Case MsgBoxResult.Yes
Range("A1").Value = "You may proceed"
ActiveWorkbook.Activate
Case MsgBoxResult.No
ActiveWorkbook.Close
Case MsgBoxResult.Cancel
' he clicked cancel '
End Select
Это очень плохо написанный код, «6» и «7» - это значения констант «vbYes» и «vbNo», где возвращается, когда пользователь нажимает «Да» или «Нет» в диалоговом окне.
Ссылка: http://www.techonthenet.com/access/constants/msgbox_ret. php
В коде должно быть указано
If message = Constants.vbYes
вместо
If message = 6
, чтобы было понятно, что происходит.
Когда я впервые начал с ответов MsgBox
, я почти всегда объявлял ответ как целое число
. Однако я узнал, что лучше всего объявить вашу переменную message
как VbMsgBoxResult
, что представляет собой перечисление, которое всегда будет показывать доступные ответы. На рисунке ниже IDE (например, редактор Visual Basic для приложений) покажет вам возможные варианты, доступные в VbMsgBoxResult
.
Вы можете сохранить свой ответ
как Целое число
, поскольку все переменные в Перечислении (например, vbAbort
, vbYes
, vbOK
и т. Д.) фактически разрешите целые числа. Однако, вам нужно выяснить, каковы целочисленные значения этих переменных, каждый раз, когда вы хотите ссылаться на них. На мой взгляд, лучше хранить свой ответ как VbMsgBoxResult
, чтобы вы действительно могли видеть доступные ответы.
Эта ссылка предназначена для VBScript, но я думаю, что коды возврата должны быть такими же: Справочник по функциям MsgBox
Коды возврата сообщают, какая кнопка была нажата:
1 OK
2 Cancel
3 Abort
4 Retry
5 Ignore
6 Yes
7 No
Это возвращаемое значение из MsgBox (). Чтобы сделать программу более читаемой, автору следовало использовать их символическое значение:
vbYes 6
vbNo 7
См. статью MSDN для получения дополнительной информации
6 и 7 - это коды возврата из метода MsgBox. В основном, когда вызывается MsgBox, он показывает окно сообщения пользователю, который нажимает «Да», «Нет» или «Отмена». Выбор пользователя возвращается из метода MsgBox в виде числа, где 6 - Да, а 7 - Нет.
Рекомендуется не использовать эти числа в коде напрямую, а вместо этого использовать константы, предоставленные Microsoft, которые представляют их. Ваш код можно переписать как:
Private Sub CommandButton1_Click()
Dim message As Integer
message = MsgBox("Click Yes to Proceed, No to stop", vbYesNoCancel, "Login")
If message = vbYes Then
Range("A1").Value = "You may proceed"
ActiveWorkbook.Activate
ElseIf message = vbNo Then
ActiveWorkbook.Close
ElseIf message = vbCancel Then
'Do nothing.
End If
End Sub
Just rewrite to the equivalent:
Private Sub CommandButton1_Click()
Dim optionSelected As VbMsgBoxResult
optionSelected = MsgBox("Click Yes to Proceed, No to stop", vbYesNoCancel, "Login")
If optionSelected = vbYes Then
Range("A1").Value = "You may proceed"
ActiveWorkbook.Activate
ElseIf optionSelected = vbNo Then
ActiveWorkbook.Close
End If
End Sub
And move on
6 и 7 - жестко закодированные значения, которые имеют особое значение. Вызов MsgBox ("Click Yes ...") 'вернет число, которое позволит вашему коду определить, что пользователь сделал с окном сообщения, а затем вы сможете использовать условные выражения (ваши операторы IF), чтобы решить, что делать дальше.
Полный список этих специальных значений можно найти в документации MSDN здесь:
http://msdn.microsoft.com/en-us/library/139z2azd (VS.80) .aspx