Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

Если знать имя листа, кодовое имя узнается без проблем так:
Код:

ИмяЛист="Лист1"
ИмяЛистКод=ActiveWorkbook.Sheets(ИмяЛист).CodeName

Как решить обратную задачу: зная кодовое имя листа, узнать его имя? С учетом того что код и листы могут размещаться в разных книгах.
__________________
С уважением, Алексей.
tae1980 вне форума   Ответить с цитированием
Старый 20.03.2011, 18:39   #2
Hugo121
Профессионал
 
Регистрация: 11.05.2010
Сообщений: 4,983
Репутация: 464
По умолчанию

Одна строка - кодовое имя Лист2.
Код:

MsgBox Лист2.Name

__________________
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума   Ответить с цитированием
Старый 20.03.2011, 22:38   #3
tae1980
Участник клуба
 
Регистрация: 02.02.2009
Адрес: г. Саратов
Сообщений: 784
Репутация: 22
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Одна строка - кодовое имя Лист2.
Код:

MsgBox Лист2.Name

Нужно сослаться через переменную. И это способ не подходит для адресации из другой книги. Я не зря так построил пример. Нужно что бы было как-то так:
Код:

ИмяЛистКод="Лист1"
ИмяЛист=ActiveWorkbook.Sheets(ИмяЛистКод).Name

Или
Код:

ИмяЛистКод="Лист1"
ИмяЛист=ActiveWorkbook.ИмяЛистКод.Name

Но ни первый, ни второй вариант не прокатывает (другого от них трудно ждать)...
__________________
С уважением, Алексей.
tae1980 вне форума   Ответить с цитированием
Старый 20.03.2011, 22:57   #4
tae1980
Участник клуба
 
Регистрация: 02.02.2009
Адрес: г. Саратов
Сообщений: 784
Репутация: 22
По умолчанию

Единственное, что пока приходим на ум, это воспользоваться функцией от много уважаемого 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 в 23:11.
tae1980 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


14:22.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru