I have a userform with approximately 150 individual text boxes that will be used for numerical entry.

I have the following code set up for each and every text box that is to be used for numerical entry.
Private Sub txtRawP1P2Day_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   Limit entry to only numerical data
    If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 44 _
        Or KeyAscii = 45 Or KeyAscii = 46) Then KeyAscii = 0
End Sub
Private Sub txtRawP1P2Day_AfterUpdate()
    txtRawP1P2Day.Text = FormatNumber(txtRawP1P2Day.Text, 2)
End Sub
My form works, thanks to some advice I have either read here or had questions answered here.

My question is for future reference. Is there a more efficient way of accomplishing this. Again, basically just limit what can be entered to numerical data and then format the display to a common numerical format.

This just seems very bulky to do the same thing over, and over, and over.