Страницы: 1
RSS
Как очистить последнюю строку умной таблицы
 
Добрый день,

есть необходимость в "книга" в таблице1 добавления и удаления строк кнопкой. Нашел пример, в нем хорошо работает. Начал с добавления -у меня в таблице не работает. Я в VBA полный 0, понимаю что проблема в Range, ставлю его A7 но строка не добавляется, пробовал в Range написать имя таблицы, тоже не получается. Прошу подсказать.
 
и при удалении мне нужно не удалять строки, а делать вот это что записал в макрос:
Код
Sub Макрос1()
    ActiveSheet.ListObjects("Лист 1").Resize Range("$A$6:$V$10")
    Range("A11:P11").Select
    Selection.ClearContents
End Sub

только в этом случаи макрос изменяет размер таблицы на одну конкретную строку, а потом из убранной удаляет оставшиеся содержимое.
А мне нужно что бы по кнопке удалить он это делал с последней строкой таблицы1
Изменено: dimatrixxx - 03.10.2019 12:05:30
 
dimatrixxx, умная таблица - это отдельный объект (ListObject), отличающийся от простого диапазона (Range), и местами сильно… Читайте мануал и спрашивайте более конкретно — примеры вставки/удаления строк по ссылке есть  ;)

P.S.: за "поднятие" темы могут и наругать (см. Правила). Редактируйте свои сообщения, дополняя их новой информацией, если предыдущее было вашим
Изменено: Jack Famous - 03.10.2019 11:05:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
dimatrixxx: Добавление и удаление строк в умной таблице VBA
Цитата
dimatrixxx: при удалении мне нужно не удалять строки, а [очищать содержимое]
название темы: Как очистить последнюю строку умной таблицы

Попробуйте так:
Код
Sub t()
Dim tbl As ListObject

Set tbl = ActiveSheet.ListObjects(1)
tbl.ListRows(tbl.DataBodyRange.Rows.Count).Range.ClearContents
End Sub
название темы: Как очистить последнюю строку умной таблицы
Изменено: Jack Famous - 03.10.2019 13:46:47
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Попробуйте так:Код ? 123456Sub t()Dim tbl As ListObject Set tbl = ActiveSheet.ListObjects(1)tbl.ListRows(tbl.DataBodyRange.Rows.Count).Range.ClearContentsEnd Sub
спасибо, Да, удаляет содержимое умной строки, теперь осталось только придумать как убрать саму строку (уменьшить таблицу на одну строку как это можно сделать мышкой потянув за крайний правый угол)
 
Jack Famous, спасибо, буду изучать! редактировал не для поднятия, НО в любом случаи не прав, исправлюсь :oops:
Цитата
Jack Famous написал:
умная таблица - это отдельный объект (ListObject), отличающийся от простого диапазона (Range)
странно, ведь макрос который я взял с Range работает именно в умной таблице(книга add-del)
Изменено: dimatrixxx - 03.10.2019 18:18:05
 
Цитата
dimatrixxx: удаляет содержимое умной строки, теперь осталось только придумать как убрать саму строку
чем это отличается от УДАЛЕНИЯ строки? Вы не понимаете, что при УДАЛЕНИИ строки, её содержимое ТАКЖЕ УДАЛЯЕТСЯ?
Код
Sub t()
Dim tbl As ListObject
 
Set tbl = ActiveSheet.ListObjects(1)
'tbl.ListRows(tbl.DataBodyRange.Rows.Count).Range.ClearContents  ' очистить последнюю строку
tbl.ListRows(tbl.DataBodyRange.Rows.Count).Delete               ' удалить последнюю строку
End Sub
Цитата
dimatrixxx: редактировал не для поднятия, НО в любом случаи не прав, исправлюсь
при редактировании как раз тема НЕ поднимается, зато поднимается при добавлении сообщения. Вы раньше писали одно сообщение за другим, делаете это и сейчас…
Изменено: Jack Famous - 03.10.2019 18:22:28
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
dimatrixxx, забыли что-то дописать в предыдущем сообщении? Для этого не нужно создавать новое, при помощи кнопки "Изменить" отредактировать "старое".
 
Цитата
Jack Famous написал:
чем это отличается от УДАЛЕНИЯ строки?
Да, вы правы, с функцией delete делает то что и хотел. Это я не правильно думал...
Разобрался с помощью мануала по вашей ссылке с добавлением строк:

tbl.ListRows.Add AlwaysInsert:= True
Изменено: dimatrixxx - 03.10.2019 20:23:21
 
подскажите еще пожалуйста как удалить выбранную строку (строку в в которой выбрана ячейка)? в мануале ничего на эту тему нет, уже перепробовал кучу вариантов, ну никак не выходит... Спасибо!
Изменено: dimatrixxx - 03.10.2019 21:11:51
 
Вопрос не по теме
 
[CODE][/CODE]
Изменено: Мелко - 24.11.2019 05:27:47
 
Вить, не вредничай.  :)
Обзови тему "Очистка и удаление строк "умной" таблицы"
Код
Sub ListRowsDelete()
    With ActiveSheet.ListObjects(1)
        .ListRows(1).Delete    ' удалить первую строку
        .ListRows(.ListRows.Count).Delete    ' удалить последнюю строку
        If Not Intersect(ActiveCell, .DataBodyRange) Is Nothing Then ActiveCell.Delete    ' удалить выделенную строку
    End With
End Sub

Sub ListRowsClearContents()
    With ActiveSheet.ListObjects(1)
        .ListRows(1).Range.ClearContents    ' очистить первую строку
        .ListRows(.ListRows.Count).Range.ClearContents    ' очистить последнюю строку
        If Not Intersect(ActiveCell, .DataBodyRange) Is Nothing Then _
        Intersect(ActiveCell.EntireRow, .DataBodyRange).ClearContents    ' очистить выделенную строку
    End With
End Sub
 
разобрался
Изменено: Мелко - 27.11.2019 00:23:41
Страницы: 1
Наверх