Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim s$
Select Case KeyCode
Case VBA.vbKeyBack, VBA.vbKeyDelete
Case VBA.vbKeyDown, VBA.vbKeyUp
Case VBA.vbKeyLeft, VBA.vbKeyRight
Case VBA.vbKeyEnd, VBA.vbKeyHome
Case VBA.vbKeyReturn, VBA.vbKeyTab
Case 48 To 57 '0-9
Case 96 To 105
Case 188, 110, 190: ', .
KeyCode = 188
If InStr(1, TextBox1.Text, ",") > 0 Then KeyCode = 0
Case 109, 189: '-
KeyCode = 0
If InStr(1, TextBox1.Text, "-") = 0 Then
TextBox1.Text = "-" & TextBox1.Text
Else
TextBox1.Text = VBA.Replace(TextBox1.Text, "-", "")
End If
Case Else: KeyCode = 0
End Select
End Sub