2014-01-23 1 views
1

Я действительно искал часы и часы, но я не могу найти никаких решений.Ошибка application.inputbox после нажатия OK с пустым вводом

Вы должны ввести только цифры в InputBox и MsgBox должен sppears, когда вы просто нажмите кнопку ОК без любого числа или строки ...

Первая часть была легкой, но я всегда получаю сообщение об ошибке, просто ударять ОК!

Public Sub test() 
Dim vntReturn As Variant 
vntReturn = Application.InputBox("Bitte Wert eingeben", "Eingabe", , , , , , 1) 
If StrPtr(vntReturn) = 0 Then 
    MsgBox "Abbrechen gedrückt" 
Else 
    If vntReturn = False Then 
     MsgBox "Nix eingegeben" 
    Else 
     MsgBox vntReturn 
    End If 
End If 
End Sub 

ответ

5

Это происходит потому, что вы объявляете Type для этого InputBox числом. Поэтому excel автоматически попытается исправить это. Вы можете использовать InputBox без Type и запрограммировать собственную проверку для проверки того, является ли это целым числом или нет.

В противном случае вы можете добавить это перед кодом:

Application.DisplayAlerts = False 

А затем установить его Правда после. Теперь, когда вы нажмете ОК, вам не будет предложено ввести ошибку, но InputBox не исчезнет. Вы можете добавить дополнительные инструкции в InputBox, чтобы они поняли, что ему нужен номер.

+2

MERCI !!!! Это работает ;-) –

+0

Хотя первая часть вашего ответа на самом деле решит проблему, я чувствую, что вы не полностью объяснили, почему происходит ошибка. Когда вы используете 'Application.InputBox' с параметром' Type' 1, он работает как функция. Он пытается оценить все, что находится в поле. Он сделал ошибку, если это не число. Поэтому быстро взгляните на код в моем ответе, чтобы лучше понять, как справляться с ситуацией. –

+0

ну, я уже использовал ваш код, и это именно то, что я хочу. Если я просто нажимаю «ok», ничего не происходит, нет сообщения об ошибке и т. Д. НО, но если я введу письмо, не появится сообщение об ошибке, и, по крайней мере, должно появиться сообщение об ошибке для строк .... Как это возможно? –

0

@mehow: как Alex D только что сказал: ваши ответы похожи ;-) Сначала я использовал код mehow, но теперь я просто создаю пользовательскую форму только с кнопкой «OK».

Private Sub Rechnen_Click() 
Dim i As Integer   ' Variable deklarieren 
Dim Sum As Integer 
Dim counter As Variant 
i = 0      ' deklariert, löst beim Kompilieren keinen Fehler aus 
Sum = 0      ' nicht deklarierte Variable löst beim Kompilieren einen Fehler aus 
counter = TextBox1.Value 
Application.DisplayAlerts = False 
If Not IsNumeric(counter) Then 
Exit Sub 
Else 
Unload Userform1 
    On Error Resume Next 
    Do Until i >= counter 

    Zahl = InputBox("Pls enter a number:", i + 1 & ". Versuch") 
    Sum = Sum + Zahl 
    i = i + 1 

    If Not IsNumeric(Zahl) Then 
    MsgBox "calculation premature cancelled!" 
    Exit Do 
    End If 

    Loop 
    Ausgabe = MsgBox("Die Summe lautet: " & Sum, vbInformation, "Ergebnis") 
    Question = MsgBox("is it enough?", vbYesNo + vbQuestion, "repeat") 
     If Question = vbNo Then 
     Userform1.Show 
     Else 
     Unload Userform1 
     Exit Sub 
     End If 
End If 
End Sub 

и так UserForm выглядит следующим образом:

enter image description here

Теперь программа работает нормально;) Спасибо, ребята!

+0

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

+0

Я тоже рад! ;-) –

Смежные вопросы