Auch negative Werte zulassen aber wie?
28.10.2003 13:40:13
Micha
Function MyIsNumeric1(strEingabe As String) As String
Dim i As Byte
Dim strHelp As String
Dim bytKomma As Byte
Dim char As String
'*** StrEingabe ist nicht leer, wenn diese Funktion aufgerufen wird!
'*** Hier werden nur Punkte geprüft: für VBA sind Punkte numerisch, aber sie werden in der Excel-Umgebung
'*** als Tauserdertrennpunkt verstanden. Dann wird die Zahl 2.3 als 23 verstanden. daher müssen Punkte bei der Eingabe
'*** nicht akzeptiert werden
For i = 1 To Len(strEingabe)
char = Mid$(strEingabe, i, 1)
If char = "." Then
MsgBox "Die Eingabe von Punkten ist nicht zulässig!"
MyIsNumeric1 = ""
Exit Function
End If
Next
'*** Hier werden nur die Kommas geprüft: Ein Komma für eine reelle Zahl kann akzeptiert werden, aber nur eins!
For i = 1 To Len(strEingabe)
char = Mid$(strEingabe, i, 1)
If char = "," Then bytKomma = bytKomma + 1
If bytKomma > 1 Then '*** also bei dem zweiten Komma
MsgBox "Die Eingabe von mehr als ein Komma ist nicht zulässig!"
MyIsNumeric1 = ""
Exit Function
End If
Next
'*** Alle andere Zeichen
If Not IsNumeric(strEingabe) And Not strEingabe = "" Then
MsgBox "Bitte nur Zahlen eingeben!"
For i = 1 To Len(strEingabe)
char = Mid$(strEingabe, i, 1)
'*** Alle Ziffern und ein Komma werden akzeptiert und in einem Hilfstext übertragen
If IsNumeric(char) Or (char = "," And bytKomma = 1) Then strHelp = strHelp & char
Next
'*** Der Hilfstext wird im Eingabefeld zurückgeschrieben: alle Zeichen außer Ziffern und ein KOmma sind weg!
MyIsNumeric1 = strHelp
Else
'**** Alles Paletti, die Eingabe wird unverändert zurückgegeben
MyIsNumeric1 = strEingabe
End If
End Function