2014-10-08 19 views
15

Mam pole wprowadzania, prosząc użytkownika o wprowadzenie daty. Jak mogę poinformować program, aby zatrzymał się, jeśli użytkownik kliknie przycisk Anuluj lub zamknie okno wprowadzania, zamiast nacisnąć przycisk OK.Jak wykryć, czy użytkownik wybrać Anuluj InputBox VBA Excel

Coś if str=vbCancel then exit sub

Obecnie użytkownik może trafić OK lub Anuluj ale program nadal działa

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

Odpowiedz

21

Jeżeli użytkownik kliknie przycisk Anuluj, ciąg o zerowej długości jest zwracany. Nie możesz tego odróżnić od wpisywania pustego łańcucha. Można jednak tworzyć własne klasy niestandardowej InputBox ...

Twój przykład

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 

powie użytkownikowi one anulowane, gdy usunąć domyślnego ciąg, albo kliknij przycisk Anuluj.

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

+0

Dzięki - Powinien zostały Vbnullstring zamiast vbCancel – user2103670

+0

@ user2103670 tak niestety 'InputBox' zwraca wartość zamiast przycisk kliknięty jako' robi MsgBox'. – djv

+0

@DanVerdolino Jest to prawdą, jeśli do testu użyto zadeklarowanej zmiennej String. Ale jak zauważył Siddharth, możesz również użyć wciśniętego przycisku. – guitarthrower

Powiązane problemy