Metti un codice tipo questo nell'evento LostFocus del TextBox:
DIM Stringa, Stringa2 as String
DIM I as Integer
Stringa = TextBox.Text
Stringa2 = ""
FOR I = 1 TO Len(Stringa)
SELECT CASE Mid(Stringa, I, 1)
CASE "0" TO "9"
Stringa2 &= Mid(Stringa, I, 1)
CASE "," , "."
Stringa2 &= "."
CASE ELSE
Stringa2 &= ""
ENDIF
NEXT
TextBox.Text = Format(Val(Stringa2), "-##,###,##0.00")
Selezioni solo i numeri ed il separatore decimale (se l'utente pigia il punto o la virgola, è la stessa) e poi formatti il numero ottenuto. Nell'esempio qui sopra, hai il segno "-" che indica a Gambas di considerare il segno del valore solo se è negativo, poi hai una formattazione con "#"che rappresenta una cifra che può esserci oppure no, la "," che indica di utilizzare il separatore delle migliaia, poi lo "0" che indica di mettere comunque e sempre una cifra (per evitare numeri che inizino con la virgola come nel caso del ValueBox), il "." che dice di usare il separatore dei decimali e poi i 2 zeri finali che formattano il numero con 2 cifre decimali (o 2 zeri se non ci sono cifre dopo la virgola).
P.S.:
questo è un esempio semplicissimo. Si potrebbe migliorare il filtro usando le espressioni regolari oppure gestendo l'evento KeyPress e la funzione Key per selezionare in anticipo i tasti "buoni".