Hay otros modos de hacerlo:
    
Código vb:
Ver original- Private 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 original- Private 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.