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

 

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

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

Excel 2013
Доброго дня!
Подскажите, как можно узнать имя активной таблицы?
Пример приложил, там 2 таблицы, в каждой по автофигуре. Выполняют следующий макрос:

Sub NameTable()
Set shp = ActiveSheet.Shapes(Application.Caller)
    On Error Resume Next
    ad_ = shp.TopLeftCell.Address
    Range(ad_).Select
    MsgBox (Table.Name) ' Как узнать название ктивной таблицы?
End Sub

К сообщению приложен файл: 6278130.xlsm (16.9 Kb)


Сообщение отредактировал lFJl - Вторник, 02.02.2016, 12:26
 
Ответить
СообщениеДоброго дня!
Подскажите, как можно узнать имя активной таблицы?
Пример приложил, там 2 таблицы, в каждой по автофигуре. Выполняют следующий макрос:
[vba]
Sub ЧameТable()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
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
lFJl, если просто для просмотра, можно так:

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


или нажмите вкладку Работа с Таблицами-Конструктор - слева в разделе Свойства будет имя таблицы.

Или так, если нужно это имя дальше использовать:

Sub NameTable()
    For Each obj In ActiveSheet.ListObjects
        If obj.Active Then nameTbl = obj.Name: Exit For
    Next obj
    Debug.Print nameTbl
End Sub



ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Вторник, 02.02.2016, 13:01
 
Ответить
СообщениеlFJl, если просто для просмотра, можно так:
[vba]
Sub ЧameТable()    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 objEnd Sub
[/vba]
или нажмите вкладку Работа с Таблицами-Конструктор - слева в разделе Свойства будет имя таблицы.

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

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

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


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



вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщениену вот для активной ячейки без доп. проверок (что не есть хорошо)
[vba]
Public Sub test()Debug.Print ActiveCell.ListObject.NameEnd 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
чуть сложнее и с проверкой



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



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


Сообщение отредактировал Udik - Вторник, 02.02.2016, 13:18
 
Ответить
Сообщениечуть сложнее и с проверкой
[vba]
Sub Тest_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    NextEnd Sub
[/vba]

Автор - Udik
Дата добавления - 02.02.2016 в 13:15
  • Страница 1 из 1
  • 1
Поиск:

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