Программное удаление ячеек в VBA Excel со сдвигом влево или со сдвигом вверх методом Delete объекта Range. Константы XlDeleteShiftDirection.
Range.Delete – это метод, удаляющий объект Range (диапазон ячеек, одну ячейку) со сдвигом замещающих ячеек справа-налево или снизу-вверх для замены удаленных ячеек.
Синтаксис
Expression.Delete (Shift) |
Expression – выражение (переменная), возвращающее объект Range.
Параметры
Параметр | Описание |
---|---|
Shift | Константа из коллекции XlDeleteShiftDirection, определяющая способ сдвига замещающих ячеек для замены удаленных ячеек. |
Если параметр Shift опущен, Microsoft Excel самостоятельно выберет способ сдвига замещающих ячеек в зависимости от формы диапазона.
Константы XlDeleteShiftDirection:
Константа | Значение | Описание |
---|---|---|
xlShiftToLeft | -4159 | Замещающие ячейки сдвигаются справа-налево. |
xlShiftUp | -4162 | Замещающие ячейки сдвигаются снизу-вверх. |
Примеры
Удаление ячейки со сдвигом влево:
ActiveCell.Delete xlShiftToLeft Range(«D4»).Delete xlShiftToLeft Cells(6, 8).Delete xlShiftToLeft |
Удаление диапазона со сдвигом вверх:
Selection.Delete xlShiftUp Range(«E3:H9»).Delete xlShiftUp |
kashtigo333 Пользователь Сообщений: 16 |
#1 18.11.2018 17:11:38 Всем привет! В приведенном файле сравниваем столбец B со столбцом D, в итоге получаем столбец F. При запуске цикла удаляем из столбца F значения ячеек, в которых больше 8 символов. Не работает сортировка, вылетает «Object required». Кто может объяснить, что не так сделано? Текст макроса:
Прикрепленные файлы
Изменено: kashtigo333 — 18.11.2018 17:47:25 |
||
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
1 — s(i, 1) вы что под этим подразумевали ?
Изменено: БМВ — 18.11.2018 19:11:43 По вопросам из тем форума, личку не читаю. |
kashtigo333 Пользователь Сообщений: 16 |
#3 18.11.2018 19:10:02
вроде перебор идет от последнего к первому, там же стоит step -1 |
||||||
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
а есть ли более полный файл, с полным кодом, а не с отрывком. Отрывок работает нормально. По вопросам из тем форума, личку не читаю. |
kashtigo333 Пользователь Сообщений: 16 |
#5 18.11.2018 19:26:05
Изменено: kashtigo333 — 18.11.2018 19:30:16 |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#6 18.11.2018 19:29:10
Подсказка… <#0> |
||
извиняюсь, код после правки был. до этого стояло от i=h до 1 c шагом -1, но ничего не поменялось |
|
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
ну у меня снова ошибок нет. По вопросам из тем форума, личку не читаю. |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#9 18.11.2018 19:40:31 Замените в этом коде:
Application.InputBox на конкретные диапазоны, т.к. мне не понятно, что именно надо выделять. <#0> |
||
kashtigo333 Пользователь Сообщений: 16 |
#10 18.11.2018 19:40:43
у меня вот тут выскакивает ошибка 424 «Object required»
|
||||
kashtigo333 Пользователь Сообщений: 16 |
#11 18.11.2018 19:43:21
диапазон 1: B1:B6 |
||
По итогу ответ должен быть такой: |
|
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#13 18.11.2018 19:47:39
Объясните, что за диапазон Вы хотите отсортировать? <#0> |
||
после удаления ячеек из диапазона s, где в значении больше 8 символов, получается новый диапазон. вот его хочу отсортировать После прогона цикла For i = h To 1 step -1 , когда i=1 почему-то удаляется диапазон, насколько я понял. Получается диапазон s пустой, хотя в книге excel значения отображаются. До i=1 все работает и значения при удалении помещаются в следующую верхнюю ячейку |
|
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
что есть s? это , как вы просите первая ячейка диапазона, и если он удаляется, то всё, объекта нет. По вопросам из тем форума, личку не читаю. |
согласен, но ведь происходит перемещение в ячейку до того, как i станет равно 1 |
|
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#17 18.11.2018 20:01:28
<#0> |
|
kashtigo333 Пользователь Сообщений: 16 |
#18 18.11.2018 20:32:00 Спасибо, работает! гениально! |
Помогаю со студенческими работами здесь
Как программно объединить ячейки в Excel ?
Подскажите, как программно объединить ячейки в Excel. Есть сетка (flex) с объедененными ячейками,…
Как программно определить фон определенной ячейки Excel?
Как программно определить фон определенной ячейки Excel. Заранее спасибо.
Как программно изменить цвет ячейки и ширину столбцов в Excel
Здравствуйте, как можно программно изменить цвет ячейки в Excel? Я использую следующий код:…
Как программно записать цифры даты в отдельные ячейки Excel
Всем доброго времени суток !
Для записи даты в таблицу Excel используется код:
…
Работа с Excel: удалить строку со сдвигом вверх
подскажите, как удалить line целиком со сдвигом вверх…перепробовал разные варианты, почему-то…
Как программно удалить строки из листа Excel?
В общем то в теме поместился весь вопрос нужно программно C# удалить несколько строк из листов по…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
- VBA to Delete Range in Excel – Syntax
- VBA to Delete Range in Excel – Example:Shift:=xlToLeft
- VBA to Delete Range in Excel – Example:Shift:=xlToUp
- VBA to Delete Range in Excel – Example: EntireRow
- VBA to Delete Range in Excel – Example: EntireColumn
- VBA to Delete Range in Excel – Execution Instructions
Page load link
Go to Top
I have a situation just like this image here:
How do I delete only the cells denoted as red and shift the below cells up?
There is a table below and that should not get affected. Can some one help?
Thanks
Jeevan
Jim Simson
2,7663 gold badges21 silver badges30 bronze badges
asked Jun 30, 2016 at 3:51
3
Delete the cells in the sheet and the table will be adjusted:
Range("B12:C12").Delete Shift:=xlUp
answered Jul 1, 2016 at 13:39
1
The answer can be found by recording a macro to delete a table row.
This example is from a for loop but can be modified to work however.
Select a cell in the table row you want to delete
Remember the table row is not the same as the worksheet row. in this case i have a blank row above my table and the header row so -2
Cells(i, 4).Select
Selection.ListObject.ListRows(i - 2).Delete
answered Feb 24, 2019 at 17:52
You could use
ListObject("TableName").ListRows(RowIndex).Delete
And add an empty row to the bottom.
ListObject("TableName").ListRows.Add
answered Jun 30, 2016 at 4:09
Mátray MárkMátray Márk
4555 silver badges17 bronze badges
2
Удаление пустых ячеек |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |