单击带空输入的确定后,application.inputbox错误

时间:2014-01-23 15:39:24

标签: excel vba 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

2 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为您将此InputBox的Type声明为数字。所以excel会自动尝试纠正这个问题。您可以使用不带Type的InputBox,并编写自己的验证,以检查它是否为整数。

否则您也可以在代码之前添加:

Application.DisplayAlerts = False

然后将其设置为True。现在,当你点击确定时,不会出现错误提示,但InputBox不会消失。您可以向InputBox添加其他说明,以明确它需要一个数字。

答案 1 :(得分:0)

@mehow:正如Alex D刚才所说:你的答案很相似;-) 首先我使用了mehow的代码,但现在我只创建一个只有“OK-button”的用户窗体。

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

现在程序运行正常;)谢谢你们!