2013-02-11 5 views
8

Mein CodeVBA Excel, passt nicht für inputbox als integer

Dim a As Integer 
a = InputBox("Enter the number", "Program", "", 7000, 6000) 
If a = Empty Then 
    ' do code... 
Else 
    MsgBox "Enter the number." 
End If 

Wenn ich ein leeres Feld verlassen, gibt Excel einen Type Mismatch Fehler. Ich möchte eine Nachricht anzeigen.

Antwort

11

Seit a ist ein Integer, ist es nicht eine String oder sein Empty enthalten. Verwenden Sie ein Variant und dann überprüfen, um zu sehen, was zurückgegeben wurde:

Dim a As Variant 
Dim b As Integer 

a = InputBox("Enter the number", "Program", "", 7000, 6000) 

If Not IsNumeric(a) Then 
    'a is not a number 
Else 
    'a is a number and can be converted to Integer 
    b = CInt(a) 
End If 
4

Sie haben a definiert als Integer. Integer kann nicht leer sein. Verwenden Sie Variant statt Integer:

Dim a As Variant 
a = InputBox("Enter the number", "Program", "", 7000, 6000) 
If a = Empty Then 
    ' do code... 
Else 
    MsgBox "Enter the number." 
End If 
+1

+1 für die erste richtige Antwort - obwohl Sie wollen 'Wenn IsEmpty (a) Then' – brettdj

+0

meine +1 brett zu) –

+0

@brettdj warum don schreibst du deine eigene Antwort nicht? :) –