Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Преобразовать в число
 
Любопытство сглодало.
Прикладываю файл с макросом.
При запуске макроса - умножает на 1000.
При выполнении тех же действий вручную - нет.

Оригинал темы
 
фигасе!.. не знал.
вывод - вба-шный код воспринимает при pastespecial запятую как разделитель групп разрядов.
ессно, нигде про это не написано.
американский пофигизм а-ля "мы великая нация".
Изменено: ikki - 6 Окт 2013 18:47:10
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ну как же нигде не написано...VBA использует американские разделители внутри кода всегда. Разве у Вас получалось записать число 234,34? Нет. Вы всегда записываете 234.34. Всегда так было.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
так то внутри кода.
такие особенности хорошо известны и за это - любимы.
и работа функции Val, и обожаемый всеми американский формат даты...

а здесь-то - вызывается метод Excel-вского, а не VBA-шного объекта.
имхо, неочевидный результат.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Как сказать...Любой метод, вызыванный из VBA подчиняется именно VBA, а не программе, к которой этот метод принадлежит. В данный метод при работе с числами передается информация о параметрах/аргументах. Т.к. аргумент в данном случае число - то VBA его так и воспринимает - числом. Таким, какое он в состоянии обработать внутри себя и передать в качестве аргумента.
Никогда не задумывались, почему при преобразовании чисел, записанных как текст, через Спец.вставку из Excel это работает, а из VBA нет?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
"Лечение" псевдо-чисел на листе, но VBA-средством, предложил (давно) Алексей (Казанский)
Код
    For Each Area In Selection.SpecialCells(xlCellTypeConstants).Areas
        Area.FormulaLocal = Area.FormulaLocal
    Next
 
Честно скажу, код не смотрел, ни здесь, ни в "оригинале" темы. Но, раз уж речь зашла о Val, то в спраке написано, что для региональных стандартов нужно использовать CVar.
...а "запятую" Val, вообще-то считает за текст и обрезает. А данный случай частный - когда после запятой ровно три знака.
 
Не надо "лечения", не надо "Но, раз уж речь зашла о Val".
Макрос записан рекордером.
Файл поглядите.
вот это
Код
 For Each Area In Selection.SpecialCells(xlCellTypeConstants).Areas
        Area.FormulaLocal = Area.FormulaLocal
    Next

а также то, что предложил Михаил в оригинале, я вполне могу воспроизвести, и усовершенствовать
НО! Вопрос совсем не в том, как это победить, а в том, почему это происходит?!
Изменено: RAN - 6 Окт 2013 22:19:07
 
А может просто:
"Под капотом ваших повседневных программ, операционных систем и сайтов творится такой тихий ужас, как если бы вы разобрали новенький Боинг и увидели, что топливный бак подпирают гардеробные вешалки, а шасси примотаны скотчем"
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=5&TID=45650&MID=419787&PAGEN_1=5#message419787
:)
 
Ну послал, так послал...
Правда я там и и без посылов бывал.
 
Ещё пример Local-заморочек:
Страницы: 1
Читают тему (гостей: 1)