Проблема следующая: веду таблицу по договорам фирмы. В одном из столбцов забита цена. Сделал автозаполнение счета в Excel и вордовской болванки договора. В счете сумма например 98494,60 отображается корректно и пропись из этой суммы получается правильная. Но! при заполнении болванки сделанной в Word передается значение не 60 копеек а 6, т.к. в ячейке экселя данное число хранится в виде 98494,6 без нуля на конце. Как же отключить такой формат сохранения значения без перевода ячейки в текстовый формат.
Перерыл массу документов и форумов, везде попадалось лишь про округление или формат ячейки, или настройки самого экселя. Прошу помощи!
Заполнение болванки идет через макрос. Этой ячейке присвоено имя Договор_Цена Объявлена переменная Contract_Price As Double Присваиваем Contract_Price = ActiveSheet.Range("Договор_Цена") и заменяем objDoc.Content.Find.Execute FindText:="#Договор_Цена#", ReplaceWith:=.Contract_Price, Replace:=wdReplaceAll
LVL Это скорее всего и не поможет сформируйте сумму копеек отдельно.
Черт побери! Как же я до этого не допер? На то видимо форумы и создавались. К сожалению как бы не был крут Excel, но без костылей никак не обойтись. Количество столбцов неуклонно растет.
Мотя Для корректного визуального отображения: столб К - формат ФИНАНСОВЫЙ. А для "прописью": если функция "цивилизованная" - сделает все, как положено.
Пропись, как раз переводит корректно. Финансовый формат меняет всего лишь визуальное отображение для удобочитаемости, но число там хранится по-прежнему без завершающего нуля.
Hugo Объявляем переменная Contract_Price As string
К сожалению переменная используется еще и для подстановки суммы прописью и такой формат имеющиеся функции не устраивает. Выскакивает ошибка типов.
LVL CDbl() хотя я не очень представляю чем это поможет
Да действительно это не работает.
Зачем вам дополнительный столбец если обработка идет кодом? Делайте эту итерацию в коде.
Кода уже столько навалено, что лишний столбец будет удобнее К тому же кроме меня этой таблицей вряд ли кто-то будет еще пользоваться.
Мотя Есть еще вариант... Как бы не показалось странным - у меня в Word (простым копированием) число 98 494,60 появилось в таком виде. =ОКРУГЛ(K3;2) Число в таком виде в ячейке можно получить путем установки формата ячейки в текстовый или по шаблону "# #,00".
Ну тогда пусть будет double - получаете макросом из его целой части рубли, из дробной копейки в две отдельные переменные, которые уже далее комбинируете как угодно.
dreamkin пишет: К сожалению переменная используется еще и для подстановки суммы прописью и такой формат имеющиеся функции не устраивает. Выскакивает ошибка типов.
Сделайте две переменных: в одну пишите число, во вторую - строку (Range.text) Ну или когда подставляете функцию для прописи - делайте преобразование типов с помощь той же CDbl()
Если используете переменную Contract_Price в расчетах, то объявите новую стринговую переменную Dim Contract_Price_Txt As String
и присвойте ей нужное отформатированное значение: Contract_Price_Txt = Format(Contract_Price, "# ##0.00")
или Contract_Price_Txt = ActiveSheet.Range("Договор_Цена").Text
Значение переменно во втором вариане будет зависить от формата ячейки
Можно не использовать дополнительную переменную, а форматировать на лету и отправлять в Word форматированное число с помощью Format(Contract_Price, "# ##0.00")
MCH Можно не использовать дополнительную переменную, а форматировать на лету и отправлять в Word форматированное число с помощью Format(Contract_Price, "# ##0.00")
Доброго времени суток! Помогите пожалуйста! Есть столбцы чисел (Пример 2,0800 или 22,3250 ). Формулами разбиваю каждое такое число по трем столбцам 2/08/00( не пишет последние 00) или 22/32/50(не пишет 0 после 5 получаем число 5 вместо 50). Необходимо, чтобы каждая цифра сохранялась.
Здравствуйте. Нифига себе какую древнюю тему откопали Вариант решения в лоб =IF(ISERR(FIND(",";B3));"";MID(B3;FIND(",";B3)+1;100))&REPT("0";4-LEN(IF(ISERR(FIND(",";B3));"";MID(B3;FIND(",";B3)+1;100))))