Esta coisa é doida mesmo, mas é simples, vai a forma de resolver:
Coloque a formatação do Text como Números, com a quantidade de casas decimais que desejar e com separador de milhares. (se for Currency)
Dim Cfrete As Currency
Private Sub Textfrete_LostFocus
If Len(trim(Textfrete)) = 0 Then Textfrete = 0
If Not Isnumeric(Textfrete) Then Textfrete = 0
If Val(textfrete) < = 0 Then Textfrete = 0
Textfrete = Format$(Textfrete, "###,##0.00") (com duas casas decimais)
Cfrete = textfrete
End Sub
Neste caso coloquei duas casas decimais, e o usuario não deve digitar o separador de milhares, isto fica por conta da sua formatação, se digitar não pega, (verifique no evento KeyDown ou KeyPress)
O cálculo faça com as variaveis e jogue no Texts da forma que quiser.
vlu//