BRP Пользователь Сообщений: 213 |
Доброго времени суток, уважаемые форумчане! У меня на нескольких листах есть умные таблицы, подскажите пожалуйста макрос который удалит все строки умных таблиц, на нужных, начиная с третьей строки таблицы. Огромное спасибо! Изменено: BRP — 18.01.2022 14:44:00 |
webley Пользователь Сообщений: 1995 |
#2 18.01.2022 14:12:28 Добрый день!
|
||
BRP Пользователь Сообщений: 213 |
Работает отлично! Но мне нужно не со всех таблиц удалить данные. К примеру у меня на 10 листах 10 умных таблиц, а очистить нужно только 5. И удалить начиная с третей строки, то есть остаться должны шапка и 2 строки таблицы… |
МатросНаЗебре Пользователь Сообщений: 5516 |
#4 18.01.2022 14:26:41
|
||
DANIKOLA Пользователь Сообщений: 424 |
#5 18.01.2022 14:32:11
|
||
webley Пользователь Сообщений: 1995 |
#6 18.01.2022 14:34:03
вы уж определитесь:) а по поводу того, чтоб верхнюю строку оставить — можно так:
Изменено: webley — 18.01.2022 14:34:25 |
||||||
BRP Пользователь Сообщений: 213 |
А как задать нужные листы, или нужные умные таблицы? Не пойму…. |
webley Пользователь Сообщений: 1995 |
#8 18.01.2022 14:58:59 ну, задавать по разному можно — например так:
|
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#9 18.01.2022 15:20:07
как программе объяснить, какие вы считаете НУЖНЫМИ? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
BRP Пользователь Сообщений: 213 |
webley, Идеально) Спасибо! Изменено: BRP — 18.01.2022 16:01:50 |
RAN Пользователь Сообщений: 7091 |
#11 18.01.2022 16:14:09
|
||
Работа с умной таблицей из кода VBA Excel. Обращение к ячейкам, строкам и столбцам умной таблицы. Добавление и удаление строк и столбцов.
Обращение к умной таблице
Все примеры кода в этой статье привязаны к таблице с именем «Таблица1», расположенной на активном листе:
Обращение к умной таблице:
ActiveSheet.ListObjects(«Таблица1») |
Обращение к диапазону умной таблицы на рабочем листе:
ActiveSheet.ListObjects(«Таблица1»).Range |
Проверяем:
Debug.Print ActiveSheet.ListObjects(«Таблица1»).Range.Address ‘Результат: $B$3:$G$9 |
Далее все примеры кода VBA Excel, чтобы их не дублировать, будут представлены как аргументы метода Debug.Print.
Обращение к строкам
Работа с умной таблицей — обращение к строке заголовков:
Debug.Print ActiveSheet.ListObjects(«Таблица1»).Range.Rows(1).Address ‘Результат: $B$3:$G$3 |
Таким же образом можно обращаться и к остальным строкам таблицы (Строка1-Строка6), указывая индекс нужной строки от 2 до 7.
К записям таблицы (Строка1-Строка6) обращаются через коллекцию ListRows, указывая индекс записи от 1 до 6:
With ActiveSheet.ListObjects(«Таблица1») Debug.Print .ListRows.Count ‘Результат: 6 Debug.Print .ListRows(1).Range.Address ‘Результат: $B$4:$G$4 Debug.Print .ListRows(2).Range.Address ‘Результат: $B$5:$G$5 End With |
Обращение к столбцам
Обращение к третьему столбцу умной таблицы из кода VBA Excel:
With ActiveSheet.ListObjects(«Таблица1») ‘Обращение через диапазон умной таблицы Debug.Print .Range.Columns(3).Address ‘Результат: $D$3:$D$9 Debug.Print .Range.Columns.Count ‘Результат: 6 ‘Обращение через коллекцию ListColumns Debug.Print .ListColumns(3).Range.Address ‘Результат: $D$3:$D$9 Debug.Print .ListColumns.Count ‘Результат: 6 End With |
Обращение к ячейкам
Работа с умной таблицей — обращение к ячейке «E7» с отображением ее значения:
With ActiveSheet.ListObjects(«Таблица1») Debug.Print .Range.Cells(5, 4) ‘Результат: 91 Debug.Print .ListColumns(4).Range(5) ‘Результат: 91 Debug.Print .ListRows(4).Range(4) ‘Результат: 91 End With |
Вставка и удаление строк
Вставка новой строки в конец умной таблицы:
ActiveSheet.ListObjects(«Таблица1»).ListRows.Add |
Удаление последней строки:
With ActiveSheet.ListObjects(«Таблица1») .ListRows(.ListRows.Count).Delete End With |
Вставка новой строки на место пятой записи (Строка5 в таблице) со сдвигом пятой и нижерасположенных записей вниз:
ActiveSheet.ListObjects(«Таблица1»).ListRows.Add 5 |
Удаление пятой строки:
ActiveSheet.ListObjects(«Таблица1»).ListRows(5).Delete |
Вставка и удаление столбцов
Вставка нового столбца в конец умной таблицы из кода VBA Excel:
ActiveSheet.ListObjects(«Таблица1»).ListColumns.Add |
Удаление последнего столбца:
With ActiveSheet.ListObjects(«Таблица1») .ListColumns(.ListColumns.Count).Delete End With |
Вставка нового столбца на место четвертой графы таблицы со сдвигом четвертой и последующих граф вправо:
ActiveSheet.ListObjects(«Таблица1»).ListColumns.Add 4 |
Удаление четвертого столбца таблицы:
ActiveSheet.ListObjects(«Таблица1»).ListColumns(4).Delete |
Создание и удаление умной таблицы описано в статье VBA Excel. Создание таблицы (умной, обычной)
ILF_ollie 2 / 2 / 0 Регистрация: 19.08.2010 Сообщений: 70 |
||||
1 |
||||
Удаление строк из умной таблицы по условию10.06.2016, 12:33. Показов 12999. Ответов 6 Метки нет (Все метки)
Добрый день, уважаемые форумчане.
С уважением,
0 |
KoGG 5590 / 1580 / 406 Регистрация: 23.12.2010 Сообщений: 2,366 Записей в блоге: 1 |
||||
10.06.2016, 13:41 |
2 |
|||
2 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
10.06.2016, 13:53 |
3 |
|||
Можно ещё и так :
0 |
1 / 1 / 0 Регистрация: 23.06.2015 Сообщений: 2 |
|
09.02.2018, 16:21 |
4 |
Ваш, вариант почему-то удалил столбец с условиями. А KoGG 100% рабочую поправочку дал.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
09.02.2018, 20:03 |
5 |
kislotik, Если решили начать с притензий, то опубликуйте(выложите) свою таблицу(или часть), где кроме удаления строк «умной» таблицы будут удалены и данные, которые не относятся к этой таблице. И, разумеется, не забудьте указать Вашу версию Excel.
0 |
kislotik 1 / 1 / 0 Регистрация: 23.06.2015 Сообщений: 2 |
||||
09.02.2018, 21:25 |
6 |
|||
Прошу прощения уважаемый pashulka, никаких претензий, код не сработал исключительно в моем случае. Так, как я решил свою проблему кодом выше, истязаться экспериментами к сожалению нет ни времени ни желания. Код ниже, который у меня заработал. моем случае работает гораздо быстрее.
Извините если неправильно был понят.
1 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
09.02.2018, 21:36 |
7 |
Не должен мой код удалять ничего, кроме строк умной таблицы, без относительно личности поэтому файл-пример важен. P.S. Возможно причины неудач кроятся в коде событий, но это гадание …
0 |
При очистке «умной таблицы»макросом слетают формулы |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Автор vasa, 21 марта 2017, 14:44
vasa
- Посетитель форума
- Сообщения: 31
- Записан
Есть умная таблица, в которой нужно удалить строки вместе с форматированием из диапазона.
Нужно удалить строки с 4 по последнюю.
Пробовал различные варианты, но форматы не удаляются.
Помогите, пожалуйста!
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Sub Макрос()
Dim shMat As Worksheet, lr As Long
‘1. Присваиваем листу «Материалы» имя «shMat», чтобы удобнее писать код.
Set shMat = Sheets(«Материалы»)
‘2. Поиск последней строки по столбцу «A».
‘ При использовании метода «End» не должно быть скрытых строк на листе.
lr = shMat.Cells(shMat.Rows.Count, «A»).End(xlUp).Row
‘3. Удаление строк с 4 по последнюю.
shMat.Rows(«4:» & lr).Columns(«A:C»).Delete Shift:=xlUp
End Sub
vasa
- Посетитель форума
- Сообщения: 31
- Записан
Все работает правильно.
Большое спасибо.
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Если используется умная таблица, то можно не искать последнюю строку.
Этот макрос удаляет в умной таблице строки с 4 по последнюю.
Sub Макрос()
Dim shMat As Worksheet, tbl As ListObject
‘1. Присваиваем листу «Материалы» имя «shMat», чтобы удобнее писать код.
Set shMat = Sheets(«Материалы»)
‘2. Присваиваем умной таблице имя «tbl».
Set tbl = shMat.ListObjects(«Таблица1»)
‘3. Удаление строк с 4 по последнюю.
tbl.Range.Rows(«4:» & tbl.Range.Rows.Count).Delete Shift:=xlUp
End Sub
- Форум по VBA, Excel и Word
-
►
VBA, Excel -
►
VBA, макросы в Excel -
►
Excel Макрос: Как удалить строки вместе с форматом в умной таблице