Отформатируйте число, которое можно округлить с разделителем тысяч - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть код, заканчивающийся переменной «dTot», которая будет числом с точностью до 5 десятичных знаков.

У пользователя есть возможность установить количество десятичных знаков для округления dTot, пользовательпеременной присваивается выбор «iDP», это может быть любое значение от 0 до 5.

dTot = Round (dTot, iDP) `работает просто отлично.

Но мне также нужноформатировать округленное число с разделителем тысяч при добавлении в другой массив.

Format(Round(dTot, iDP), "#,##0.00000")

работает, если iDP равно 5, и

Format(Round(dTot, iDP), "#,##0.00")

если iDP равен 2

Как я могу получить формат, соответствующий значению iDP?

Я знаю, что мог бы использовать «Выбрать регистр iDP» и иметь 6 случаев, но поскольку форматирование необходимоприменить до 6 выражений в каждой из 200 строк в массиве, я надеялся найти способ избежать "Select Case"

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Создайте строку маски формата при необходимости.

Format(Round(dTot, iDP), "#,##0" & IIF(iDP, ".", "") & string(iDP, "0"))

enter image description here

0 голосов
/ 24 декабря 2018

РЕДАКТИРОВАТЬ: Добавлен блестящий '& IIF(iDP, ".", "")', используемый в принятом ответе user10825204 :

WorksheetFunction.Rept vs Replace (Space)

WorksheetFunction.Rept

Format(Round(dTot, iDp), "#,##0" _
    & IIF(iDP, ".", "") & WorksheetFunction.Rept("0", iDp))

Заменить (Пробел)

Format(Round(dTot, iDp), "#,##0" _
    & IIF(iDP, ".", "") & Replace(Space(iDp), " ", "0"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...