Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Получение значения именованного диапазона средствами VBA
 
Добрый день.
Подскажите пожалуйста, никак не могу разобраться.
Есть именованный диапазон с формулой. Задача получить данные из этого диапазона в vba.
Обычно получаю значение так: range("имя_диапазона").value , но в этой ситуации не получается.

 
Код
activeworkbook.Names("name").Value

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, Спасибо!
 
Что, то мне подсказывает, что в ответ получите не значение, а формулу текстом.
 
Код
a = Evaluate(ActiveWorkbook.Names("aa").RefersTo)
 
БМВ, спасибо, но в некоторых моментах срабатывает некорректно
Код
=СЦЕПИТЬ(ТЕКСТ(сегодня();"ДД.ММ.ГГ"))
Вот такая формула выдает следующее ДД42791.ММ.ГГ
Без склейки или сцепления текста всё норм
 
Цитата
Nik021 написал:
БМВ , спасибо,
А что сразу Косой? Я ваще только предположил некорректность  ответа 2.
 
БМВ, да я РАНу писал на самом деле, тебя случайно упомянул )
Тем не менее, призываю всех к помощи!)
 
Всем было б проще, если чудесным образом приложился пример. А тема уже немного не отражает сути вопроса.

P.S. Ну и есть такое правило, обращаться на Вы к мало знакомым. Аватарке то уже почти 10 лет :-)
Изменено: БМВ - 25 Фев 2017 19:39:17
 
БМВ, приложил файл.
Суть вопроса была такова, что нужен универсальный способ вытаскивания значения из именованного диапазона, пока что не нашел такого способа.
 
Это передавайте привет всем тем нытикам, которые ныли много лет на предмет того, что нужно локализовать програмиорование.

а вот то что возращается и прописано у вас =CONCATENATE(TEXT(TODAY(),"ДД.ММ.ГГ"), " г.").
а вот что нужно  =CONCATENATE(TEXT(TODAY(),"DD.MM.YY"), " г.").

?evaluate("=CONCATENATE(TEXT(TODAY(),""DD.MM.YY""), "" г."")")
25.02.17 г
.
Это касается тв основном с форматами, так как функции то всегда хранятся в нормальном виде  и только отображаются в локлизованном, а вот аргументы нет и они в данном случае не просто текст, а ожидаемый текст. Также можно вспомнить про информационную cell, где первый аргумент текстовый.

Как боротся? Боюсь только через осторожную замену. Ну или в случае простых форматов, использование кода формата ,но справочника такого  не видел.
Изменено: БМВ - 25 Фев 2017 20:37:31
 
БМВ, спасибо, всё работает!
Правда, если теперь прописать имя этого диапазона в ячейку, то выдаст DD.MM.YY г., благо, мне это не нужно)
 
Цитата
БМВ написал: Как боротся?
Вариант подсказанный мне для двух языков:
=ЕСЛИ(ТЕКСТ(ИСТИНА();"")="ИСТИНА";"ДД.ММ.ГГГГ";"DD.MM.YYYY")

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
JayBhagavan написал:
Вариант подсказанный мне для двух языков:
Это известный вариант, я имел в виду, как боротся в скрипте, если это "универсальный способ вытаскивания значения из именованного диапазона" . Все формулы для этого должны быть подготовлены для такой трансформации. Я часто пишу для универсального использования в Libre и MS. Почти автоматом пишу подобную конструкцияю, но многие об этом и не думают.
 
Цитата
БМВ написал: Это известный вариант
Кому как. Лично я на днях о нём узнал.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Nik021
Может попробовать если надо. только это не универсальный способ, как я писал выше.

Оффтоп
JayBhagavan

на самом деле это некорректный вариант.
Код
=ЕСЛИ(ТЕКСТ(ИСТИНА();"")="ИСТИНА";"ДД.ММ.ГГГГ";"DD.MM.YYYY") 
Поясню, у меня Русские региональные, но локализация системы и офиса Eng
Как результат Text(TRUE();"")='ИСТИНА" выдаст FALSE и выбор будет DD.ММ.YYYY что в моем случае не корректно. Я предпочитаю такое сравнений
Код
=IF(TEXT(1;"Д")="Д";"DD.MM.YYYY";"ДД.ММ.ГГГГ")
Изменено: БМВ - 26 Фев 2017 00:15:05
 
БМВ, спасибо за науку.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Читают тему (гостей: 1)
Наверх