Renaton, existe ocx pronta para isto. Como por exemplo a activetext (exitem outras), é boa mas eu prefiro evitar ocx (evitar sim, mas em muitos momentos temos de usar).
Você pode usar um código assim:
Private Sub Text1_KeyPress(KeyAscii As Integer)
'Código para aceitar só valores numéricos
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And KeyAscii <> 44 And KeyAscii <> 46 Then
KeyAscii = 0 'Limpa o caracter digita, ou seja fica como se não tivesse digitado nada
End If
'KeyAscii = 8 = BackSapce
'KeyAscii = 44 = Vírgula
'KeyAscii = 46 = Ponto
'Chr - converte o valor númerico da varável KeyAscii para uma letra
'IsNumeric - verifica se a letra é um númerio
End Sub
Private Sub Text1_LostFocus()
If Len(Text1.Text) = 0 Then
MsgBox "Por favor, informe um valor para este campo", vbCritical + vbOKOnly
Else
'Text1.Text = Format(Text1.Text, "Currency")
Text1.Text = Format(Text1.Text, "Standard")
End If
End Sub