Страницы: 1
RSS
Изменить макросом присваемое по умолчанию имя "Умной таблицы"
 
Здравствуйте, уважаемые форумчане!
Продолжаю понемногу знакомиться с VBA, большое спасибо всем, кто мне в этом помогал в других темах.
Состряпал код для создания новых листов (копирование листа - шаблона).
Наверное, это все можно сделать красивее и короче, но - как смог  :)
В листе - шаблоне находится "Умная таблица",  и еще при копировании листу присваивается заданное заранее имя.
Можно ли с помощью макроса на новом (т.е. созданном по шаблону листе) изменить присваиваемое по умолчанию имя таблицы на другое,
задаваемое пользователем при создании нового листа? (в примере - пустая часть кода, после 30-й строки)
Заранее всем спасибо!
 
_Igor_61, CTRL+F3, они там, эти таблицы
макрорекордер выдал:
Код
ActiveSheet.ListObjects("Таблица118").Name = "Я_новая_таблица"
 
1. Надо что-то делать с форматированием кода срочно
2. После создания таблицы измените свойство Name:
Код
Dim tbl As ListObject
...
tbl.Name = "ИмяТаблицы"
There is no knowledge that is not power
 
_Igor_61, слишком много в Вашем файле постороннего. Создали пустой файл, на листе заполнили чем-либо ячейки, выделили их, включили макрорекордер, преобразовали диапазон в УТ, выключили макрорекордер, посмотрели код и модернизировали, например, так:
Код
Option Explicit

Sub Макрос4()
    Const sCT_NAME As String = "какое_надо_имя_УТ"
    Const sRANGE_SOURCE_ADDRESS As String = "A1:K17"
    
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(sRANGE_SOURCE_ADDRESS), , xlYes).Name = sCT_NAME
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Большое всем спасибо! Завтра буду изучать свойства ListObject, сегодня уже спать пора.
Jungl, это понятно, что таким образом можно макрорекордером записать новое имя, но дело в том, что при создании нового листа номера у таблиц будут другие (Таблица 119, 120 и т.д.), и этот код не сработает, т.к. он будет искать таблицу118. А если у Вас получилось это сделать, и в создаваемых новых листах таблицам присваивается нужное имя (из "E6"), я был бы очень рад увидеть этот код.
SuperCat, я только-только начинаю делать первые шаги в VBA, и поэтому не знаю, как правильно присвоить значение переменной tbl, поэтому тоже ничего не смог сделать.
JayBhagavan, та же причина - моя полная безграмотность в VBA не позволила решить задачу. Смысл в том, что "какое_надо_имя_УТ" - имя должно присваиваться с помощью переменной iTable_Name (значение берется из E6). Попробовал записать Const sCT_NAME As String = iTable_Name - предполагаю, что это получилось смешно, и к тому же не работает  :)  но как правильно это все сделать - не знаю.
Еще раз всем спасибо, понял, что нужно изучить что такое ListObject и какой синтаксис с ним используется. Если сам сумею разобраться, результат выложу.
 
Код
Sheets("ШАБЛОН").Copy After:=Sheets(2)   'Создаем копию листа "ШАБЛОН"
ActiveSheet.ListObjects(1).Name = iTable_Name
 
_Igor_61, константа дана для примера. Используйте вместо неё свою переменную.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Юрий М, спасибо большое, все работает именно так, как надо!
Если Вас не затруднит, не могли бы Вы пояснить для "чайника": ListObjects(1) это № объекта на листе (в данном случае "Умной таблицы"), присваиваемый Excel-ем по умолчанию, или "1" обозначает что-то другое? Если на листе создавать другие объекты (таблицы, автофигуры, кнопки и пр.), им также будут присваиваться свои порядковые номера? Или это объекты разных типов, и на них ссылаться нужно по разному?  Где это можно посмотреть?
Еще раз большое спасибо всем за помощь!
 
ListObjects(1) - 1 означает порядковый номер в коллекции умных таблиц. Другие объекты на это не влияют.
ListObjects("1") - 1 означает уникальное имя в коллекции умных таблиц.
Касательно переменной. Можно ссылку на умную таблицу хранить в переменной, а можно обращаться полным путём
Код
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)
tbl.Name = "Table1"

'или
ActiveSheet.ListObjects(1).Name = "Table1"

'или
With ActiveSheet.ListObjects(1)
    .Name = "Table1"
End With
There is no knowledge that is not power
 
SuperCat, спасибо!
Страницы: 1
Наверх