Hay otros modos de hacerlo:
Código vb:
Ver originalPrivate Sub Text1_LostFocus()
If IsNumeric(Text1.Text) = False Then
MsgBox "Solo se admiten valores numéricos positivos o negativos, puntos de millar y/o coma decimal."
Text1.SetFocus
Text1.SelStart = 1
Text1.SelLenght = Len(Text1.Text)
End If
End Sub
Se admiten valores negativos, puntos de millar y una coma decimal.
Si quieres usar comas para millares y puntos para decimales puedes hacer una función propia:
Código vb:
Ver originalPrivate Sub Text1_LostFocus()
If EsNumero(Text1.Text) = False Then
MsgBox "Solo se admiten valores numéricos positivos o negativos, comas de millar y/o punto decimal."
Text1.SetFocus
Text1.SelStart = 1
Text1.SelLenght = Len(Text1.Text)
End If
End Sub
Private Function EsNumero(ByVal Texto As String) As Boolean
Texto=Replace(Texto,".","@")
Texto=Replace(Texto,",",".")
Texto=Replace(Texto,"@",",")
EsNumero=IsNumeric(Texto)
End Function
Lo he hecho a pelo. Espero que funcione.