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.