Yo usaría una rutina con una única validación para letras y números y una para teclas especiales.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not "1234567890" Like "*" & CStr(Chr(KeyAscii)) & "*" Then
If KeyAscii <> vbKeyBack Then KeyAscii = 0
End If
End Sub
Esto te permitiría, no solamente avaluar y convertir una única vez al argumento KeyAscii (máximo dos veces si es que querés editarlo con las teclas normales edición comoel BackSpace), sino que podrías ampliar la variedad de signos a aceptar en caso que quieras incorporar decimales y simbolos de moneda, sin mayor codificación.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not "$,1234567890" Like "*" & CStr(Chr(KeyAscii)) & "*" Then
If KeyAscii <> vbKeyBack Then KeyAscii = 0
End If
End Sub
Son solo distintas formas de enfocar el mismo problema.
Suerte