lcValue = Format(tnValue, lcFormat) + "$"
which is using the legacy Microsoft.VisualBasic.Strings stuff. I don't really remember how that worked but I think it translates based on the Windows locale rather then the .NET current culture. Why not just use the .NET .ToString() methods e.g.:Public Function GetFormatValueDollar(ByVal tnValue As Double, ByVal nLanguage As Integer) As String > Dim info As CultureInfo > Select Case nLanguage > Case 1 > info = New CultureInfo("en-US") > Case Else > info = New CultureInfo("fr-CA") > ' If you want different separators: > info.NumberFormat.CurrencyDecimalSeparator = "." > info.NumberFormat.CurrencyGroupSeparator = "," > > End Select > Return tnValue.ToString("c", info) > End FunctionThank you, I will use that.