2014-10-08 5 views
15

Ho una casella di immissione che chiede all'utente di inserire una data. Come faccio a far sapere al programma di interromperlo se l'utente fa clic su annulla o chiude la finestra di dialogo di immissione invece di premere OK.Come rilevare se l'utente seleziona annulla InputBox VBA Excel

Qualcosa di simile if str=vbCancel then exit sub

Attualmente, l'utente può colpire OK o Annulla, ma il programma viene eseguito ancora

str = InputBox(Prompt:="Enter Date MM/DD/YYY", _ Title:="Date Confirmation", Default:=Date) enter image description here

risposta

21

Se l'utente sceglie Annulla, una stringa di lunghezza zero viene restituito. Non è possibile differenziare questo dall'inserimento di una stringa vuota. È comunque possibile effettuare la propria classe InputBox personalizzato ...

Il vostro esempio

Private Sub test() 
    Dim Str As String 
    Str = InputBox("Enter Date MM/DD/YYY", "Date Confirmation", Now) 
    If Str = vbNullString Then 
     MsgBox ("User canceled!") 
    End If 
End Sub 

Sarebbe dire all'utente hanno annullato quando eliminare la stringa di default, oppure fare clic su Annulla.

Vedi http://msdn.microsoft.com/en-us/library/6z0ak68w(v=vs.90).aspx

+0

Grazie - Avrebbe dovuto essere vbNullString invece di vbCancel – user2103670

+0

@ user2103670 sì purtroppo 'InputBox' restituisce il valore al posto del pulsante cliccato come' fa MsgBox'. – djv

+0

@DanVerdolino Questo è vero se si utilizza la variabile String dichiarata per il test. Ma come ha sottolineato Siddharth, puoi usare anche il pulsante premuto. – guitarthrower