2015-10-26 4 views
1

Я читаю файл с валютными значениями и создаю строки данных для печати в текстовый файл. Я обнаружил, что мне нужно использовать параметр VALUE2, чтобы остановить макрос округления значений. Тем не менее, я столкнулся с проблемой, что, если какая-либо из конечных цифр является нулями, они отбрасываются. Мне нужно, чтобы макрос сохранял все цифры.VAULE2 удаляет ведущие нули из валюты

Например, если ячейка имеет $ 10.50, отформатированную как валюта, код ниже читает 10.5 в payAmountTemp, но мне нужно 10.50.

payAmountTemp = Cells(j, 5).Value2 

Что было бы лучшим способом для правильной записи данных? Просто FYI, я должен затем форматировать данные для текстового файла для 7-значного поля без десятичной и с ведущими нулями, поэтому я использую следующий код.

payAmount = String(7 - Len(Replace(payAmountTemp, ".", "")), "0") & Replace(payAmountTemp, ".", "") 

В приведенном выше примере, я получаю 0000105, где мне нужно 0001050.

ответ

0

Для второго десятичного знака:

Format(payAmountTemp, "#0.00") 

для семи мест

Format(payAmountTemp * 100, "0000000;-000000") 
+0

Wow. Такой приятный способ получить семь цифр. Благодарю. – Jay

+0

На самом деле проблема с этим возникла из-за отрицательных чисел. Он помещает отрицательный знак перед ведущими нулями и не считает его цифрой. Таким образом -15.25 стал -0001525. Хотя я не уверен, что отрицательный знак перед нулями в порядке или нет, я знаю, что для длины требуется всего 7 символов. Второй десятичный формат - это именно то, что мне нужно для другой проблемы. – Jay

+0

Затем используйте оператор If, чтобы проверить, является ли отрицательным, и использовать другую строку, которая имеет только шесть 0. –

Смежные вопросы