Понимание, какие коды ответа возвращаются из MsgBox

Если Вы используете curses пакет, Вы имеете намного больший контроль над консолью. Это также прибывает в более высокую стоимость в сложности кода и является, вероятно, ненужным, если Вы не разрабатываете большое основанное на консоли приложение.

Для простого решения, можно всегда помещать прялку в конце состояния messge (последовательность символов |, \, -, /, который на самом деле выглядит хорошим под мерцающим курсором.

12
задан Dominic Zukiewicz 30 April 2012 в 11:27
поделиться

8 ответов

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
22
ответ дан 2 December 2019 в 02:56
поделиться

Это очень плохо написанный код, «6» и «7» - это значения констант «vbYes» и «vbNo», где возвращается, когда пользователь нажимает «Да» или «Нет» в диалоговом окне.

Ссылка: http://www.techonthenet.com/access/constants/msgbox_ret. php

В коде должно быть указано

If message = Constants.vbYes 

вместо

If message = 6

, чтобы было понятно, что происходит.

8
ответ дан 2 December 2019 в 02:56
поделиться

Когда я впервые начал с ответов MsgBox , я почти всегда объявлял ответ как целое число . Однако я узнал, что лучше всего объявить вашу переменную message как VbMsgBoxResult , что представляет собой перечисление, которое всегда будет показывать доступные ответы. На рисунке ниже IDE (например, редактор Visual Basic для приложений) покажет вам возможные варианты, доступные в VbMsgBoxResult .

VbMsgBoxResult

Вы можете сохранить свой ответ как Целое число , поскольку все переменные в Перечислении (например, vbAbort , vbYes , vbOK и т. Д.) фактически разрешите целые числа. Однако, вам нужно выяснить, каковы целочисленные значения этих переменных, каждый раз, когда вы хотите ссылаться на них. На мой взгляд, лучше хранить свой ответ как VbMsgBoxResult , чтобы вы действительно могли видеть доступные ответы.

8
ответ дан 2 December 2019 в 02:56
поделиться

Эта ссылка предназначена для VBScript, но я думаю, что коды возврата должны быть такими же: Справочник по функциям MsgBox

Коды возврата сообщают, какая кнопка была нажата:

1   OK
2   Cancel
3   Abort
4   Retry
5   Ignore
6   Yes
7   No
6
ответ дан 2 December 2019 в 02:56
поделиться

Это возвращаемое значение из MsgBox (). Чтобы сделать программу более читаемой, автору следовало использовать их символическое значение:

vbYes   6
vbNo    7

См. статью MSDN для получения дополнительной информации

5
ответ дан 2 December 2019 в 02:56
поделиться

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
5
ответ дан 2 December 2019 в 02:56
поделиться

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

3
ответ дан 2 December 2019 в 02:56
поделиться

6 и 7 - жестко закодированные значения, которые имеют особое значение. Вызов MsgBox ("Click Yes ...") 'вернет число, которое позволит вашему коду определить, что пользователь сделал с окном сообщения, а затем вы сможете использовать условные выражения (ваши операторы IF), чтобы решить, что делать дальше.

Полный список этих специальных значений можно найти в документации MSDN здесь:

http://msdn.microsoft.com/en-us/library/139z2azd (VS.80) .aspx

5
ответ дан 2 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: