Страницы: 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.02.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.02.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.02.2017 00:15:05
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо за науку.

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