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

Вход

Регистрация

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

 

= Мир MS Excel/Узнать имя активной таблицы - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Узнать имя активной таблицы (Макросы/Sub)
Узнать имя активной таблицы
lFJl Дата: Вторник, 02.02.2016, 12:25 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 231
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Доброго дня!
Подскажите, как можно узнать имя активной таблицы?
Пример приложил, там 2 таблицы, в каждой по автофигуре. Выполняют следующий макрос:
[vba]
Код
Sub NameTable()
Set shp = ActiveSheet.Shapes(Application.Caller)
    On Error Resume Next
    ad_ = shp.TopLeftCell.Address
    Range(ad_).Select
    MsgBox (Table.Name) ' Как узнать название ктивной таблицы?
End Sub

[/vba]
К сообщению приложен файл: 6278130.xlsm(17Kb)


Сообщение отредактировал lFJl - Вторник, 02.02.2016, 12:26
 
Ответить
СообщениеДоброго дня!
Подскажите, как можно узнать имя активной таблицы?
Пример приложил, там 2 таблицы, в каждой по автофигуре. Выполняют следующий макрос:
[vba]
Код
Sub NameTable()
Set shp = ActiveSheet.Shapes(Application.Caller)
    On Error Resume Next
    ad_ = shp.TopLeftCell.Address
    Range(ad_).Select
    MsgBox (Table.Name) ' Как узнать название ктивной таблицы?
End Sub

[/vba]

Автор - lFJl
Дата добавления - 02.02.2016 в 12:25
Manyasha Дата: Вторник, 02.02.2016, 12:59 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1832
Репутация: 766 ±
Замечаний: 0% ±

Excel 2007, 2010
lFJl, если просто для просмотра, можно так:
[vba]
Код
Sub NameTable()
    Set shp = ActiveSheet.Shapes(Application.Caller)
    ad_ = shp.TopLeftCell.Address
    Range(ad_).Select
    For Each obj In ActiveSheet.ListObjects
        If obj.Active Then MsgBox obj.Name: Exit Sub
    Next obj
End Sub
[/vba]
или нажмите вкладку Работа с Таблицами-Конструктор - слева в разделе Свойства будет имя таблицы.

Или так, если нужно это имя дальше использовать:
[vba]
Код
Sub NameTable()
    For Each obj In ActiveSheet.ListObjects
        If obj.Active Then nameTbl = obj.Name: Exit For
    Next obj
    Debug.Print nameTbl
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804


Сообщение отредактировал Manyasha - Вторник, 02.02.2016, 13:01
 
Ответить
СообщениеlFJl, если просто для просмотра, можно так:
[vba]
Код
Sub NameTable()
    Set shp = ActiveSheet.Shapes(Application.Caller)
    ad_ = shp.TopLeftCell.Address
    Range(ad_).Select
    For Each obj In ActiveSheet.ListObjects
        If obj.Active Then MsgBox obj.Name: Exit Sub
    Next obj
End Sub
[/vba]
или нажмите вкладку Работа с Таблицами-Конструктор - слева в разделе Свойства будет имя таблицы.

Или так, если нужно это имя дальше использовать:
[vba]
Код
Sub NameTable()
    For Each obj In ActiveSheet.ListObjects
        If obj.Active Then nameTbl = obj.Name: Exit For
    Next obj
    Debug.Print nameTbl
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 02.02.2016 в 12:59
Udik Дата: Вторник, 02.02.2016, 13:02 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1376
Репутация: 178 ±
Замечаний: 0% ±

Excel 2016 х 64
ну вот для активной ячейки без доп. проверок (что не есть хорошо)
[vba]
Код

Public Sub test()
Debug.Print ActiveCell.ListObject.Name
End Sub

[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщениену вот для активной ячейки без доп. проверок (что не есть хорошо)
[vba]
Код

Public Sub test()
Debug.Print ActiveCell.ListObject.Name
End Sub

[/vba]

Автор - Udik
Дата добавления - 02.02.2016 в 13:02
lFJl Дата: Вторник, 02.02.2016, 13:11 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 231
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Спасибо, для моей задачи то, что нужно! :)
 
Ответить
СообщениеСпасибо, для моей задачи то, что нужно! :)

Автор - lFJl
Дата добавления - 02.02.2016 в 13:11
Udik Дата: Вторник, 02.02.2016, 13:15 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1376
Репутация: 178 ±
Замечаний: 0% ±

Excel 2016 х 64
чуть сложнее и с проверкой
[vba]
Код


Sub Test_Cell()
    Dim MyTable As ListObject, isect As Range
    For Each MyTable In ActiveSheet.ListObjects
        Set isect = Application.Intersect(ActiveCell, MyTable.Range)
        If Not (isect Is Nothing) Then MsgBox "ActiveCell принадлежит таблице " & MyTable.Name
    Next
End Sub

[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Вторник, 02.02.2016, 13:18
 
Ответить
Сообщениечуть сложнее и с проверкой
[vba]
Код


Sub Test_Cell()
    Dim MyTable As ListObject, isect As Range
    For Each MyTable In ActiveSheet.ListObjects
        Set isect = Application.Intersect(ActiveCell, MyTable.Range)
        If Not (isect Is Nothing) Then MsgBox "ActiveCell принадлежит таблице " & MyTable.Name
    Next
End Sub

[/vba]

Автор - Udik
Дата добавления - 02.02.2016 в 13:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Узнать имя активной таблицы (Макросы/Sub)
Страница 1 из 11
Поиск:

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