Создание именованного дипазона в VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Добрый день, коллеги!
Подскажите, пожалуйста, как средствами VBA создавать именованные диапазоны и формулы? Например, мне нужно в VBA создать динамический диапазон:

Имя диапазона: "Задачи"
Адрес: =СМЕЩ(Список_задач!$B$2;0;0;СЧЁТЗ(Список_задач!$B:$B)-1;3)

Спасибо!
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

AlexZZZ, посмотрите FAQ | Макросы | Names . Там правда вопросы звучат несколько иначе. Но есть то, что Вам нужно.
Range("A5").Name = "фигня"
Names.Add Name:="фигня", RefersTo:="=$A$5"
Names.Add Name:="фигня", RefersTo:="=Лист1!$A$5"
Names.Add Name:="СуммаНалог", RefersTo:="=SUM(Лист1!$B$5:$B$10)"
Names.Add Name:="СуммаВзятка", RefersToLocal:="=СУММ(Лист1!$C$5:$C$10)"
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

ВикторМ привёл хороший пример
Делаю так, например для формы
Private Sub UserForm_Initialize()

'Присвоим имена диапозонам

ActiveWorkbook.Names.Add Name:="Задачи", RefersToR1C1:= _
"=OFFSET(Список_задач!R2C2,0,0,COUNTA(Список_задач!C2)-1,3)"
End Sub

Что это мне даёт:
при удаление имен из книги , ошибки в коде макроса при активации листа, или формы, или книги
смещ диапозоны и что вы видете
=СМЕЩ(Список_задач!#ссылка;0;0;СЧЁТЗ(Список_задач!$B: $B)-1;3)
С уважением...
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Спасибо всем! Суть понятна. Кстати, потребность в таком коде и была вызвана тем, что в не совсем отлаженном приложении, периодически из-за сбоев "пропадали" именованные диапазоны. И, чтобы не восстанавливать всё в ручную, возникла идея при открытии книги удалять и создавать заново все именованные диапазоны.
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

AlexZZZ писал(а): Кстати, потребность в таком коде и была вызвана тем, что в не совсем отлаженном приложении, периодически из-за сбоев "пропадали" именованные диапазоны. И, чтобы не восстанавливать всё в ручную, возникла идея при открытии книги удалять и создавать заново все именованные диапазоны.

И я протоже....
Ответить