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

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

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

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

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

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

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


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

Если же Вы обращаетесь из формул, применяется пользовательское имя листа (которое пользователь может
При переименовании листа к которому обращается формула можно открыть все связанные книги - файлы, которые содержат в своих формулах ссылки на этот переименовываемый лист.
...
Рейтинг: 0 / 0
29.09.2016, 15:30
    #39317931
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel: обращение к листу по Name и (Name)
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
29.09.2016, 15:34
    #39317936
Bobgos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel: обращение к листу по Name и (Name)
RegisteredUserа вот если надо так:
Код: vbnet
1.
Sheets("SystemSheet").Select




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




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


йопта!
Гениально! Респект! Пасиба!
...
Рейтинг: 0 / 0
29.09.2016, 15:58
    #39317973
Excel: обращение к листу по Name и (Name)
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
29.09.2016, 20:09
    #39318138
Bobgos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel: обращение к листу по Name и (Name)
Гениальный йопта,
Точно. 5 баллов
но видимо к этому ТС нужно идти постепенно
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel: обращение к листу по Name и (Name) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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