En esos casos yo hago lo siguiente (no es lo más ortodoxo, pero me funciona):
Public Function Formato_numeros(ByVal Valor as Currency)
dim NuevoValor as Double
NuevoValor = Replace(Valor, ",", "!")
NuevoValor = Replace(NuevoValor, ".", "")
Formato_numeros = Replace(NuevoValor, "!", ".")
Y la devolución de esa función es lo que guardo en la base de datos (en un campo DECIMAL).
EDITO: Perdón, no había visto el último comentario.