Textbox: nur 2Stellen nach Komma
08.02.2009 12:49:00
WolfgangN
Ich habe eine Textbox in einem Userform, in dieser Textbox möchte ich schon während der Eingabe verhindern, dass der User nach dem Komma mehr als 2 Ziffern eingeben kann. Also ab der 3.Ziffer soll nichts mehr passieren. Vor dem Komma ist die Anzahl egal. Im Archiv habe ich schon einige Varianten mit InStr(TextBox1, ",") gefunden, leider reichen meine Kenntnisse nicht aus dies in meiner Textbox einzufügen.
Ich bitte deshalb um Hilfe. Danke für Euer Interesse.
Gruß Wolfgang
Hier mein jetziger Code. Die letzten 4 Zeilen müßten angepaßt werden, alles davor klappt gut.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim S As Integer
Select Case KeyAscii
'lässt nur Zahlen von 0-9 zu,
Case 48 To 57
'bei Eingabe von Punkt wird Komma daraus, dann wird verhindert,
'dass mehr als ein Komma eingetragen wird,
Case 46: KeyAscii = 44
If InStr(TextBox1, ",") > 0 Then
KeyAscii = 0
ElseIf InStr(TextBox1, ",") = 0 And Len(TextBox1) = 0 Then
TextBox1 = "0"
End If
Case 44
If InStr(TextBox1, ",") > 0 Then
KeyAscii = 0
'wenn nur ein Komma eingegeben wird erscheint 0, in Textbox,
ElseIf InStr(TextBox1, ",") = 0 And Len(TextBox1) = 0 Then
TextBox1 = "0"
End If
Case Else
KeyAscii = 0 'alle anderen Tasten bewirken nichts
End Select
'verhindert, dass eine Null vor einer folgenden Zahl steht, Null vor Komma erlaubt,
While TextBox1 Like "0*" And Not TextBox1 Like "0,*" And KeyAscii 44
TextBox1 = Right(TextBox1, Len(TextBox1) - 1)
Wend
'es werden nur 2 Stellen nach dem Komma zugelassen
'S = InStr(TextBox1, ",")
'If Len(TextBox1) = 4 And S = 0 Then KeyAscii = 44
'If S > 0 Then TextBox1.MaxLength = S + 2
End Sub