Excel макрос вставки пустых строк

Приветствую!

  Существует задача в два этапа: необходимо 1) добавить по несколько

пустых

строк (а именно — по 3 штуки) после каждой строки с содержимым и 2)

скопировать

на них содержимое строк, после которых эти пустые строки были добавлены (по сути, дублировать данные по три раза).

  P. S. На форуме находил аналогичные вопросы и присланные по ним макросы, но они не соответствовали моим требованиям в полной мере, а поскольку я только начинаю своё знакомство с VBA, все мои попытки понять логику команд и адаптировать их под мой кейс приводили лишь к часам потраченного впустую времени (например, был макрос, который просто вставлял по одной пустой строке через одну и т. д.).

  Прикладываю к этой теме файл с примером того, что нужно сделать, и прошу, по возможности, кратко описать логику команд и как я могу подстраивать их под индивидуальные случаи в будущем (допустим, если возникнет необходимость вставить не по три пустые строки, а по две или четыре).
  Также прикладываю найденный мной на форуме макрос, о котором шла речь (ссылка на тему от 2008 года:

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=2635

)

Спасибо!

Вставка пустой строки или пустого столбца в указанное место на рабочем листе из кода 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


Skip to content

Как вставить пустые строки в диапазон

На чтение 3 мин. Просмотров 3.6k.

Что делает макрос: Иногда бывает нужно добавить строки в наборе данных. Этот макрос позволяет вставить пустые строки в диапазоне.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Этот макрос выполняет обратный цикл по выбранной области с помощью счетчика. Он начинается в последней строке диапазона, вставляя две пустые строки, а затем переходит к предыдущей строке в диапазоне. Он продолжает делать ту же самую вставку для каждого цикла, каждый раз, каждый раз увеличивая счетчик до предыдущей строки.

Код макроса

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

Как этот код работает

  1. Сначала мы объявляем две переменные. Первая переменная является переменной объекта под названием MyRange. Это переменная объекта, которая определяет целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит инкрементному счетчику.
  2. На шаге 2 макрос заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем Range («C6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
  3. На этом этапе макрос устанавливает параметры для инкрементного счетчика, чтобы начать на максимальном 1 для диапазона (MyRange.Rows.Count) и заканчивается в 2 (второй ряд от выбранного диапазона). Обратите внимание, что мы используем Шаг-1 классификатор. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до второй строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона. Например, диапазон («D6: D17»). Ряд (5) указывает на пятой строке в диапазоне D6: D17.
  4. На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно макрос работает в текущем цикле. Макрос использует метод EntireRow.Insert, чтобы вставить новую пустую строку. Так как мы хотим две пустые строки, мы делаем это дважды.
  5. На шаге 5, макрос возвращается к началу цикла увеличивать счетчик вниз.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Одними из наиболее часто используемых действий при работе с таблицами в Excel являются добавление и удаление строк вообще и пустых строк в частности. Рассмотрим механизмы добавления и удаления пустых строк в таблицах.

Добавить новую строку стандартными средствами Excel можно следующим образом: правой кнопкой мыши кликнуть на номере строки, над которой нужно вставить новую строку и выбрать в контекстном меню пункт «Вставить»

как вставить пустую строку в ExcelПри этом, если какие-то данные в таблице были отформатированы (изменены шрифты, изменены цвета, установлены заливки ячеек), то после добавления новой строки появится кнопка «Параметры добавления», раскрыв которую можно выбрать для новой строки один из трех пунктов «Форматировать как сверху», «Форматировать как снизу» и «Очистить формат».

параметры добавления пустой строкиВставить пустую строку можно также и через кнопки на панели инструментов. Для этого выделите строку, над которой нужно вставить новую пустую строку. После этого зайдите на вкладку «Главная», в группу «Ячейки» и раскройте меню кнопки «Вставить», выберите пункт «Вставить строки на лист».

Добавление нескольких пустых строк в таблицу Excel

Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.

как добавить новые строки в ExcelПосле того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.

Как вставить/добавить заданное количество пустых/новых строк в определенные места?

Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк, которая предоставляет следующие возможности:

1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);

2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;

3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;

4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);

5. вставлять пустые строки при каждой смене значения в заданном столбце;

6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);

7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:

а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;

б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;

в) диапазон листа — диапазон, который выберет пользователь;

г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.

*Внимательно выбирайте диапазон для получения желаемого результата!

8. выбор необходимых условий для значений ячеек.

Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.

Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.

vstavka pustyh strok po usloviyuCompleteSolutionнадстройка (макрос) для добавления пустых строк в зависимости от условий и значений ячеек

Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:

добавление пустых строк в Excel

Вставка разного количества пустых строк

При помощи надстройки можно вставлять изменяющееся количество пустых строк, если количество вставляемых строк указано в отдельном столбце.

ishodnye dannye dlya vstavki raznogo kolichestva pustyh strok

Если установить флажок в поле «Разное количество пустых строк для вставки», то поле с количеством строк для вставки изменяется на номер столбца, в котором указаны числовые значения.

vstavka raznogo kolichestva pustyh strok ukazannogo v zadannom stolbce

В результате программа определяет номер строки, которая подходит под заданные пользователем условия и вставляет столько пустых строк, сколько указано в этой строке заданного столбца. 

