Страницы: 1
RSS
Создание умных таблиц на многих листах макросом
 
Всем привет! Есть большая книга с 70 листами. Как добавить макросом на каждый лист пустую умную таблицу с одинаковой шапкой?
 
Excelopfer, пшите макрос и добавляете)
Не бойтесь совершенства. Вам его не достичь.
 
Доброе время суток
Как-то где-то местами так
Код
Public Sub CreateSmartTables()
    Dim pSheet As Worksheet, lRow As Long
    Dim headRange As Range, header
    header = Array("Column1", "Column2", "Column3")
    For Each pSheet In ActiveWorkbook.Worksheets
        lRow = pSheet.UsedRange.Row + pSheet.UsedRange.Rows.Count + 1
        Set headRange = pSheet.Cells(lRow, 1).Resize(1, UBound(header) - LBound(header) + 1)
        headRange.Value = header
        pSheet.ListObjects.Add xlSrcRange, headRange, , xlYes
    Next
End Sub
 
Отлично, спасибо. А как её расположить где-нибудь подальше, скажем, начиная с ячейки M1
 
Цитата
Excelopfer написал:
начиная с ячейки M1
Достаточно изучить Worksheet.Cells property
Успехов.
 
Цитата
Excelopfer написал:
Есть большая книга с 70 листами
если в книге больше 5 листов, я открываю, сильно пугаюсь и, обычно, тут же закрываю такую книгу
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В #3 вносите небольшие правки.
Код
Public Sub CreateSmartTables()
    Dim pSheet As Worksheet, lRow As Long
    Dim headRange As Range, header
    header = Array("Column1", "Column2", "Column3")
    For Each pSheet In ActiveWorkbook.Worksheets
        'lRow = pSheet.UsedRange.Row + pSheet.UsedRange.Rows.Count + 1
        Set headRange = pSheet.Range("M1").Resize(1, UBound(header) - LBound(header) + 1)
        headRange.Value = header
        pSheet.ListObjects.Add xlSrcRange, headRange, , xlYes
    Next
End Sub
 
Ігор Гончаренко, такая же фигня  :D
Особенно, если листы с именами 2019, 2020, 2021 или январь, февраль
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Offtop
Цитата
МатросНаЗебре написал:
В #3 вносите небольшие правки.
Теперь я знаю к кому отправлять ломящихся в личку с доделками  :D
 
Андрей VG, :)
Надо будет мне дождаться, когда кто-то внесёт правки в моё решение, и перенаправим поток туда. Назовём этот проект "Ливневая канализация", ну или не ливневая :)))
 
Цитата
МатросНаЗебре написал:
небольшие правки.
простите за глупость, но можете, пожалуйста, ещё сделать так, чтобы он создавал таблицы с 7 листа?
ps
а не, сам справился. Спасибо большое
Изменено: Excelopfer - 22.04.2021 15:24:53
 
Как-то так.
Код
Public Sub CreateSmartTables()
    Dim pSheet As Worksheet
    Dim i As Long
    Dim headRange As Range, header
    header = Array("Column1", "Column2", "Column3")
    For i = 7 To ActiveWorkbook.Worksheets.Count
        Set pSheet = ActiveWorkbook.Worksheets(i)
        Set headRange = pSheet.Range("M1").Resize(1, UBound(header) - LBound(header) + 1)
        headRange.Value = header
        pSheet.ListObjects.Add xlSrcRange, headRange, , xlYes
    Next
End Sub

 
Спасибо огромное ещё раз!

Тут ещё кое-что появилось((
Можно ли ешё в каждой из этих таблиц в последних столбцах вписать формулы, работающие с другими столбцами соотв таблицы?

ПОИСКПОЗ("таблица с другого листа";ОКРУГЛ("Столбец1"/2))
Столбец 4/ Столбец 6
Столбец 5*Столбец 7
 
Цитата
Excelopfer написал: Тут ещё кое-что появилось(
А вот это появилось давным-давно...
Страницы: 1
Наверх