![]() |
|
Модераторы: mihanik |
![]()
|
|
| kit_kat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.2.2007 Где: Петербург Репутация: нет Всего: 6 |
Здравствуйте!
Перевожу макросом прайс в нужный мне текстовый формат. В столбце цены написаны то в долларах, то в рублях, это задано форматом ячейки. Т.е. формат либо 0" USD", либо 0" Руб." Теперь мне надо в свой файл записать после числа либо знак доллара, либо знак рубля. У меня не получается сравнить. Ошибка Пытаюсь делать так:
По логике вроде верно. Не получается сравнение, т.к. неверно оформлена строка 0" USD Подскажите, может по-другому можно сделать? Конечная цель получить в текстовом файле название, цену и единицу измерения цены. Спасибо. Это сообщение отредактировал(а) kit_kat - 11.8.2007, 08:49 |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 9 Всего: 109 |
Не берусь утверждать на все 100%, но Cells( ).Value не всегда строка символов.
Для использования trim необходимо сначала Cells( ).Value преобразовать в строку символов. Примерно так Trim(Cstr(Cells(i, "B").Value)) |
|||
|
||||
| Genyaa |
|
||||
|
Усердный ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 25.9.2006 Где: Москва Репутация: 2 Всего: 11 |
У Cells есть свойство Text, возвращающий символьное (строковое) видимое на листе значение:
Хотя решение через NumberFormat было бы правильней с точки зрения сути задачи... но раз попросили "по-другому сделать" - решил предложить. Тем не менее.... о Вашем решении CStr(Cells(i, "B").NumberFormat в Вашем случае вероятно возращает нечто вроде этого: [$USD] #,##0.00 Поэтому и анализ нужно делать так:
--------------------
Всякое решение плодит новые проблемы. |
||||
|
|||||
| kit_kat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.2.2007 Где: Петербург Репутация: нет Всего: 6 |
Спасибо,
Genyaa, mihanik. В итоге прошел вариант
Второй не прошел. Еще раз спасибо. |
|||
|
||||
| RussianHero |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 14.8.2007 Где: г. Балашиха, МО Репутация: нет Всего: нет |
Кстати, я тут сам наткнулся недавно на подобную вещ... При работе с Вордовской таблицей, мне надо было сложить числа из двух ячеек.... Я переводил ячейку(она ж типа - строка) в интегер и пытался сложить.. а на меня раулались, что несоответствие типов.... после двух часов геморроя я узнал что и как, оказываетсья если из ячейки считывать текст вот таким образом -
myTable.Cell(i,2).Range.Text то в конце добавляеться два лишних символа - пробел и какой-то черный прямоугольник.... Кароче жесть... и если хотите получить само число из ячейки, делайте так - TempStr = Mid(myTable.Cell(i,2).Range.Text, 1, Len(myTable.Cell(i,2).Range.Text) - 2) |
|||
|
||||
| mihanik |
|
||||||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 9 Всего: 109 |
RussianHero,
добавляются два символа, обозначаемые vbCrLf. T.e. chr(13)+chr(10) В твоём случае решение такое
вместо
Кроме того, RussianHero!!! Делаю тебе замечание. Ты недавно появился на форуме и уже неоднократно нарушил правила. Как в этом разделе, так и в разделе посвящённом VB. Ещё одно-два нелепых замечания и получишь "-" в репутацию... |
||||||
|
|||||||
| RussianHero |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 14.8.2007 Где: г. Балашиха, МО Репутация: нет Всего: нет |
Эм, Мишка, каким образом я нарушил правила???
Я не флужу, говорю по теме, пишу коды в специальных тэгах.... Единственное,что не так - так это один вопрос - одна тема, но и это я уже понял... что-то еще не так? А вот по теме -
Я так делал... а потом переводил этот TempStr в интеджер... И знаешь что самое смешно - он тут-то и ругаллся на несоответствие типов... Я все думал, что же не так-то... Потом просто вывел этот TempStr и увидел, что вместо прсото числа "2" там у меня - "2 <прямоугольничек>" После этого сделал Mid и все нормально.... Т.е. CStr как ты предложил(ничего, что я на "ты"?) работает и я получаю строку.. но мне-то нужно число? а вот перевод в число ругаеться, т.к. в строке еще этои 2 символа. Вот 8) |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 9 Всего: 109 |
Используй преобразование типов. Вместо Cstr используй Cint, Cdbl, Clng. Или на худой конец Val Всё! Эту тему закрываю... |
|||
|
||||
![]()
|
| Правила форума "Программирование, связанное с MS Office" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |