Declare Function GetCurrencyFormat Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, _ ByVal dwFlags As Long, _ ByVal lpValue As String, _ lpFormat As Any, _ ByVal lpCurrencyStr As String, _ ByVal cchCurrency As Long) As Long
GetCurrencyFormat форматирует числовое значение в соответствии с принятым локальным представлением денежных сумм.
В случае ошибки возвращается 0 (используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает число символов в отформатированной строке.
' Выводим сумму $1,234,567.89 ' в соответствии с локальными настройками Dim cft As CURRENCYFMT Dim formatted As String ' отформатированная строка Dim strlen As Long ' длина отформатированной строки ' Выводим число в соответствии с локальными настройками formatted = Space(256) strlen = GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, "1234567.89", ByVal CLng(0), _ formatted, Len(formatted)) formatted = Left(formatted, strlen) Debug.Print "Используемый локальный формат: "; formatted ' Теперь отформатируем число по своим правилам With cft ' Выводим три цифры после десятичной точки .NumDigits = 3 ' Выводим нули после десятичной точки .LeadingZero = 1 ' Группируем каждые три цифры слева от десятичной точки .Grouping = 3 ' Используем запятую в качестве десятичной точки .lpDecimalSep = "," ' Используем точку для группировки разрядов .lpThousandSep = "." .NegativeOrder = 4 .PositiveOrder = 1 ' Используем знак $ для денежной суммы .lpCurrencySymbol = "$" End With formatted = Space(256) strlen = GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, "-1234567.89", cft, formatted, _ Len(formatted)) formatted = Left(formatted, strlen) Debug.Print "Наш созданный формат: "; formatted