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

Вход

Регистрация

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

 

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

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

Excel 2013
Доброго дня!
Подскажите, как можно узнать имя активной таблицы?
Пример приложил, там 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 (16.9 Kb)


Сообщение отредактировал 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
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]


ЯД: 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
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

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

Автор - lFJl
Дата добавления - 02.02.2016 в 13:11
Udik Дата: Вторник, 02.02.2016, 13:15 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 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 из 1
  • 1
Поиск:

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