Страницы: 1
RSS
Не создается именованный диапазон
 
Хочу создать макрос для создания группы именованных диапазонов. Но возникает проблема, сразу при запуске выскакивает ошибка.
Если убрать знаки $ то именованные диапазоны благополучно создаются, но не работают, ячейки которые ссылаются на них получают ошибку ИМЯ. В списке имен почему-то ячейки подсвечены одинарными кавычками =График!'CJ15':'CJ4200' (обратите внимание, в самом коде этих кавычек нет). Если убрать везде эти одинарные кавычки, то именованные диапазоны становятся работоспособными.
Код
Sub Добавить_имена()
Worksheets("График").Names.Add Name:="namecount", RefersToR1C1:="=График!$CJ$15:$CJ$4200"
Worksheets("График").Names.Add Name:="namecount2", RefersToR1C1:="=График!$CM$15:$CM$4200"
Worksheets("График").Names.Add Name:="namecount3", RefersToR1C1:="=График!$CS$15:$CS$4200"
Worksheets("График").Names.Add Name:="namecount4", RefersToR1C1:="=График!$BP$15:$BP$4200"
Worksheets("График").Names.Add Name:="namelist", RefersToR1C1:="=График!$CJ$15:$CK$4200"
Worksheets("График").Names.Add Name:="namelist2", RefersToR1C1:="=График!$CM$15:$CM$4200"
Worksheets("График").Names.Add Name:="namelist3", RefersToR1C1:="=График!$CS$15:$CT$4200"
Worksheets("График").Names.Add Name:="namelist4", RefersToR1C1:="=График!$BP$15:$CBQ$4200"
End Sub
Изменено: olege1983 - 27.03.2024 22:28:19
 
RefersTo:=Range("...")
 
ZVI, Я в точности повторил,как записал макрорекордер (кнопка записать макрос).
 
вот так, заработало,  но почему макрорекордерная версия не работает. Забыл сказать, что я изменил начало кода:
Макрорекордер выдал Activeworkbook.Names и вот эту фразу я изменил на Worksheets
Код
Sub Добавить_имена()
Worksheets("График").Names.Add Name:="namecount", RefersToR1C1:=Range("CJ15:CJ4200")
Worksheets("График").Names.Add Name:="namecount2", RefersToR1C1:=Range("CM15:CM4200")
Worksheets("График").Names.Add Name:="namecount3", RefersToR1C1:=Range("CS15:CS4200")
Worksheets("График").Names.Add Name:="namecount4", RefersToR1C1:=Range("BP15:BP4200")
Worksheets("График").Names.Add Name:="namelist", RefersToR1C1:=Range("CJ15:CK4200")
Worksheets("График").Names.Add Name:="namelist2", RefersToR1C1:=Range("CM15:CM4200")
Worksheets("График").Names.Add Name:="namelist3", RefersToR1C1:=Range("CS15:CT4200")
Worksheets("График").Names.Add Name:="namelist4", RefersToR1C1:=Range("BP15:CBQ4200")
End Sub
Изменено: olege1983 - 27.03.2024 22:45:01
 
Да и версия макрорекордера нормально работает, если ссылки привести в порядок. У Вас записано RefersToR1C1, значит ссылки должны быть в стиле R1C1, а Вы пытаетесь передать в стиле А1. Отсюда и проблема. Если записать так:
Код
Sub Добавить_имена()
Worksheets("График").Names.Add Name:="namecount", RefersTo:="=График!$CJ$15:$CJ$4200"
Worksheets("График").Names.Add Name:="namecount2", RefersTo:="=График!$CM$15:$CM$4200"
Worksheets("График").Names.Add Name:="namecount3", RefersTo:="=График!$CS$15:$CS$4200"
Worksheets("График").Names.Add Name:="namecount4", RefersTo:="=График!$BP$15:$BP$4200"
Worksheets("График").Names.Add Name:="namelist", RefersTo:="=График!$CJ$15:$CK$4200"
Worksheets("График").Names.Add Name:="namelist2", RefersTo:="=График!$CM$15:$CM$4200"
Worksheets("График").Names.Add Name:="namelist3", RefersTo:="=График!$CS$15:$CT$4200"
Worksheets("График").Names.Add Name:="namelist4", RefersTo:="=График!$BP$15:$CBQ$4200"
End Sub

все будет работать
Или ссылки указывать в стиле R1C1(на примере одной - остальные лениво переделывать):
Код
Worksheets("График").Names.Add Name:="namecount", RefersToR1C1:="=График!R15C88:R4200C88"

Цитата
olege1983 написал:
Макрорекордер выдал Activeworkbook.Names и вот эту фразу я изменил на Worksheets
если нет понимания разницы - лучше оставить Activeworkbook. В том варианте, в котором у Вас сейчас - созданные имена создаются с областью видимости в листе "График" и будут доступны в итоге исключительно на этом листе. Если же создавать через Activeworkbook.Names - имена будут доступны для применения в любом листе этой книги.
Изменено: Дмитрий(The_Prist) Щербаков - 28.03.2024 08:51:26
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх