Страницы: 1
RSS
Запись диапазона ячеек
 
Здравствуйте!

На одном из этапов выполнения макроса мне нужно создать именованный диапазон, рекодер выдал такой код:
Код
ActiveWorkbook.Names.add Name:="договор№1", RefersToR1C1:= _
 "=Лист5!R26C7:R28C7"

Дело в том, что диапазон и лист задаются через переменные в цикле, запись типа
Код
ActiveWorkbook.Names.add Name:="a", RefersToR1C1:= _
        mysht.Range(Cells(lCol, 1), Cells(lCol, lRow))
не работает.

каким образом можно переписать правильно
Код
"=Лист5!R26C7:R28C7"  

если надо задействовать переменные ?
 
я могу ошибаться, но может надо как то объявить переменную a
dim a as range
или как то так....могу ошибаться.
 
"a" - текст, не переменная.
 
Добрый день.
Насколько мне помниться, при задании (задавании?) кодом имени для диапазона в рабочей книге для имени диапазона и для адреса должна строка указываться.
Попробуйте:
Код
ActiveWorkbook.Names.add Name:="a", RefersTo:= _
        mysht.Range(Cells(lCol, 1), Cells(lCol, lRow)).Address
Изменено: Пытливый - 16.03.2016 17:27:56
Кому решение нужно - тот пример и рисует.
 
я так понял диапазон берете с другого не активного листа?
Код
ActiveWorkbook.Names.add Name:="a", RefersToR1C1:= _
        mysht.Range(mysht.Cells(lCol, 1), mysht.Cells(lCol, lRow))

на кибере такой же ответ дал. :)
Изменено: V - 16.03.2016 17:30:50
 
Зачем бедную a все в кавычки берут?
Цитата
vikttur написал: "a" - текст, не переменная
Согласие есть продукт при полном непротивлении сторон
 
Сперва не внимательным был, не указал для ячеек диапазона нужный лист. Заработало но лишь для статического имени диапазона

Вся эта конструкция с диапазоном у меня в цикле находится, a - переменная.
При таком раскладе ошибка 1004.
Код
 a = mysht.Cells(k, 1).Value
.....
........
............
ActiveWorkbook.Names.add Name:=a, RefersToR1C1:= _
mysht.Range(mysht.Cells(1, lCol), mysht.Cells(lRow, lCol))

на прямую
Код
 a = mysht.Cells(k, 1).Value.....
........
............
ActiveWorkbook.Names.add Name:=mysht.Cells(k, 1).Value, RefersToR1C1:= _
mysht.Range(mysht.Cells(1, lCol), mysht.Cells(lRow, lCol))
тоже не выходит.

Может кто сталкивался с подобной проблемой?
Вообще в конечном итоге мне надо программно связные выпадающие списки сделать. Если кто натыкался на такую задачу где то, дайте ссыль :)
 
Зачем через строку (и даже не одну) сообщения пишите? Крайне неудобно читать
По вопросу. Пора уже файл-пример приложить. Как есть - Как надо
Кавычки с переменной a убрали?
Код
ActiveWorkbook.Names.add Name:=a........
Изменено: Sanja - 16.03.2016 18:08:36
Согласие есть продукт при полном непротивлении сторон
 
ошибка 1004 может выскакивать если имя не соответствует требованиям.
 
Sanja, файл приложил.

Суть задачи:
Есть несколько листов, в каждом есть спецификация.Есть лист "журналУчета", в нем в таблицу заносятся данные. Необходимо реализовать кнопку "добавить", по которой, в новой строке таблице будут формироваться связные выпадающие списки, в первых двух столбцах.
1 столбец. Выбор листа
2 столбец. Выбор спецификации(в зависимости от того, какой лист выбрали в 1ом столбце).
Проблема сейчас в том, что не могу в цикле создать именованные диапазоны с именами каждого из листов, чтоб потом сделать связный список.

Надеюсь сейчас объяснил понятно.
 
Код
 ActiveWorkbook.Names.Add Name:=a, RefersToR1C1:= _
        mysht.Range(mysht.Cells(1, lCol), mysht.Cells(lRow, lCol)).Address(, , , True)
Я сам - дурнее всякого примера! ...
 
kuklp,ругается 1004ой ошибкой на
Код
ActiveWorkbook.Names.Add Name:=a, RefersToR1C1:= _

не дает задать имя переменной  
 
Вот Ваш пример с моей строкой. Нажал кнопку, открыл диспетчер имен, все сделано. Никаких ошибок. Мож кто еще проверит, выложил файл с кнопкой.
P.S. проверил в 2010, 2007, 2003. Работает.
Изменено: kuklp - 17.03.2016 13:29:19
Я сам - дурнее всякого примера! ...
 
Проверил - всё работает без ошибок. 2010.
 
Попробовал, вот так нормально работает:
Код
ActiveWorkbook.Names.Add Name:=a, RefersToR1C1:= _
mysht.Range(mysht.Cells(1, lCol), mysht.Cells(lRow, lCol))
Я сам - дурнее всякого примера! ...
 
kuklp, Юрий М, да все действительно работает, 1004 была из-за того что в другом файле(не в примере) названия листов были с пробелом.

Правда теперь другая проблема, когда так задаёшь диапазоны, он почему то их значения не схватывает. Потом по таким диапазонам связные списки не получается создать, во втором выпадающем списке пусто.  
Страницы: 1
Читают тему
Наверх