3 Stimmen

InputBox Abbrechen

Ich habe ein Eingabefeld erstellt, um den Benutzernamen einzugeben, bin aber mit der Schaltfläche "Abbrechen" hängen geblieben

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

Gibt es auch eine Möglichkeit, dass, wenn die Schaltfläche X auf dem Formular angeklickt wird, cmdQuit_Click ausgeführt wird, so dass, wenn der Benutzer auf die Befehlsschaltfläche Quit oder X klickt, das Quit-Skript ausgeführt wird.

11voto

Alex K. Punkte 165323

Sie können verwenden StrPtr() um festzustellen, ob auf "Abbrechen" geklickt wurde;

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

Wenn Sie etwas tun wollen, wenn das Formular entladen wird, können Sie die Form_Unload Veranstaltung oder besser die Form_QueryUnload Ereignis, das vor dem eigentlichen Entladen ausgelöst wird und Ihnen erlaubt, es abzubrechen.
Es wird Ihnen auch mitteilen, warum das Formular entladen wird ( UnloadMode wird 0 sein, wenn das rote X angeklickt wird)

Mit " Unload Me " wird beide Ereignisse auslösen.

Bearbeiten: Aufruf von Form_Load en Form_Load so wird der Stapel irgendwann voll sein. Besser ist es, eine Schleife zu verwenden, um nach einem fehlenden Benutzernamen zu suchen.

0 Stimmen

Danke Alex, die Lösung hat bei mir perfekt funktioniert. Ich würde mich freuen, wenn du mir auch den Loop-Teil erklären könntest.

2voto

Jim Mack Punkte 776

Alex's Antwort mit StrPtr, die ich annehme, funktioniert wie angekündigt, ist gut, soweit es geht, aber der bessere Rat (IMO) ist InputBox insgesamt zu vermeiden. Sie können leicht erstellen Sie Ihre eigenen mit einem Dialog-Stil-Formular, ein Textfeld und ein paar Schaltflächen, und vielleicht ein Symbol, wenn Sie möchten.

Wenn Sie Ihr eigenes Projekt entwickeln, sind Sie völlig flexibel und vorhersehbar, und wenn Sie es einmal haben, können Sie es bei allen zukünftigen Projekten verwenden.

1 Stimmen

Die Funktion InputBox() von VB6 ist ein sehr dünner Wrapper für den entsprechenden API-Aufruf, der Cancel als Rückgabe eines Null-Zeigers dokumentiert. In den seltenen Fällen, in denen eine InputBox nützlich ist, ist diese Erkennungstechnik in Ordnung - es gibt kein Problem der Zuverlässigkeit. Ich stimme jedoch zu, dass InputBox() eine schlechte Wahl für Produktionsprogramme ist, mit denen der durchschnittliche Benutzer interagieren wird.

0 Stimmen

Es war sehr nett von Jim, vorzuschlagen, dass die Erstellung eines eigenen benutzerdefinierten Dialogfelds viel besser ist als die Verwendung von inputbox.the Dialogfeld kann ein viel professionelleres Aussehen gegeben werden.thanks

0voto

Excel InputBox y Application.InputBox sind unterschiedliche Funktionen.

Sub GetValue2()
    Dim Monthly As Variant
    Monthly = Application.InputBox _
        (Prompt:="Podaj wysoko miesicznej wypaty:", _
         Type:=1)
    If Monthly = False Then Exit Sub
    MsgBox "Zarobki rocznie: " & Monthly * 12
End Sub

0voto

Versuchen Sie dies...

Name = Application.InputBox("Bitte Name eingeben")

If Name = "False" Then

MsgBox " Ihre Nachricht hier"

Exit Sub

Ende wenn

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X