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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2011, 17:32   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Узнать имя листа, если известно кодовое имя

Если знать имя листа, кодовое имя узнается без проблем так:
Код:
ИмяЛист="Лист1"
ИмяЛистКод=ActiveWorkbook.Sheets(ИмяЛист).CodeName
Как решить обратную задачу: зная кодовое имя листа, узнать его имя? С учетом того что код и листы могут размещаться в разных книгах.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 20.03.2011, 17:39   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Одна строка - кодовое имя Лист2.
Код:
MsgBox Лист2.Name
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.03.2011, 21:38   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Одна строка - кодовое имя Лист2.
Код:
MsgBox Лист2.Name
Нужно сослаться через переменную. И это способ не подходит для адресации из другой книги. Я не зря так построил пример. Нужно что бы было как-то так:
Код:
ИмяЛистКод="Лист1"
ИмяЛист=ActiveWorkbook.Sheets(ИмяЛистКод).Name
Или
Код:
ИмяЛистКод="Лист1"
ИмяЛист=ActiveWorkbook.ИмяЛистКод.Name
Но ни первый, ни второй вариант не прокатывает (другого от них трудно ждать)...
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 20.03.2011, 21:57   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Единственное, что пока приходим на ум, это воспользоваться функцией от много уважаемого EducatedFool:
Код:
Function GetSheetByCodename(ByVal wbname As String, ByVal Cname As String) As Worksheet
    Dim sh As Worksheet
    For Each sh In Workbooks(wbname).Worksheets
        If sh.CodeName = Cname Then Set GetSheetByCodename = sh: Exit Function
    Next
    MsgBox "Лист с кодовым именем " & Cname & "  не найден", vbCritical
End Function
Доработать ее под задачу не сложно, но использовать ее в цикле проблематично... так как для поиска каждого листа, в худшем случае, придется просмотреть все листы. Как показала практика, почему-то работа с листами идет очень меееедлееенооо. А если их 500 шт, и нужно просмотреть каждый лист? (500*500=250000 циклов, да же если поделить на /3 - это более 80000 циклов)
С уважением, Алексей.

Последний раз редактировалось tae1980; 20.03.2011 в 22:11.
tae1980 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вставить в ячейку имя листа ElenaTro Microsoft Office Excel 7 16.03.2013 10:50
Программно изменить кодовое имя листа tae1980 Microsoft Office Excel 8 26.01.2011 00:01
Добыть имя листа gregory1b Microsoft Office Excel 4 09.12.2010 10:50
Имя листа Sensy Microsoft Office Excel 2 14.12.2009 17:23
Как получить имя листа? ABCOz Microsoft Office Excel 2 29.11.2009 15:37