Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Получение имени листа в макросе, Получение имени любого выделенного листа в макросе (кроме активного).
 
Здравствуйте!

Ура! Новое оформление! Начинка надеюсь осталась лучше  :)  

Задача.
Есть книга с любым кол-вом листов.
Пользователь выделяет любой нужный ему лист.
Вопрос.
Как узнать имя выделенного листа?

С уважением,
Василий.
Спокойствие - величайшее проявление силы.
 
ActiveSheet.Name?

P.S. Файл не смотрел
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Здравствуйте, The_Prist!

Этот метод не подходит, поскольку пользователь может выбрать любой лист.
Спокойствие - величайшее проявление силы.
 
Прикольно:
1. Пользователь выделяет любой нужный ему лист.
2. не подходит, поскольку пользователь может выбрать любой лист.
 
Если вы выбрали лист, то он и будет активным
 
Здравствуйте, Юрий М!

Дело в том, что пользователь, находясь на листе "Лист1", может выделить диапазон на листе с именем "Лист100". Я приложил файл поскольку не могу по другому объяснить ситуацию.
Прошу Вас поправить меня на примере прилагаемого файла или любым другим удобным для Вас способом.

С уважением,
Василий.
Спокойствие - величайшее проявление силы.
 
Цитата
Werty пишет:
Дело в том, что пользователь, находясь на листе "Лист1", может выделить диапазон на листе с именем "Лист100"
Не может - для этого нужно сначала выделить Лист100.
 
Может ... сотрите файл. Буду рад более простому варианту реализации.
Спокойствие - величайшее проявление силы.
 
Отбой! Выделить с помощью InputBox?
 
не понял ...

Код
Sub Пример()
Dim Name As Range
Dim scName 'As Range

On Error Resume Next
 Set Name = Application.InputBox( _
 Prompt:="Укажите любой диапазон ячеек на любом листе!", _
 Title:="Сообщение", _
 Default:=ActiveSheet.Name, _
 Type:=  8)  
scName = ActiveSheet.Name
 On Error GoTo 0

 'если действие было отменено
 If Name Is Nothing Then
 MsgBox "Отмена действия", 64, "Сообщение": Exit Sub
 Else
 MsgBox "Вы указали диапазон ячеек на литсе с именем " & scName, 64, "Сообщение"
 End If
End Sub
Изменено: Werty - 22 Янв 2013 01:35:49
Спокойствие - величайшее проявление силы.
 
MsgBox "Вы указали диапазон ячеек на литсе с именем " & Name.Worksheet.Name, 64, "Сообщение"
 
Да, классно  :)  Работает. А как?
Спокойствие - величайшее проявление силы.
 
Что как? Нормально работает )) Только там нужно подправить сообщение: литсе=листе :)
 
Это да, подправлю.
А так получается что у диапазона есть свойство Лист, у которого есть свойство Имя .... т.е. от ячейки идём к название листа к которому эта ячейка относится. Верно?
Спокойствие - величайшее проявление силы.
 
Да, получается есть ... Range("A1").Worksheet.Name

Благодарю Вас, Юрий М!

С уважением,
ПАХОМ
Спокойствие - величайшее проявление силы.
 
В общих чертах верно, только пару замечаний:
1. Не присваивайте переменным подобные имена (Name, Address...). Могут случиться неприятности.
2. В Вашем случае с Type:=8 - тип переменной будет Range - диапазон. А, следовательно, есть резон дать переменной адекватное имя. Например, MyRange, Rng, и т.п.
 
Согласен с Вами. В рабочем фале переменные сделаны по Вашим рекомендациям  :)  
Просто когда готовил пример спешил и забыл про них (привычка пока слабовата наверное).

Спасибо Вам Юрий М за то что Вы есть!  :)  
И всем остальным участникам  :)

С уважением,
ПАХОМ
Спокойствие - величайшее проявление силы.
 
Вообще есть еще более явный способ получить имя листа для диапазона, полученного данным образом:
Name.Parent.Name

P.S. Посоветовал бы сразу задавать вопрос нормально и понятно не только Вам, но и другим участникам форума. Имя листа выделенного и листа для диапазона, полученного через Inputbox это разные вещи.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А я и забыл про родителя ))
Страницы: 1
Читают тему (гостей: 1)
Наверх