Slav пишет:Не проще брать число и писать число?
Попробовал - действительно проще ;-)
Здравствуйте все!
Прошу прощения за перерыв в сообщениях - сначала неделю готовился к отпуску, потом отпуск, потом неделю разгребал после отпуска накопившиеся дела. А тут подошло время отчёта за ноябрь - хочешь-не хочешь, а пришлось вернуться к теме ;-)
Нашёл, как решить проблему (пока "пытался выделить из всего большого скрипта маленький кусочек" ;-).
После того, как происходит заполнение листа книги числами, в скрипте ещё проходит замена шаблонных значений в строках на реальные значения (например, в шаблоне листа была строка "Отчёт за %mmmm_gggg%", и надо было в этой строке заменить "%mmmm_gggg%" на "ноябрь 2014").
Скрипт был написан в спешке и эта операция замены проделывалась над всеми ячейками листа:
strWhat = "%" + CStr(Sheet1.Cells(constNomerZagolovka, jz).Value) + "%" ' строка, которую заменяем
strReplacement = CStr(Sheet1.Cells(i, jz).Value) ' строка, на которую заменяем
For iSvoInf = 1 To Sheet1SvoInf.UsedRange.Rows.Count
For jSvoInf = 1 To Sheet1SvoInf.UsedRange.Columns.Count
Sheet1SvoInf.Cells(iSvoInf, jSvoInf).Value = Replace(Sheet1SvoInf.Cells(iSvoInf, jSvoInf).Value, strWhat, strReplacement) ' меняем
Next
Next
Если же ограничить замену текста только ячейками, в которых действительно есть строка strWhat - то проблема решена - числа остаются числами - и целые, и с копейками.
Но загадка всё-таки осталась нерешённой - почему после замены текста целые числа остаются числами, а числа с копейками становятся текстом?
Прилагаю результат модифицированного (добавлена замена текста на текст по всем ячейкам листа, и шаг значения не 0.01, а 0.1) скрипта коллеги Slav.
strWhat = "%mmmm_gggg%" ' строка, которую заменяем
strReplacement = "ноябрь 2014" ' строка, на которую заменяем
For iSvoInf = 1 To myWB.Worksheets(1).UsedRange.Rows.Count
For jSvoInf = 1 To myWB.Worksheets(1).UsedRange.Columns.Count
myWB.Worksheets(1).Cells(iSvoInf, jSvoInf).Value = Replace(myWB.Worksheets(1).Cells(iSvoInf, jSvoInf).Value, strWhat, strReplacement) ' меняем
Next
Next