Herbers Excel-Forum - das Archiv

Nur ein "-" an erster Stelle?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox
Bild

Betrifft: Nur ein "-" an erster Stelle?
von: Micha
Geschrieben am: 28.10.2003 14:26:29
Hallo hier in dem Modul will das bei der EIngabe in eine Textbox nur Zahlen zugelassen sind. Also kein Punkt nur ein Komma und keine Buchstaben. Diese Lösung lässt aber mehrere "-" zu soll aber nur an der ersten Stelle eins zulassen. Wie geht das?



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 = "" And Not Left(strEingabe, 1) = "-" 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


Bild

Betrifft: AW: Nur ein "-" an erster Stelle?
von: andre
Geschrieben am: 28.10.2003 14:36:39
hallo micha,

was kommt denn da raus? im letzten teil wird auf isnumeric geprüft, und wenn ---12 noch numerisch ist ???
ansonsten mal den Komma-Part mit - wiederholen:
'*** 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 'hier das minus statt komma
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
Bild

Betrifft: AW: Nur ein "-" an erster Stelle?
von: Micha
Geschrieben am: 28.10.2003 14:38:46
ABer wie mach ich es das das Komma nur an der ersten Stelle stehen darf?
Bild

Betrifft: AW: Nur ein "-" an erster Stelle? - Rest
von: andre
Geschrieben am: 28.10.2003 14:41:20
... ich war noch gar nicht fertig...das minus kann ja auch in der mitte kommen. eventuell fängt das aber auch der letzte prüfpart ab.

'*** 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 'hier das minus statt komma
if bytkomma = 1 and i > 1 then
MsgBox "Das Minus kommt zu spät"
MyIsNumeric1 = ""
Exit Function
End If
If bytKomma > 1 Then '*** also bei dem zweiten Minus
MsgBox "Die Eingabe von mehr als einem Minus ist nicht zulässig!"
MyIsNumeric1 = ""
Exit Function
End If
Next

gruss andre
Bild

Betrifft: AW: Nur ein "-" an erster Stelle? - Rest
von: Micha
Geschrieben am: 28.10.2003 14:48:27
Habs probiert:
wenn ich jetzt -4 eingebe sagt er nach der 4 Minus kommt zu spät.
Passt nich zu 100 % aber ich glaub zu 80%. Weisst du des Rätsels Lösung?
Bild

Betrifft: AW: Nur ein "-" an erster Stelle? - Rest
von: Micha
Geschrieben am: 28.10.2003 14:57:07
Habs selbst rausgefunden muss so heissen:
If bytKomma >= 2 And i > 1 Then
Bild

Betrifft: AW: Nur ein "-" an erster Stelle? - Rest
von: andre
Geschrieben am: 28.10.2003 15:08:36
hallo micha,
hast du auch z.b. -4- oder 4-4 usw. probiert?
gruss andre
 Bild
Excel-Beispiele zum Thema " Nur ein "-" an erster Stelle?"
In zweiter UserForm Werte aus erster UserForm anzeigen Bei falscher Eingabe alten Wert wiederherstellen
Automatisch Sicherungsdatei erstellen Adressdaten der aktiven Zelle über VBA feststellen
Fundstellen in UserForm listen Eigene Menüleiste mit Untermenüs erstellen
Arbeitsmappen-History erstellen Spielpaarungen zusammenstellen
Per VBA einen Verweis zu einer *.DLL erstellen Spracheinstellung der Excel-Anwendung feststellen