rezultat vstavki raznogo kolichestva pustyh strok

Удаление пустых строк

Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее.

Другие материалы по теме:

dmitry205

2 / 2 / 0

Регистрация: 14.05.2010

Сообщений: 43

1

Вставка пустой строки снизу выделенной строки

18.08.2020, 13:56. Показов 7433. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем привет.
Необходимо вставить пустую строку после выделенной ячейки.
Код аля:

Visual Basic
1
Rows("2:2").Insert Shift:=xlUp, CopyOriginal:=xlFormatFromLeftOoAbove

Вставляет пустую строку сверху, как и код:

Visual Basic
1
Rows("2:2").Insert Shift:=xlDown, CopyOriginal:=xlFormatFromLeftOoAbove

Как сделать это снизу?

П.С. Строку ниже на 1 от выделенной нельзя брать, т.к. там диапазон объединённых ячеек от 2 до 100+, и он вставляет именно это кол-во сверху, а надо всего лишь одну.



0



Ципихович Эндрю

1508 / 478 / 56

Регистрация: 10.04.2009

Сообщений: 8,008

18.08.2020, 14:02

2

Ворд или Эксель?

Добавлено через 1 минуту
ворд

Visual Basic
1
Selection.InsertRowsBelow 1



0



2 / 2 / 0

Регистрация: 14.05.2010

Сообщений: 43

18.08.2020, 14:02

 [ТС]

3

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

Ворд или Эксель?

Excel



0



КостяФедореев

Часто онлайн

790 / 529 / 237

Регистрация: 09.01.2017

Сообщений: 1,820

18.08.2020, 14:03

4

dmitry205,

Visual Basic
1
2
3
4
Sub ryr()
r = ActiveCell.Row + 1
Rows(r).Insert
End Sub



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

Visual Basic
1
ActiveCell.EntireRow.Insert



0



dmitry205

2 / 2 / 0

Регистрация: 14.05.2010

Сообщений: 43

18.08.2020, 14:21

 [ТС]

7

Цитата
Сообщение от amd48
Посмотреть сообщение

ActiveCell.EntireRow.Insert

Visual Basic
1
Rows("9:9").EntireRow.Insert

как и

Visual Basic
1
ActiveCell.EntireRow.Insert

Вставляет пустую строку выше выделенной строки.



0



Burk

1811 / 1134 / 345

Регистрация: 11.07.2014

Сообщений: 3,999

18.08.2020, 14:32

8

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

Решение

Visual Basic
1
ActiveCell.Offset(1, 0).EntireRow.Insert



1



Часто онлайн

790 / 529 / 237

Регистрация: 09.01.2017

Сообщений: 1,820

18.08.2020, 14:35

9

Цитата
Сообщение от dmitry205
Посмотреть сообщение

он вставляет на кол-во объединённых строк

это как?
я выделяю ячейку, под ней объединенные, нажимаю макрос и между ними вставляется строка без каких либо проблем



0



2 / 2 / 0

Регистрация: 14.05.2010

Сообщений: 43

18.08.2020, 14:51

 [ТС]

10

Цитата
Сообщение от Burk
Посмотреть сообщение

1
ActiveCell.Offset(1, 0).EntireRow.Insert

Магистр Йода низкий тебе поклон.
Избавил от головной боли на долгий срок

Добавлено через 1 минуту

Цитата
Сообщение от КостяФедореев
Посмотреть сообщение

это как?
я выделяю ячейку, под ней объединенные, нажимаю макрос и между ними вставляется строка без каких либо проблем

Select выделяет все строки в объединённом диапазоне, даже если ты говоришь ему выделить только одну.



0



1811 / 1134 / 345

Регистрация: 11.07.2014

Сообщений: 3,999

18.08.2020, 15:17

11

Цитата
Сообщение от dmitry205
Посмотреть сообщение

Избавил от головной боли на долгий срок

«Сказали мне сегодня не надейся, не стоит уповать на небеса ….» /В.Высоцкий/



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.08.2020, 15:17

Помогаю со студенческими работами здесь

Полосатое закрашивание строк от пустой до пустой строки
Добрый вечер. Подскажите пожалуйста,необходимо в таблице на 50 листах закрасить строки в таком…

DBNavigator, создание строки снизу
Если создать строку, то она появляется сверху. Как сделать так, чтобы строка появлялся снизу, под…

Макросы вставки строки сверху/снизу…
Здравствуйте!

Прошу вас помочь, сам я точно не справлюсь!!

В таблице, скажем, из 4-х столбцов…

Id строки, выделенной в listBox
Доброго времени суток. Подскажите пожалуйста, можно ли по нажатию на строку в listbox, в котором…

Цвет выделенной строки
Как в DBgridEh задать цвет выбранной (текущей) строки?
И на какое событие это лучше повесить?

Удаление выделенной строки
Всем доброго дня.
Вопрос простой. Как реализовать удаление строки из таблицы выбранной…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

11

Понравилась статья? Поделить с друзьями:
  • Excel макрос вставить столбец
  • Excel макрос вставить несколько строк
  • Excel макрос вставить картинку в ячейку excel
  • Excel макрос вставить значение в ячейку
  • Excel макрос всплывающее окно