Excel VBA IsNumeric?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Zunächst einmal gilt es herauszufinden, ob es überhaupt eine Zahl ist.
If IsNumeric(Zahl) then
  'Dann >= 0
  If Zahl>= 0 then
       'dann natürliche Zahl
       If Worksheetfunctions.RoundDown(Zahl,0) = Zahl then
             'Hier sind alle Bedingungen erfüllt. 
       End if   
  end if  
else
End if 

Ich wuerde zuerst pruefen, ob es ueberhaupt ein numerischer Ausdruck ist, also mit isnumeric. Wenn true zurueck gegeben wird, ist es damit aber immernich keine zahl, sindern nur ein numerischer Ausdruck, da inputbox ja string zurueck gibt.

Also, wenn ja, dann erstmal Typ konvertieren, alao mit cdbl(zahl). Jetzt ist der ausdruck eine zahl und kann weitergeprueft werden.

Ansonsten kracht es bei text bei int(zahl)

Heist also zuerst einmal

If isnumeric(zahl) =false then

Msgbox...

Goto...

End if

Hier jetzt weiter mit den anderen Prüfungen

Gruss, Armin

Woher ich das weiß:Berufserfahrung

ersetze mal

Int(Anzahl) = False

durch

Anzahl <> Int(Anzahl)

Und die erste Bedingung ist in zweierlei Hinsicht falsch.
If Anzahl <= 0 ...

Die Variable heißt Zahl. Und wenn die Null erlaubt sein soll, dann müsste es

If Zahl < 0 ...

heißen.

Im Übrigen, so wie Hannes62a schreibt, stimmen die Variablennamen nicht ueberein. Dies zuerst in Ordnung bringen.

Dann ist die Funktion int() auch nicht korrekt. Int liefert ja nur den ganzzahligen Teil einer Zahl. Also int(33.6)=33. Aber Du willst ja pruefen, ob es eine Dezimalzahl ist.

Deshalb bringt es auch nichts, wie oben gepostet, wenn man die Bedingung mit int umbaut. Die Variable Zahl ist ja der Rückgabewert der Inputbox. Wenn das also Text ist, dann kracht es bei der int Funktion. Deshalb grundsaetzlich erstmal pruefen, wie weiter oben beschrieben n, ob der Ausdruck numerisch ist.

Wenn ja, dann geht es weiter, ansonsten die Meldung.

Dann ist auch der Ansatz mit dem Verglich <> gut anzuwenden

Vg

Woher ich das weiß:Berufserfahrung