powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel: обращение к листу по Name и (Name)
8 сообщений из 8, страница 1 из 1
Excel: обращение к листу по Name и (Name)
    #39317879
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги!
Образовалась засада откуда не ждали.
У Sheet есть два имени: Name и (Name)
Name - это я бы назвал скорее Заголовок (его можно изменить юзеру непосредственно в книге)
(Name) - изменить можно только в редакторе (Alt+F11)

Поскольку юзер может менять Name (Заголовок), добавлять и удалять листы в Книге и т.п.,
то в макросе я бы хотел обращаться к Листу по (Name).

Подскажите КАК обратиться в макросе к Листу, чтобы ТОЧНО знать его имя в любой момент времени?

П.С.
На рисунке у меня "System Sheet" - это Заголовок, а "SystemSheet" - это то имя по которому я хочу обращаться к листу в макросах
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317922
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Name) - это имя объекта в объектной модели
Name - это свойство объекта (в данном случае то, что написано на ярлычке)

для ясности:
Код: vbnet
1.
2.
3.
4.
5.
?worksheets("System Sheet").Name
System Sheet

?SystemSheet.Name
System Sheet
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317923
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RegisteredUser,

у объекта Worksheet есть свойство .CodeName
Обращаться из VBA можно просто:
Код: vbnet
1.
SystemSheet.Cells(1,1)


где SystemSheet - программное имя листа.

Если же Вы обращаетесь из формул, применяется пользовательское имя листа (которое пользователь может
При переименовании листа к которому обращается формула можно открыть все связанные книги - файлы, которые содержат в своих формулах ссылки на этот переименовываемый лист.
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317931
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BobgosRegisteredUser,

у объекта Worksheet есть свойство .CodeName
Обращаться из VBA можно просто:
Код: vbnet
1.
SystemSheet.Cells(1,1)


где SystemSheet - программное имя листа.

Если же Вы обращаетесь из формул, применяется пользовательское имя листа (которое пользователь может
При переименовании листа к которому обращается формула можно открыть все связанные книги - файлы, которые содержат в своих формулах ссылки на этот переименовываемый лист.

а вот если надо так:
Код: vbnet
1.
Sheets("SystemSheet").Select



я тут налабал побырику функцайку. А более элегантного способа нет?


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Function getSheetName(ByVal SheetCodeName As String) As String
Dim Result As String
Result = Empty
SheetCodeName = Trim(SheetCodeName)

    
    If (Len(SheetCodeName) > 0) Then
        For i = 1 To ActiveWorkbook.Sheets.Count
            Debug.Print Sheets(i).CodeName
            If (Sheets(i).CodeName = SheetCodeName) Then
                Result = Sheets(i).Name
                Exit For
            End If
        Next i
    End If
    

getSheetName = Result
End Function
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317936
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RegisteredUserа вот если надо так:
Код: vbnet
1.
Sheets("SystemSheet").Select




тогда попробуйте
sheets(SystemSheet.name)
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317955
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BobgosRegisteredUserа вот если надо так:
Код: vbnet
1.
Sheets("SystemSheet").Select




тогда попробуйте
sheets(SystemSheet.name)


йопта!
Гениально! Респект! Пасиба!
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39317973
RegisteredUser, ты ведь примерно так хочешь написать
Код: vbnet
1.
2.
3.
Dim vSheet As Object
    set vSheet = Sheets(SystemSheet.Name)
    vSheet.Cells(1, 1) = "Ну, здравствуй, мир!"


Почему бы не сократить
Код: vbnet
1.
    SystemSheet.Cells(1, 1) = "Ну, здравствуй, мир!"
...
Рейтинг: 0 / 0
Excel: обращение к листу по Name и (Name)
    #39318138
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гениальный йопта,
Точно. 5 баллов
но видимо к этому ТС нужно идти постепенно
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel: обращение к листу по Name и (Name)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]