Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 08:01   #1
Depressive
Пользователь
 
Регистрация: 09.05.2011
Сообщений: 22
По умолчанию Как задать псевдоним имени листа?

Здравствуйте!
Помню, что встречал на этом форуме (но теперь не могу найти) способ задать таблице (листу) псевдоним, так, чтобы при переименовании листа пользователем все равно продолжали работать ссылки на него из макросов.
Например изначально лист мной был назван "Clients", в макросе указывается, например, Worksheets("Clients").Range("A3:A7" )....
Не в меру "патриотичный" юзер переименовывает лист в "КЛИЕНТЫ", соответственно макрос вылетает по ошибке...
Пожалуйста, подскажите, как эта проблема решается!

Заранее благодарю!
Depressive вне форума Ответить с цитированием
Старый 06.03.2013, 08:05   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Depressive, есть два способа обращения к Excel-листам:
  1. по имени листа,
  2. по порядковому номеру листа.
Скрипт вне форума Ответить с цитированием
Старый 06.03.2013, 08:30   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Есть еще и третий. По codename. Тогда обращение к нему будет:
Код:
Clients.Range("A3:A7")
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 06.03.2013, 08:34   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

kuklp, а как сделать то, что вы предлагаете?
Скрипт вне форума Ответить с цитированием
Старый 06.03.2013, 08:48   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Сделать что? У каждого листа изначально имеется codename. А то, что мы видим на ярлыке, это как раз псевдоним Изменить codename можно в окне properties, см. скрин. Создайте новую книгу, переименуйте в ней все листы, а потом выполните:
Код:
Public Sub www()
    Dim Sh As Object, n%, iCodeName$
    n = 1
    For Each Sh In Sheets
        iCodeName = Sh.CodeName
        Application.VBE.ActiveVBProject.VBComponents(iCodeName).Name = "Ежик_в_тумане" & n
        Sh.Name = Sh.CodeName
        n = n + 1
    Next
End Sub
Изображения
Тип файла: gif 2013-03-06_064541.gif (29.0 Кб, 86 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 06.03.2013 в 09:11.
kuklp вне форума Ответить с цитированием
Старый 06.03.2013, 09:05   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

kuklp, пока делаю вывод, что к листу можно обратиться тремя способами:
  1. по Excel-имени листа;
  2. по VBA-имени листа;
  3. по порядковому номеру листа.
Скрипт вне форума Ответить с цитированием
Старый 06.03.2013, 09:07   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Еще можно обратиться к активному листу, минуя эти три способа:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 06.03.2013, 09:10   #8
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Тогда четыре способа обращения к Excel-листу:
  1. используя Excel-имя листа;
  2. используя VBA-имя листа;
  3. по порядковому номеру листа;
  4. обращение к активному листу.
Скрипт вне форума Ответить с цитированием
Старый 06.03.2013, 09:13   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Пятый - через свойство parent активной ячейки :-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 06.03.2013, 09:21   #10
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Обращение к нужному Excel-листу:
  1. используя Excel-имя листа;
  2. используя VBA-имя листа (свойство "Codename");
  3. по порядковому номеру листа;
  4. обращение к активному листу с помощью "ActiveSheet";
  5. обращаение к листу через ячейку с помощью "Parent".

Последний раз редактировалось Скрипт; 06.03.2013 в 09:25.
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение книг и листов по имени листа K_Auditor Microsoft Office Excel 9 08.06.2012 22:03
Передача информации о имени листа из ячейки SashaS Microsoft Office Excel 5 07.03.2012 16:13
Объединение книг и листов по имени листа MaxxVer Microsoft Office Excel 8 14.01.2011 13:09
Нужна помощь по смени имени листа Lis000iq Microsoft Office Excel 6 26.08.2009 21:11
активация листа по имени bnb17 Microsoft Office Excel 4 30.06.2009 17:26