InputBox Cancel - PullRequest
       4

InputBox Cancel

3 голосов
/ 26 июня 2010

Я создал поле ввода для ввода имени пользователя, но застрял с кнопкой отмены

Private Sub Form_Load()
fsUserName = UCase(InputBox("Please Enter your name.", "User Name", _
"dc"))

If fsUserName = "" Then
MsgBox "No name Entered." & Chr(13) & Chr(13) & _
"You must enter a name.", vbExclamation, "ERROR"
Form_Load
ElseIf VarType(fsUserName) = 0 Then 'If cancel clicked
cmdQuit_Click

End If

Также существует способ, при котором при нажатии кнопки X в форме выполняется cmdQuit_Click, поэтому, если пользователь нажимает кнопку «Выход» или «X», запускается сценарий «Выход». В сценарии выхода имеются окна сообщений и очистки.

Ответы [ 4 ]

11 голосов
/ 26 июня 2010

Вы можете использовать StrPtr(), чтобы определить, была ли нажата кнопка отмены;

Dim fsUserName As String

fsUserName = InputBox("Please Enter your name.", "User Name", "dc")

If (StrPtr(fsUserName) = 0&) Then
    MsgBox "Cancelled or X clicked"
ElseIf fsUserName = "" Then
    MsgBox "No name Entered." & vbCr & "You must enter a name.", vbExclamation, "ERROR"
Else
    fsUserName = UCase$(fsUserName)
    MsgBox fsUserName
End If

Если вы хотите что-то сделать, когда форма выгружается, вы можете использовать событие Form_Unload или, что лучше, событие Form_QueryUnload, которое срабатывает до фактической выгрузки и позволяет отменить его.
Он также расскажет вам, почему форма выгружается (UnloadMode будет 0, если нажать красный X)

Использование «Unload Me» вызовет оба события.

Редактировать: Вызов Form_Load в Form_Load подобным образом в конечном итоге заполнит стек, лучше использовать цикл для поиска отсутствующего имени пользователя.

2 голосов
/ 26 июня 2010

Ответ Алекса с использованием StrPtr, который, как я полагаю, работает так, как рекламируется, хорош в этом смысле, но лучший совет (IMO) - вообще избегать InputBox.Вы можете легко создать свой собственный, используя форму в диалоговом стиле, текстовое поле и пару кнопок, и, возможно, значок, если хотите.

Прокрутка собственного дает вам полную гибкость и предсказуемость, и как только вы получитеэто вы можете использовать его в любых будущих проектах.

0 голосов
/ 23 июня 2017

Попробуйте это ...

Имя = Application.InputBox ("Пожалуйста, введите имя")

Если имя = "Ложь", тогда

MsgBox "Ваше сообщение здесь"

Exit Sub

End If

0 голосов
/ 06 февраля 2016

Excel InputBox и Application.InputBox - это разные функции.

Sub GetValue2()
    Dim Monthly As Variant
    Monthly = Application.InputBox _
        (Prompt:="Podaj wysokość miesięcznej wypłaty:", _
         Type:=1)
    If Monthly = False Then Exit Sub
    MsgBox "Zarobki rocznie: " & Monthly * 12
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...