Here is my version of numeric-only textbox sample. I hope it helps:
VBA Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
If KeyAscii = 46 Or KeyAscii = 44 Then
If TextBox1.Text = "" Then TextBox1.Text = 0
KeyAscii = Asc(Application.International(xlDecimalSeparator))
If InStr(TextBox1.Text, Application.International(xlDecimalSeparator)) Then KeyAscii = 0
Else
KeyAscii = 0
End If
End If
End Sub