Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как занести в переменную CodeName листа. (программное имя) - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как занести в переменную CodeName листа. (программное имя) (Макросы/Sub)
Как занести в переменную CodeName листа. (программное имя)
lopuxi Дата: Вторник, 17.11.2020, 16:42 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Добрый вечер всем гуру VBA и Excel.

Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)

Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.

Таким образом я получаю имя листа...
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name

А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:

[vba]
Код

Dim WBSheets As Object
Dim Sheets_Open As String

Private Sub CommandButton1_Click()

Sheets_Open = "List_TV" ' тут вот допустим присваиваем CodeName листа, не то, что отображается в таблице Excel для пользователя

' Здесь начинаем искать лист, не по названию, а по CodeName
For Each WBSheets In ActiveWorkbook.Sheets
    If WBSheets.CodeName = Client_Card.CodeName Then WBSheets.Visible = xlSheetVisible '
Next WBSheets

End Sub
[/vba]
p.s. код не рабочий... это так мой набросок, моих мыслей...
К сообщению приложен файл: 4486931.xlsm(20.6 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Вторник, 17.11.2020, 16:47
 
Ответить
СообщениеДобрый вечер всем гуру VBA и Excel.

Я тут бьюсь надо таким вопросом.
Допустим у меня в книги есть 4 листа, с заданными в VBA именами - Client_Card, List_OOH, List_Radio и List_TV и все эти листы в книге полностью скрыты (xlSheetVeryHidden)

Как мне загнать в переменную не название листа, которое может быть каким угодно, в том числе его может изменить и сам пользователь, а именное кодовое название листа.
Получив в переменной кодовое название листа, мне надо его использовать.

Таким образом я получаю имя листа...
Client_Card.Name
List_OOH.Name
List_Radio.Name
List_TV.Name

А такой вариант List_TV.CodeName не дает мне List_TV и я как бы не знаю как достать именно List_TV, что бы поместить его в переменную, допустим Sheets_Open и потом сделать так:

[vba]
Код

Dim WBSheets As Object
Dim Sheets_Open As String

Private Sub CommandButton1_Click()

Sheets_Open = "List_TV" ' тут вот допустим присваиваем CodeName листа, не то, что отображается в таблице Excel для пользователя

' Здесь начинаем искать лист, не по названию, а по CodeName
For Each WBSheets In ActiveWorkbook.Sheets
    If WBSheets.CodeName = Client_Card.CodeName Then WBSheets.Visible = xlSheetVisible '
Next WBSheets

End Sub
[/vba]
p.s. код не рабочий... это так мой набросок, моих мыслей...

Автор - lopuxi
Дата добавления - 17.11.2020 в 16:42
Pelena Дата: Вторник, 17.11.2020, 17:15 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16796
Репутация: 3623 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Так?
[vba]
Код
If WBSheets.CodeName = "List_TV" Then
[/vba]или
[vba]
Код
If WBSheets.CodeName = Sheets_Open Then
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеТак?
[vba]
Код
If WBSheets.CodeName = "List_TV" Then
[/vba]или
[vba]
Код
If WBSheets.CodeName = Sheets_Open Then
[/vba]

Автор - Pelena
Дата добавления - 17.11.2020 в 17:15
Hugo Дата: Вторник, 17.11.2020, 17:48 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3137
Репутация: 670 ±
Замечаний: 0% ±

2010, теперь уже с PQ
Загоняйте в переменную не имя, а сам лист. Ну если нужно его позже использовать.
Да и нормально работает
[vba]
Код
MsgBox List_TV.CodeName
[/vba]


excel@nxt.ru
webmoney: R418926282008 Z422237915069


Сообщение отредактировал Hugo - Вторник, 17.11.2020, 17:51
 
Ответить
СообщениеЗагоняйте в переменную не имя, а сам лист. Ну если нужно его позже использовать.
Да и нормально работает
[vba]
Код
MsgBox List_TV.CodeName
[/vba]

Автор - Hugo
Дата добавления - 17.11.2020 в 17:48
lopuxi Дата: Вторник, 17.11.2020, 17:48 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
так оно получается так работает?
[vba]
Код


If WBSheets.CodeName = "List_TV" Then WBSheets.Visible = xlSheetVisible  '

[/vba]

If WBSheets.CodeName = "List_TV" Then


Я получается притупил, потому как пытался проверить и увидеть кодовые имена листов в Msgbox. Но он всегда выдавал ошибку.

For Each WBSheets In ActiveWorkbook.Sheets
MsgBox WBSheets.CodeName
Next WBSheets

То есть я фактически стоял у финиша, да смотрел не в ту сторону :D .

И условие не выдает ошибку и делает видимым тот лист который мне нужно.
[vba]
Код


Sheets_Open = "List_TV"

For Each WBSheets In ActiveWorkbook.Sheets
    If WBSheets.CodeName = "List_TV" Then WBSheets.Visible = xlSheetVisible  '
Next WBSheets

[/vba]


О_о ...и так можно было?
 
Ответить
Сообщениетак оно получается так работает?
[vba]
Код


If WBSheets.CodeName = "List_TV" Then WBSheets.Visible = xlSheetVisible  '

[/vba]

If WBSheets.CodeName = "List_TV" Then


Я получается притупил, потому как пытался проверить и увидеть кодовые имена листов в Msgbox. Но он всегда выдавал ошибку.

For Each WBSheets In ActiveWorkbook.Sheets
MsgBox WBSheets.CodeName
Next WBSheets

То есть я фактически стоял у финиша, да смотрел не в ту сторону :D .

И условие не выдает ошибку и делает видимым тот лист который мне нужно.
[vba]
Код


Sheets_Open = "List_TV"

For Each WBSheets In ActiveWorkbook.Sheets
    If WBSheets.CodeName = "List_TV" Then WBSheets.Visible = xlSheetVisible  '
Next WBSheets

[/vba]

Автор - lopuxi
Дата добавления - 17.11.2020 в 17:48
Hugo Дата: Вторник, 17.11.2020, 17:53 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3137
Репутация: 670 ±
Замечаний: 0% ±

2010, теперь уже с PQ
[vba]
Код

For Each WBSheets In ActiveWorkbook.Sheets
MsgBox WBSheets.CodeName
Next WBSheets
[/vba]
тоже отлично работает!


excel@nxt.ru
webmoney: R418926282008 Z422237915069


Сообщение отредактировал Hugo - Вторник, 17.11.2020, 17:53
 
Ответить
Сообщение[vba]
Код

For Each WBSheets In ActiveWorkbook.Sheets
MsgBox WBSheets.CodeName
Next WBSheets
[/vba]
тоже отлично работает!

Автор - Hugo
Дата добавления - 17.11.2020 в 17:53
lopuxi Дата: Вторник, 17.11.2020, 18:02 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
тогда я не знаю какой шаман байян произошел... у меня ошибка на ошибке была. Хотя я даже отдельно, заново все писал в книгили примера.
MsgBox WBSheets.CodeName


тупняк какой то, не объяснимый у меня случился.


О_о ...и так можно было?
 
Ответить
Сообщениетогда я не знаю какой шаман байян произошел... у меня ошибка на ошибке была. Хотя я даже отдельно, заново все писал в книгили примера.
MsgBox WBSheets.CodeName


тупняк какой то, не объяснимый у меня случился.

Автор - lopuxi
Дата добавления - 17.11.2020 в 18:02
Hugo Дата: Вторник, 17.11.2020, 18:08 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3137
Репутация: 670 ±
Замечаний: 0% ±

2010, теперь уже с PQ
Кстати с этими кодовыми по умолчанию помню были сюрпризы, советую их изменять на другие, на свои. Ну на всякий случай...
Правильно что поменяли :)


excel@nxt.ru
webmoney: R418926282008 Z422237915069


Сообщение отредактировал Hugo - Вторник, 17.11.2020, 18:09
 
Ответить
СообщениеКстати с этими кодовыми по умолчанию помню были сюрпризы, советую их изменять на другие, на свои. Ну на всякий случай...
Правильно что поменяли :)

Автор - Hugo
Дата добавления - 17.11.2020 в 18:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как занести в переменную CodeName листа. (программное имя) (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

jooble Яндекс цитирования
© 2010-2020 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!