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

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление строки если на листе несколько таблиц - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки если на листе несколько таблиц (Макросы/Sub)
Удаление строки если на листе несколько таблиц
Сергей13 Дата: Пятница, 25.10.2019, 21:46 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!
Ребята, если на листе несколько и более таблиц то удаление строки в одной из таблицы методом EntireRow.Delete выдает ошибку, в тоже время при ручном выполнении данного действия, удаление происходит корректно.
Какой метод или дополнительный код необходим дабы удалять строки таблицы при несколько и боле таблиц на листе?
К сообщению приложен файл: 0653436.xlsm (26.0 Kb)
 
Ответить
СообщениеЗдравствуйте!
Ребята, если на листе несколько и более таблиц то удаление строки в одной из таблицы методом EntireRow.Delete выдает ошибку, в тоже время при ручном выполнении данного действия, удаление происходит корректно.
Какой метод или дополнительный код необходим дабы удалять строки таблицы при несколько и боле таблиц на листе?

Автор - Сергей13
Дата добавления - 25.10.2019 в 21:46
nilem Дата: Пятница, 25.10.2019, 22:34 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Сергей13, привет
Не получится удалить строку, если она захватывает несколько умных таблиц.
Для одной таблицы попробуйте так:
[vba]
Код
...
If Not Cell Is Nothing Then   'Если найдено наименование в таблице tabl_gru
      Cell(1, 0).Resize(, 2).Delete
End If
...
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеСергей13, привет
Не получится удалить строку, если она захватывает несколько умных таблиц.
Для одной таблицы попробуйте так:
[vba]
Код
...
If Not Cell Is Nothing Then   'Если найдено наименование в таблице tabl_gru
      Cell(1, 0).Resize(, 2).Delete
End If
...
[/vba]

Автор - nilem
Дата добавления - 25.10.2019 в 22:34
Сергей13 Дата: Пятница, 25.10.2019, 23:09 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
nilem, как понять Resize(, 2) это сдвиг на вторую колонку в таблице?
Для таблицы с одной колонкой можно применить удаление строки находясь на ячейке Cell.Cells.delete


Сообщение отредактировал Сергей13 - Пятница, 25.10.2019, 23:09
 
Ответить
Сообщениеnilem, как понять Resize(, 2) это сдвиг на вторую колонку в таблице?
Для таблицы с одной колонкой можно применить удаление строки находясь на ячейке Cell.Cells.delete

Автор - Сергей13
Дата добавления - 25.10.2019 в 23:09
nilem Дата: Суббота, 26.10.2019, 08:58 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Из справки
Resize - Изменяет размер указанного диапазона. Возвращает объект Range, который представляет измененный диапазон.
В нашем случае Resize(, 2) изменяет размер на 2 столбца


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеИз справки
Resize - Изменяет размер указанного диапазона. Возвращает объект Range, который представляет измененный диапазон.
В нашем случае Resize(, 2) изменяет размер на 2 столбца

Автор - nilem
Дата добавления - 26.10.2019 в 08:58
RAN Дата: Суббота, 26.10.2019, 09:48 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 25.10.2019 в 21:46, в сообщении № 1 ()
в тоже время при ручном выполнении данного действия, удаление происходит корректно

А вот это сказки.
Строку, пересекающую несколько таблиц целиком (EntireRow) вручную тоже удалить нельзя.
Если же говорить о строке таблицы (ListRow), то она удаляется так
[vba]
Код
ActiveCell.ListObject.ListRows(ActiveCell.Row - ActiveCell.ListObject.Range.Row).Delete
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 25.10.2019 в 21:46, в сообщении № 1 ()
в тоже время при ручном выполнении данного действия, удаление происходит корректно

А вот это сказки.
Строку, пересекающую несколько таблиц целиком (EntireRow) вручную тоже удалить нельзя.
Если же говорить о строке таблицы (ListRow), то она удаляется так
[vba]
Код
ActiveCell.ListObject.ListRows(ActiveCell.Row - ActiveCell.ListObject.Range.Row).Delete
[/vba]

Автор - RAN
Дата добавления - 26.10.2019 в 09:48
Сергей13 Дата: Суббота, 26.10.2019, 11:42 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Приветствую!
Речь шла о ручном удалении именно строк таблицы (было не пояснено).
А если без дополнительных свойств и методов, потому как в моем случаи переменная Cell включает в себя лист, таблицу и нахождение элемента в колонке по строке, если к переменной добавить просто удаление Cell.delete, то строка в нужной таблице удаляется корректно независимо от того скрыт ли столбец и от пересечений по строкам соседних таблиц.


Сообщение отредактировал Сергей13 - Суббота, 26.10.2019, 12:02
 
Ответить
СообщениеRAN, Приветствую!
Речь шла о ручном удалении именно строк таблицы (было не пояснено).
А если без дополнительных свойств и методов, потому как в моем случаи переменная Cell включает в себя лист, таблицу и нахождение элемента в колонке по строке, если к переменной добавить просто удаление Cell.delete, то строка в нужной таблице удаляется корректно независимо от того скрыт ли столбец и от пересечений по строкам соседних таблиц.

Автор - Сергей13
Дата добавления - 26.10.2019 в 11:42
RAN Дата: Суббота, 26.10.2019, 12:17 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 26.10.2019 в 11:42, в сообщении № 6 ()
добавить просто удаление Cell.delete

Вариант интересный. Но что будете делать, когда вместо строки Excel удалит столбец? А он может! %)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 26.10.2019 в 11:42, в сообщении № 6 ()
добавить просто удаление Cell.delete

Вариант интересный. Но что будете делать, когда вместо строки Excel удалит столбец? А он может! %)

Автор - RAN
Дата добавления - 26.10.2019 в 12:17
Сергей13 Дата: Суббота, 26.10.2019, 12:39 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Может. В переменной нет конкретики по строкам.
Тогда не пойму как привязать предложенный Вами метод к переменной Cell, с учетом того что объявлена переменная для строк данной таблицы [vba]
Код
Public PdrTablRow As ListRow
[/vba]?


Сообщение отредактировал Сергей13 - Суббота, 26.10.2019, 12:47
 
Ответить
СообщениеRAN, Может. В переменной нет конкретики по строкам.
Тогда не пойму как привязать предложенный Вами метод к переменной Cell, с учетом того что объявлена переменная для строк данной таблицы [vba]
Код
Public PdrTablRow As ListRow
[/vba]?

Автор - Сергей13
Дата добавления - 26.10.2019 в 12:39
RAN Дата: Суббота, 26.10.2019, 16:17 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Тяжела ты, шапка Мономаха!
Active Cell


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТяжела ты, шапка Мономаха!
Active Cell

Автор - RAN
Дата добавления - 26.10.2019 в 16:17
Сергей13 Дата: Суббота, 26.10.2019, 18:19 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, [vba]
Код
Cell.ListObject.ListRows.delete
[/vba]
Выдает ошибку
 
Ответить
СообщениеRAN, [vba]
Код
Cell.ListObject.ListRows.delete
[/vba]
Выдает ошибку

Автор - Сергей13
Дата добавления - 26.10.2019 в 18:19
RAN Дата: Суббота, 26.10.2019, 19:44 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
И правильно делает.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИ правильно делает.

Автор - RAN
Дата добавления - 26.10.2019 в 19:44
Сергей13 Дата: Суббота, 26.10.2019, 20:31 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Ну и ладно.
Спасибо всем!
 
Ответить
СообщениеRAN, Ну и ладно.
Спасибо всем!

Автор - Сергей13
Дата добавления - 26.10.2019 в 20:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки если на листе несколько таблиц (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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