我真的经常搜索数小时,但我找不到任何解决方案。
您只应在输入框中输入数字,并且当您只是点击确定而没有任何数字或字符串时,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
答案 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看起来像:
现在程序运行正常;)谢谢你们!