Вставка пустой строки excel макрос

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

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

Содержание

  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. Введите или вставьте код.

  1. Что делает макрос
  2. Код макроса
  3. Как работает макрос
  4. Как использовать
  5. Скачать файл

Ссылка на это место страницы:
#zadacha

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

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

Ссылка на это место страницы:
#formula

  1. Sub VstavitPustieStrokiVDiapazon()
  2. Dim MyRange As Range
  3. Dim iCounter As Long
  4. Set MyRange = Range("B5:C15")
  5. For iCounter = MyRange.Rows.Count To 2 Step -1
  6. MyRange.Rows(iCounter).EntireRow.Insert
  7. MyRange.Rows(iCounter).EntireRow.Insert
  8. Next iCounter
  9. End Sub

Ссылка на это место страницы:
#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

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


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

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

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



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

Часто онлайн

792 / 530 / 238

Регистрация: 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

1813 / 1135 / 346

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

Сообщений: 4,002

18.08.2020, 14:32

8

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

Решение

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



1



Часто онлайн

792 / 530 / 238

Регистрация: 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



1813 / 1135 / 346

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

Сообщений: 4,002

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
  • Вставка полей по всему тексту word
  • Вставка полей в шаблон word
  • Вставка полей в документ word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии