Вставка пустой строки или пустого столбца в указанное место на рабочем листе из кода VBA Excel, чтобы расширить заполненную таблицу изнутри или снаружи.
Вставка пустой строки или пустого столбца используется для добавления пропущенной или новой информации внутри заполненного диапазона (таблицы) или для расширения таблицы по строкам или столбцам с сохранением форматирования.
Вставка пустой строки
Вставка пустой строки в VBA Excel осуществляется с помощью метода Range.Insert. Указанная строка сдвигается вниз, на ее место вставляется пустая строка, а форматы, по умолчанию, копируются в новую строку из строки выше.
Вставка одной пустой строки над 10 строкой:
|
Rows(10).Insert Range(«A10»).EntireRow.Insert |
Вставка семи пустых строк над 5 строкой:
|
Rows(«5:11»).Insert Range(«A5:A11»).EntireRow.Insert |
Добавление десяти пустых строк над активной ячейкой с помощью цикла:
|
Sub Test() Dim i As Long For i = 1 To 10 ActiveCell.EntireRow.Insert Next End Sub |
Вставка пустого столбца
Вставка пустого столбца в VBA Excel, как и пустой строки, осуществляется с помощью метода Range.Insert. Указанный столбец сдвигается вправо, на его место вставляется пустой столбец, а форматы, по умолчанию, копируются в новый столбец из столбца слева.
Вставка одного пустого столбца слева от 5 столбца:
|
Columns(5).Insert Columns(«E»).Insert Range(«E6»).EntireColumn.Insert |
Вставка пяти пустых столбцов слева от 4 столбца:
|
Columns(«D:H»).Insert Range(«D6:H20»).EntireColumn.Insert |
Обратите внимание, что запись вида Columns("5:11").Insert не работает.
Добавление шести пустых столбцов слева от активной ячейки с помощью цикла:
|
Sub Test1() Dim i As Long For i = 1 To 6 ActiveCell.EntireColumn.Insert Next End Sub |
Приветствую!
Существует задача в два этапа: необходимо 1) добавить по несколько
пустых
строк (а именно — по 3 штуки) после каждой строки с содержимым и 2)
скопировать
на них содержимое строк, после которых эти пустые строки были добавлены (по сути, дублировать данные по три раза).
P. S. На форуме находил аналогичные вопросы и присланные по ним макросы, но они не соответствовали моим требованиям в полной мере, а поскольку я только начинаю своё знакомство с VBA, все мои попытки понять логику команд и адаптировать их под мой кейс приводили лишь к часам потраченного впустую времени (например, был макрос, который просто вставлял по одной пустой строке через одну и т. д.).
Прикладываю к этой теме файл с примером того, что нужно сделать, и прошу, по возможности, кратко описать логику команд и как я могу подстраивать их под индивидуальные случаи в будущем (допустим, если возникнет необходимость вставить не по три пустые строки, а по две или четыре).
Также прикладываю найденный мной на форуме макрос, о котором шла речь (ссылка на тему от 2008 года:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=2635
)
Спасибо!
Skip to content
Как вставить пустые строки в диапазон
На чтение 3 мин. Просмотров 3.6k.
Что делает макрос: Иногда бывает нужно добавить строки в наборе данных. Этот макрос позволяет вставить пустые строки в диапазоне.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
Этот макрос выполняет обратный цикл по выбранной области с помощью счетчика. Он начинается в последней строке диапазона, вставляя две пустые строки, а затем переходит к предыдущей строке в диапазоне. Он продолжает делать ту же самую вставку для каждого цикла, каждый раз, каждый раз увеличивая счетчик до предыдущей строки.
Код макроса
Sub VstavitPustieStrokiVDiapazon()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim iCounter As Long
'Шаг 2: Определяем целевой диапазон
Set MyRange = Range("C6:D17")
'Шаг 3: Запуск обратного цикла
For iCounter = MyRange.Rows.Count To 2 Step -1
'Шаг 4: Вставляем 2 пустые строки
MyRange.Rows(iCounter).EntireRow.Insert
MyRange.Rows(iCounter).EntireRow.Insert
'Шаг 5: Увеличиваем счетчик
Next iCounter
End Sub
Как этот код работает
- Сначала мы объявляем две переменные. Первая переменная является переменной объекта под названием MyRange. Это переменная объекта, которая определяет целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит инкрементному счетчику.
- На шаге 2 макрос заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем Range («C6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
- На этом этапе макрос устанавливает параметры для инкрементного счетчика, чтобы начать на максимальном 1 для диапазона (MyRange.Rows.Count) и заканчивается в 2 (второй ряд от выбранного диапазона). Обратите внимание, что мы используем Шаг-1 классификатор. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до второй строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона. Например, диапазон («D6: D17»). Ряд (5) указывает на пятой строке в диапазоне D6: D17.
- На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно макрос работает в текущем цикле. Макрос использует метод EntireRow.Insert, чтобы вставить новую пустую строку. Так как мы хотим две пустые строки, мы делаем это дважды.
- На шаге 5, макрос возвращается к началу цикла увеличивать счетчик вниз.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Иногда бывает нужно добавить строки в набор данных. Этот макрос позволяет вставить пустые строки в диапазон.
Этот макрос выполняет обратный цикл по выбранной области с помощью счетчика. Он начинается в последней строке диапазона, вставляя две пустые строки, а затем переходит к предыдущей строке в диапазоне. Он продолжает делать ту же самую вставку для каждого цикла, каждый раз, увеличивая счетчик до предыдущей строки.
Ссылка на это место страницы:
#formula
SubVstavitPustieStrokiVDiapazon()DimMyRangeAsRangeDimiCounterAsLongSetMyRange = Range("B5:C15")ForiCounter = MyRange.Rows.CountTo2Step-1MyRange.Rows(iCounter).EntireRow.InsertMyRange.Rows(iCounter).EntireRow.InsertNextiCounterEndSub
Ссылка на это место страницы:
#kak
1. Сначала мы объявляем две переменные. Первая переменная является переменной объекта под названием MyRange. Это переменная объекта, которая определяет целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит в качестве счетчика.
2. На шаге 2 макрос заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем Range («B5:C15»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
3. На этом этапе макрос устанавливает параметры для счетчика, чтобы начать на максимальном для диапазона (MyRange.Rows.Count) и заканчивается во втором ряду от выбранного диапазона. Обратите внимание, что мы используем Шаг-1. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад на один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до второй строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона.
4. На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно макрос работает в текущем цикле. Макрос использует метод EntireRow.Insert, чтобы вставить новую пустую строку. Так как мы хотим две пустые строки, мы делаем это дважды.
5. На шаге 5, макрос возвращается к началу цикла двигаясь вверх по строкам.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях:
|
dmitry205 2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
||||||||
|
1 |
||||||||
Вставка пустой строки снизу выделенной строки18.08.2020, 13:56. Показов 7442. Ответов 10 Метки нет (Все метки)
Всем привет.
Вставляет пустую строку сверху, как и код:
Как сделать это снизу? П.С. Строку ниже на 1 от выделенной нельзя брать, т.к. там диапазон объединённых ячеек от 2 до 100+, и он вставляет именно это кол-во сверху, а надо всего лишь одну.
0 |
|
Ципихович Эндрю 1508 / 478 / 56 Регистрация: 10.04.2009 Сообщений: 8,008 |
||||
|
18.08.2020, 14:02 |
2 |
|||
|
Ворд или Эксель? Добавлено через 1 минуту
0 |
|
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
|
18.08.2020, 14:02 [ТС] |
3 |
|
Ворд или Эксель? Excel
0 |
|
КостяФедореев Часто онлайн 792 / 530 / 238 Регистрация: 09.01.2017 Сообщений: 1,820 |
||||
|
18.08.2020, 14:03 |
4 |
|||
|
dmitry205,
0 |
|
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
|
18.08.2020, 14:07 [ТС] |
5 |
|
r = ActiveCell.Row + 1 Яж написал, что нельзя это сделать со строкой от выделенной на +1, там объединённый диапазон и он вставляет на кол-во объединённых строк. А снимать объединение и снова его делать с диапазоном который уже изменился — сильно не хочется.
0 |
|
amd48 779 / 461 / 79 Регистрация: 18.05.2016 Сообщений: 1,242 Записей в блоге: 4 |
||||
|
18.08.2020, 14:12 |
6 |
|||
0 |
|
dmitry205 2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
||||||||
|
18.08.2020, 14:21 [ТС] |
7 |
|||||||
|
ActiveCell.EntireRow.Insert
как и
Вставляет пустую строку выше выделенной строки.
0 |
|
Burk 1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
||||
|
18.08.2020, 14:32 |
8 |
|||
|
Решение
1 |
|
Часто онлайн 792 / 530 / 238 Регистрация: 09.01.2017 Сообщений: 1,820 |
|
|
18.08.2020, 14:35 |
9 |
|
он вставляет на кол-во объединённых строк это как?
0 |
|
2 / 2 / 0 Регистрация: 14.05.2010 Сообщений: 43 |
|
|
18.08.2020, 14:51 [ТС] |
10 |
|
1 Магистр Йода низкий тебе поклон. Добавлено через 1 минуту
это как? Select выделяет все строки в объединённом диапазоне, даже если ты говоришь ему выделить только одну.
0 |
|
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
|
18.08.2020, 15:17 |
11 |
|
Избавил от головной боли на долгий срок «Сказали мне сегодня не надейся, не стоит уповать на небеса ….» /В.Высоцкий/
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
18.08.2020, 15:17 |
|
Помогаю со студенческими работами здесь Полосатое закрашивание строк от пустой до пустой строки DBNavigator, создание строки снизу Макросы вставки строки сверху/снизу… Прошу вас помочь, сам я точно не справлюсь!! В таблице, скажем, из 4-х столбцов…
Удаление выделенной строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 11 |




Сообщение было отмечено amd48 как решение
