Excel макрос вставить несколько строк

Вставка диапазона со сдвигом ячеек вправо или вниз методом Insert объекта Range. Вставка и перемещение строк и столбцов из кода VBA Excel. Примеры.

Range.Insert – это метод, который вставляет диапазон пустых ячеек (в том числе одну ячейку) на рабочий лист Excel в указанное место, сдвигая существующие в этом месте ячейки вправо или вниз. Если в буфере обмена содержится объект Range, то вставлен будет он со своими значениями и форматами.

Синтаксис

Expression.Insert(Shift, CopyOrigin)

Expression – выражение (переменная), возвращающее объект Range.

Параметры

Параметр Описание Значения
Shift Необязательный параметр. Определяет направление сдвига ячеек. Если параметр Shift опущен, направление выбирается в зависимости от формы* диапазона. xlShiftDown (-4121) – ячейки сдвигаются вниз;
xlShiftToRight (-4161) – ячейки сдвигаются вправо.
CopyOrigin Необязательный параметр. Определяет: из каких ячеек копировать формат. По умолчанию формат копируется из ячеек сверху или слева. xlFormatFromLeftOrAbove (0) – формат копируется из ячеек сверху или слева;
xlFormatFromRightOrBelow (1) – формат копируется из ячеек снизу или справа.

* Если диапазон горизонтальный или квадратный (количество строк меньше или равно количеству столбцов), ячейки сдвигаются вниз. Если диапазон вертикальный (количество строк больше количества столбцов), ячейки сдвигаются вправо.

Примеры

Простая вставка диапазона

Вставка диапазона ячеек в диапазон «F5:K9» со сдвигом исходных ячеек вправо:

Range(«F5:K9»).Insert Shift:=xlShiftToRight

Если бы параметр Shift не был указан, сдвиг ячеек, по умолчанию, произошел бы вниз, так как диапазон горизонтальный.

Вставка вырезанного диапазона

Вставка диапазона, вырезанного в буфер обмена методом Range.Cut, из буфера обмена со сдвигом ячеек по умолчанию:

Range(«A1:B6»).Cut

Range(«D2»).Insert

Обратите внимание, что при использовании метода Range.Cut, точка вставки (в примере: Range("D2")) не может находится внутри вырезанного диапазона, а также в строке или столбце левой верхней ячейки вырезанного диапазона вне вырезанного диапазона (в примере: строка 1 и столбец «A»).

Вставка скопированного диапазона

Вставка диапазона, скопированного в буфер обмена методом Range.Copy, из буфера обмена со сдвигом ячеек по умолчанию:

Range(«B2:D10»).Copy

Range(«F2»).Insert

Обратите внимание, что при использовании метода Range.Copy, точка вставки (в примере: Range("F2")) не может находится внутри скопированного диапазона, но в строке или столбце левой верхней ячейки скопированного диапазона вне скопированного диапазона находится может.

Вставка и перемещение строк

Вставка одной строки на место пятой строки со сдвигом исходной строки вниз:


Вставка четырех строк на место пятой-восьмой строк со сдвигом исходных строк вниз:


Вставка строк с использованием переменных, указывающих над какой строкой осуществить вставку и количество вставляемых строк:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Sub Primer1()

Dim n As Long, k As Long, s As String

‘Номер строки, над которой необходимо вставить строки

n = 8

‘Количесто вставляемых строк

k = 4

‘Указываем адрес диапазона строк

s = n & «:» & (n + k 1)

‘Вставляем строки

Rows(s).Insert

End Sub

‘или то же самое с помощью цикла

Sub Primer2()

Dim n As Long, k As Long, i As Long

n = 8

k = 4

    For i = 1 To k

        Rows(n).Insert

    Next

End Sub


Перемещение второй строки на место шестой строки:

Rows(2).Cut

Rows(6).Insert

Вторая строка окажется на месте пятой строки, так как третья строка заместит вырезанную вторую строку, четвертая встанет на место третьей и т.д.


Перемещение шестой строки на место второй строки:

Rows(6).Cut

Rows(2).Insert

В этом случае шестая строка окажется на месте второй строки.

Вставка и перемещение столбцов

Вставка одного столбца на место четвертого столбца со сдвигом исходного столбца вправо:


Вставка трех столбцов на место четвертого-шестого столбцов со сдвигом исходных столбцов вправо:


Перемещение третьего столбца на место седьмого столбца:

Columns(3).Cut

Columns(7).Insert

Третий столбец окажется на месте шестого столбца, так как четвертый столбец заместит вырезанный третий столбец, пятый встанет на место четвертого и т.д.


Перемещение седьмого столбца на место третьего столбца:

Columns(7).Cut

Columns(3).Insert

В этом случае седьмой столбец окажется на месте третьего столбца.


 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Господа.

Есть таблица. Юзер должен только заполнять данные в таблице и добавлять строки (по необходимости) макросом. Заголовок таблицы и расчет итогов защищен

1) Написал простейший макрос добавления строк
2) Чтобы сохранить стиль оформления, формата выпадающего списка, ничего не смог придумать, как прописать копирования с аналогичной таблицы и вставку в целевую таблицу
3) Чтобы итоговая сумма считалась при добавлении строк, прописал сумму через ДВССЫЛ

Теперь столкнулся с проблемой. Выше этой таблицы есть области где юзер может добавить строки сам, вручную. Если он там добавляет, то у меня смещается диапазон вставки (так как он прописан конкретно в макросе), а также нарушается и итоговое суммирование (начальная ячейка прописана в ДВССЫЛ).

Как быть? Эту таблицу можете посмотреть в примере.

Буду благодарен за помощь

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Пускай вставляет. Какие проблемы?
=СУММ(ДВССЫЛ(«Y6:Y»&СТРОКА()-2))

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Владимир,Спасибо за подсказку по сумме. Что будет если сверху добавить сверху таблицы строку?

1) Вставка будет осуществляться в 6 строку, которая уже сместиться на заголовок таблицы
2) Y6 который вы прописали в ДВССЫЛ будет уже ячейка заголовка таблицы…

Понимаете?

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Тогда нужно через ПОИСКПОЗ привязаться к слову «рыночная».
=СУММ(ДВССЫЛ(«Y» & ПОИСКПОЗ(«рыночная»;Y1:Y100;0)+1&»:Y»&СТРОКА()-2))

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#5

16.08.2017 11:19:15

Аналог вашего макроса!

Код
Sub Vstavka()
Rows("6:6").Insert Shift:=xlDown
Range("b7:an6").FillUp
Range("b6:an7").ClearContents
End Sub

Изменено: Nordheim16.08.2017 11:21:40

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Владимир,принято. Благодарю. Попробую. Только у меня строк надо ставить 5000 и главное чтобы никто больше не прописал слово рыночная в этом дипазоне :)

Скажите, а по вставке строк макросом нет идей? )

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

#7

16.08.2017 11:31:46

Цитата
brunokaz написал:
..макросом нет идей

Тут нужны Ваши пояснения, что хотите получить на выходе? Копировать нужно с листа 2 одну строку или то, что заполнено и т.д. в этом духе.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Nordheim,
Ваш код макроса:
1) Удаляет уже заполненные строки (если я заполнил и понял, что мне еще нужна строка)
2) Вставляет по несколько строк, при добавлении множества строк
3) в случае добавления строк выше таблицы, начнется чорти чо. Проблема не решается получается

Изменено: brunokaz16.08.2017 11:49:44

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Владимир, тогда по примеру с адресами пройдусь:

1) Я заполнил таблицу, все данные в ней, и понял, что у меня есть еще 1 объект, данные по которому необходимо внести в эту таблицу. Я нажимаю кнопку — строка добавляется выше сроки заполненной мною ранее (становится первой в этой таблице). При этом, сохраняются форматирования, оформление и выпадающий список новой добавленной строки.я заполняю данные по второму объекту.
2) В процессе работы, я добавляю несколько строк выше таблицы. и вспоминаю, что мне нужно внести данные по третьему объекту. Тут то и возникает проблема с моим макросом: в нем прописаны конкретные диапазоны: вставок номера строк и пр…Но нумерация строк таблицы сместится же на количество добавленных выше таблицы строк. Вот этого и надо избежать, как бы привязать макрос строго к этой таблице, вне зависимости от добавленных/удаленных строк выше самой таблицы.

Как-то так. Эта таблица большого заключения, под которой и над которой будет вестись работа по заполнению данных…

Изменено: brunokaz16.08.2017 11:51:17

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#10

16.08.2017 11:49:45

Файл без данных поэтому не отследил, ничего заполненного не должен удалять.

Код
Sub Vstavka()
Rows("6:6").Insert Shift:=xlDown
Range("b7:an6").FillUp
Range("b6:an6").ClearContents
End 

Subbrunokaz написал: 2) Вставляет по несколько строк

всегда вставляет только 1 строку

brunokaz написал: 3) в случае добавления строк выше таблицы, начнется чорти чо. Проблема не решается получается

Как может макрос вставит строку выше таблицы? Вы планируете смещать таблицу?

Изменено: Nordheim16.08.2017 11:51:30

«Все гениальное просто, а все простое гениально!!!»

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

А почему Вы не хотите просто защитить первые три строки от вставки строк, редактирования?

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

#12

16.08.2017 11:54:56

Nordheim, Мы привязаны к строке 6. Если я добавлю строку выше таблицы, это же станет строкой заголовка и начнуться проблемы

Код
Rows("6:6").Insert Shift:=xlDown 

Изменено: brunokaz16.08.2017 11:55:25

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#13

16.08.2017 12:02:54

Я не пойму как вы добавите строку выше таблицы, в коде зашита вставка в 6 строку, и дальнейшее форматирование конкретно 6 сроки.

Код
Sub Vstavka()
' втавляем пустую строку в строку №6
Rows("6:6").Insert Shift:=xlDown
' Копируем данные и формат с 7 строки
Range("b7:an6").FillUp
' очищаем 6 строку
Range("b6:an6").ClearContents
End

Вроде код примитивный до невозможности и все понятно.

«Все гениальное просто, а все простое гениально!!!»

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#14

16.08.2017 12:03:54

Цитата
brunokaz написал:
Если я добавлю строку выше таблицы

Каким образом?

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Nordheim, в моем примере выделите строку два и вручную добавьте строку, а потом добавьте строку в таблицу при помощи написанного Вами макроса.

Получится так, что строка 6 (Rows(«6:6»).Insert Shift:=xlDown) это уже строка заголовка таблицы …..

Код простой, может я не верно объясняю, за что и извиняюсь, если это так.

Изменено: brunokaz16.08.2017 12:18:40

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#16

16.08.2017 12:27:19

Цитата
Nordheim написал:
brunokaz написал: 3) в случае добавления строк выше таблицы, начнется чорти чо. Проблема не решается получаетсяКак может макрос вставит строку выше таблицы? Вы планируете смещать таблицу?

Я и спросил разве таблица будет смещаться?
Мой макрос повторяет с точностью ваш, разница в том , что не нужно ничего ниоткуда копировать вот собственно и все.

Цитата
brunokaz написал:
Nordheim , в моем примере выделите строку два и вручную добавьте строку, а потом добавьте строку в таблицу при помощи написанного Вами макроса.

проделайте манипуляции с вашим макросом результат идентичный будет.
Я одного не пойму зачем пользователь вставит строки вручную если на листе кнопка вставки строк присутствует?

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

#17

16.08.2017 12:39:57

Цитата
Nordheim написал:
Я и спросил разве таблица будет смещаться?

Не понял фразу сначала по смещению….

Цитата
Nordheim написал:
Мой макрос повторяет с точностью ваш, разница в том , что не нужно ничего ниоткуда копировать вот собственно и все.

Согласен

Цитата
Nordheim написал:
Я одного не пойму зачем пользователь вставит строки вручную если на листе кнопка вставки строк присутствует?

Этот лист состоит из десятков таблиц. Таблицы и их форму изменять нельзя — это утвержденная форма заключения, но в некоторых местах строки добавлять можно (например под таблицами), с целью отражения комментариев к изложенным в таблицах данным и изложением доп инфы по данным из таблицы.

Изменено: brunokaz16.08.2017 12:40:19

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Попробуйте добавить строки выше табличной формы..

Изменено: Владимир16.08.2017 13:54:52

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

#19

16.08.2017 15:09:04

Цитата
Владимир написал:
Попробуйте добавить строки выше табличной формы..

Лист защищен….

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Если эту проблему не решить или трудно решаема, прошу подтвердить кто может. Тогда я буду думать что делать…

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#21

17.08.2017 08:39:47

Код
Sub Vstavka()
ActiveSheet.Unprotect "12345"
Rows(6).Insert
Rows("7:6").FillUp
Rows(6).ClearContents
ActiveSheet.Protect "12345", DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, _
        AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
End Sub

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Nordheim, к сожалению это не решает вопрос с возможным смещением таблицы. Если только весь лист не защищать по вставке строк, что я не могу сделать

Изменено: brunokaz17.08.2017 09:16:32

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#23

17.08.2017 09:22:28

Цитата
brunokaz написал:
к сожалению это не решает вопрос с возможным смещением таблицы

Почему же?, Строки вставляются благополучно макросом. Пользователь вставить строки не может. как в таком случае сместится таблица?

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

Nordheim, ладно…придется запрещать пользователям вставлять строки. Спасибо Вам за помощь

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

Попробуйте сделать обходной вариант. Вставление строк в любое место кроме шапки таблицы, с использованием InputBox.

«Все гениальное просто, а все простое гениально!!!»

 

brunokaz

Пользователь

Сообщений: 68
Регистрация: 07.08.2017

 

Kcuxa_xa

Пользователь

Сообщений: 68
Регистрация: 30.12.2018

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

Изменено: Kcuxa_xa07.01.2019 22:26:50

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

Kcuxa_xa, А в чем смысл? Вам нужно вставить пустую строку перед последней заполненной в таблице?

«Все гениальное просто, а все простое гениально!!!»

 

Kcuxa_xa

Пользователь

Сообщений: 68
Регистрация: 30.12.2018

#29

07.01.2019 23:16:38

Цитата
Nordheim написал:
А в чем смысл?

да Вы правы это в принципе не критично. А не подскажите как в таком случае сделать, что бы новая строка автоматом нумеровалась по порядку?

 

Nordheim

Пользователь

Сообщений: 3154
Регистрация: 18.04.2017

#30

07.01.2019 23:29:58

Файл пример покажите.
Можно так

Код
Sub test()
    Dim lrow&
    lrow = Range("a" & Rows.Count).End(xlUp).Row
    If lrow = 1 Then Exit Sub
    Range("a" & lrow + 1).Value = Range("a" & lrow).Value + 1
End Sub

Изменено: Nordheim07.01.2019 23:34:39

«Все гениальное просто, а все простое гениально!!!»

Inserting new rows is the easiest way to add new fields into your worksheet area. Since Excel inserts rows by copying the formatting of the previous row, it is usually more practical than moving bottom cells to open up space for new data. Thanks to VBA, we can insert rows dynamically. In this guide, we’re going to show you how to insert specific number of rows in Excel.

Download Workbook

Preparation

First, you need to open the VBA (Visual Basic for Applications) window and add a module.

  1. Press Alt + F11 to open the VBA window
  2. In the VBA window, click Insert on the toolbar
  3. Click the Module option

Macro logic

The logic behind of inserting rows is controlled by two elements:

  1. The row above which you want to insert new rows. You can think of this as the anchor row.
  2. Number of rows.

Once these elements are set, the macro will select the number of rows, starting with the anchor row and run Insert method.

Range(Rows(AnchorRow), Rows(AnchorRow + RowCount — 1)).Insert

You can identify these elements in the code with set values, gather this information dynamically such as from the active cell, or through user input.

AnchorRow = 3 ‘Static
AnchorRow = ActiveCell.Row ‘Selected Cell
AnchorRow = Application.InputBox(Prompt:=»Please select a cell», Type:=8).Row ‘User input

Select the one that best fits your use case. Let’s now see the code block.

How to insert specific number of rows

The following code requires the user select a cell in the anchor row.

Sub InsertRows1()

    ‘Define variables

    Dim AnchorRow As Integer, RowCount As Integer

    ‘Set variables

    AnchorRow = ActiveCell.Row  ‘Selected Cell

    RowCount = Application.InputBox(Prompt:=»Please enter how many rows you want to insert», Type:=1)   ‘User input

    ‘Insert rows

    Range(Rows(AnchorRow), Rows(AnchorRow + RowCount — 1)).Insert

End Sub

How to insert specific number of rows in Excel 03 - InsertRow1

The next and final sample code will insert a specific number of rows above the user-prompted cell.

‘This macro will insert static number of rows above the user-prompted cell

Sub InsertRows2()

    ‘Define variables

    Dim AnchorRow As Integer, RowCount As Integer

    ‘Set variables

    AnchorRow = Application.InputBox(Prompt:=»Please select a cell», Type:=8).Row   ‘User input

    RowCount = 3   ‘Static

    ‘Insert rows

    Range(Rows(AnchorRow), Rows(AnchorRow + RowCount — 1)).Insert

End Sub

How to insert specific number of rows in Excel 05 - InsertRow2

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

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

Как вставить несколько строк, перетащив выделенную границу

Это самый быстрый способ вставить несколько пустых строк в лист Excel. Это просто и не требует использования каких-либо сочетаний клавиш.

  1. Выберите строку, ниже или выше которой вы хотите ввести пустые строки.
  2. Наведите указатель мыши на выделенную границу.
  3. Нажмите Shift, и вы увидите, что указатель изменится на точку со стрелками вверх и вниз. Перетащите выделение вниз на количество строк, которые вы хотите добавить.

Если вам не нравится идея несколько щелчков правой кнопкой мыши пока вы работаете с листом Excel, вы можете использовать два сочетания клавиш.

Сначала выберите количество строк, равное количеству пустых строк, которые вы хотите ввести. Используйте Shift + Пробел, чтобы выбрать все столбцы для выбранных строк, или выберите строки, используя номера строк слева.

Затем используйте любой из двух ярлыков:

  1. Alt + I и Alt + R: нажмите Alt + I, удерживая клавишу Alt, нажмите R.
  2. Ctrl + Plus: вам нужно использовать знак плюса на цифровой клавиатуре. Если вы хотите использовать знак плюса на основной клавиатуре, используйте Ctrl + Shift + Plus.

Метод быстрого доступа тоже масштабируемый. Нажатие F4 на листе Excel повторяет предыдущее действие. Вы можете использовать один из приведенных выше ярлыков, чтобы добавить, например, 10 строк, а затем нажать F4 10 раз, чтобы добавить 100 пустых строк.

Как вставить несколько скопированных строк с помощью сочетаний клавиш

Если вы хотите скопировать или вырезать несколько строк вместо добавления пустых строк, используйте сочетание клавиш Alt + I + E.

  1. Начните с копирования или вырезания строк.
  2. Выберите строку выше строки, которые вы хотите вставить, нажав номер строки слева.
  3. Нажмите Alt + I + E и выберите Сдвиг ячеек вниз.

Вы также можете использовать следующие сочетания клавиш вместо Alt + I + E (процесс одинаков, независимо от того, какой ярлык вы используете):

  • Ctrl + Shift + =
  • Control + Plus (знак плюса должен быть на цифровой клавиатуре)

Как вставить несколько строк с помощью параметра вставки

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

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

Когда вы выбираете «Вставить», Excel вставляет строки над первой выбранной вами строкой.

Если вы хотите ввести относительно большее количество пустых строк, вы можете выбрать диапазон, а затем использовать параметр «Вставить». Например, вы хотите ввести 500 строк.

  1. Выберите диапазон в формате «начальная строка: последняя строка». Предполагая, что вы хотите ввести 500 строк после строки 5, выберите диапазон 5: 504, указав этот диапазон в поле имени ячейки.

  1. Щелкните правой кнопкой мыши и выберите Вставить.

Как вставить несколько строк с помощью макроса Excel

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

Перед тем, как начать процесс, проверьте, есть ли на ленте Excel вверху вкладка с названием «Разработчик». Если это не так, перейдите в «Файлы»> «Параметры»> «Настроить ленту» и установите переключатель рядом с «Разработчик».

  1. Перейдите на вкладку Разработчик и выберите Visual Basic.

  1. Найдите меню «Вставка», когда откроется редактор Visual Basic, и выберите «Модуль».

  1. Введите в редакторе следующий код:

Подложка InsertRowsAtCursor ()
Answer = InputBox («Сколько строк нужно вставить? (Максимум 100 строк)»)
NumLines = Int (Val (ответ))

Если NumLines> 100, то
NumLines = 100
Конец, если

Если NumLines = 0, то
Перейти к концу
Конец, если

Делать
Selection.EntireRow.Insert
Счетчик = Счетчик + 1
Цикл пока счетчик

EndInsertLines:
Конец подписки

  1. Закройте редактор кода.
  2. На верхней ленте выберите «Разработчик»> «Макросы» или просто нажмите Alt + F8. Выберите только что созданный макрос и выберите Параметры. Установите сочетание клавиш для макроса, но убедитесь, что это не существующая комбинация клавиш, которую вы часто используете, например Ctrl + C. В этом случае мы использовали Ctrl + Shift + T. Когда вы закончите, нажмите OK, чтобы сохранить изменения и выйти.

  1. Вернитесь на рабочий лист и выберите ячейку, ниже которой вы хотите ввести строки.
  2. Используйте ярлык, который вы установили для макроса (в данном случае Ctrl + Shift + T). Вы увидите всплывающее окно на листе с просьбой ввести количество строк, которые вы хотите добавить. Например, предположим, вы хотите ввести пять строк. Введите 5 и нажмите Enter.

  1. Это добавит 5 строк ниже ячейку, которую вы выбрали.

Каждый раз, когда вы хотите вставить несколько строк в Excel, просто используйте ярлык, введите количество строк, и все готово.

Вставка нескольких строк в Excel

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

На листе Excel вы можете вставить пустую строку между существующими строками с помощью функции Вставить. Но если у вас большой диапазон данных и вам нужно вставить две пустые строки после каждой третьей n-й строки, как вы могли бы завершить эту работу быстро и удобно?

  • Вставьте определенное количество пустых строк в диапазон данных через фиксированные интервалы с кодом VBA
  • Вставьте определенное количество пустых строк в диапазон данных на основе значений ячеек с кодом VBA
  • Вставляйте определенное количество пустых строк в диапазон данных через фиксированные интервалы с помощью удобной функции
  • Копируйте и вставляйте строки несколько раз на основе определенных чисел с кодом VBA
  • Копируйте и вставляйте строки несколько раз на основе определенных чисел с удивительной функцией

Вставьте определенное количество пустых строк в диапазон данных через фиксированные интервалы с кодом VBA

Следующий код VBA может помочь вам вставить определенное количество строк после каждой n-й строки в существующих данных. Пожалуйста, сделайте следующее:

1. Удерживайте ALT + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: вставка определенного количества строк в данные через фиксированные интервалы

Sub InsertRowsAtIntervals()
'Updateby Extendoffice
Dim Rng As Range
Dim xInterval As Integer
Dim xRows As Integer
Dim xRowsCount As Integer
Dim xNum1 As Integer
Dim xNum2 As Integer
Dim WorkRng As Range
Dim xWs As Worksheet
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xRowsCount = WorkRng.Rows.Count
xInterval = Application.InputBox("Enter row interval. ", xTitleId, 1, Type:=1)
xRows = Application.InputBox("How many rows to insert at each interval? ", xTitleId, 1, Type:=1)
xNum1 = WorkRng.Row + xInterval
xNum2 = xRows + xInterval
Set xWs = WorkRng.Parent
For i = 1 To Int(xRowsCount / xInterval)
    xWs.Range(xWs.Cells(xNum1, WorkRng.Column), xWs.Cells(xNum1 + xRows - 1, WorkRng.Column)).Select
    Application.Selection.EntireRow.Insert
    xNum1 = xNum1 + xNum2
Next
End Sub

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

4. Нажмите OK , появится другое окно подсказки, введите количество интервалов между строками, см. снимок экрана:

5. Продолжайте нажимать OK В следующем всплывающем окне подсказки введите количество пустых строк, которые вы хотите вставить, см. снимок экрана:

6. Затем нажмите OK, а пустые строки вставлялись в существующие данные через равные промежутки времени, см. снимки экрана:


Вставьте определенное количество пустых строк в диапазон данных на основе значений ячеек с кодом VBA

Иногда вам может потребоваться вставить пустые строки на основе списка значений ячеек, в этом случае приведенный ниже код VBA может оказать вам услугу, пожалуйста, сделайте следующее:

1. Удерживайте ALT + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: вставьте определенное количество пустых строк на основе списка чисел:

Sub Insertblankrowsbynumbers ()
'UpdatebyExtendoffice
Dim xRg As Range
Dim xAddress As String
Dim I, xNum, xLastRow, xFstRow, xCol, xCount As Long
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Select the spefic number column to use(single column):", "Kutools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
xLastRow = xRg(1).End(xlDown).Row
xFstRow = xRg.Row
xCol = xRg.Column
xCount = xRg.Count
Set xRg = xRg(1)
For I = xLastRow To xFstRow Step -1
xNum = Cells(I, xCol)
If IsNumeric(xNum) And xNum > 0 Then
Rows(I + 1).Resize(xNum).Insert
xCount = xCount + xNum
End If
Next
xRg.Resize(xCount, 1).Select
Application.ScreenUpdating = True
End Sub

3. После вставки этого кода нажмите F5 Чтобы запустить этот код, в появившемся диалоговом окне выберите список чисел, на основе которых вы хотите вставить пустые строки, см. снимок экрана:

4, Затем нажмите OK, и вы получите необходимые результаты, как показано на следующих снимках экрана:


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

Если вы не знакомы с приведенным выше кодом VBA, Kutools for Excel также может помочь вам, это Вставить пустые строки и столбцы Функция может быстро и легко вставлять определенное количество строк или столбцов в существующие данные с фиксированными интервалами.

Примечание:Чтобы применить это Вставить пустые строки и столбцы , во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

После установки Kutools for Excel, пожалуйста, сделайте следующее:

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

2. Нажмите Кутулс > Вставить > Вставить пустые строки и столбцы, см. снимок экрана:

3. В Вставить пустую строку и столбцы диалоговое окно, выберите Пустые строки вариант из Тип вставки, а затем укажите количество интервалов и пустых строк, которые вы хотите использовать, как показано на следующем снимке экрана:

4. Затем нажмите OK кнопку, и пустые строки были вставлены в выбранный диапазон с определенным интервалом, как показано на следующем снимке экрана:

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Копируйте и вставляйте строки несколько раз на основе определенных чисел с кодом VBA

Предположим, у вас есть диапазон тада, и теперь вы хотите скопировать каждую строку и вставить их несколько раз в следующую строку на основе списка чисел, как показано на скриншотах ниже. Как решить эту задачу на листе Excel?

Чтобы справиться с этой задачей, я представлю вам полезный код, выполните следующие действия:

1. Удерживайте ALT + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: копируйте и вставляйте строки несколько раз в зависимости от конкретных чисел:

Sub CopyRows()
'UpdatebyExtendoffice
Dim xRg As Range
Dim xCRg As Range
Dim xFNum As Integer
Dim xRN As Integer
On Error Resume Next
SelectRange:
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Select the list of numbers to copy the rows based on: ", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub

If xRg.Columns.Count > 1 Then
MsgBox "Please select single column!"
GoTo SelectRange
End If
Application.ScreenUpdating = False
For xFNum = xRg.Count To 1 Step -1
Set xCRg = xRg.Item(xFNum)
xRN = CInt(xCRg.Value)
With Rows(xCRg.Row)
.Copy
.Resize(xRN).Insert
End With
Next
Application.ScreenUpdating = True
End Sub

3. После вставки этого кода нажмите F5 Чтобы запустить этот код, в появившемся диалоговом окне выберите список чисел, которые вы хотите скопировать, и вставьте строки данных на основе, см. снимок экрана:

4, Затем нажмите OK кнопку, и определенное количество строк было скопировано и вставлено под каждой исходной строкой, см. снимки экрана:


Копируйте и вставляйте строки несколько раз на основе определенных чисел с удивительной функцией

Если у вас есть Kutools for Excel, С его Повторяющиеся строки / столбцы на основе значения ячейки функция, вы можете быстро и легко вставлять строки или столбцы на основе списка чисел.

Примечание:Чтобы применить это Повторяющиеся строки / столбцы на основе значения ячейки, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

После установки Kutools for Excel, пожалуйста, сделайте следующее:

1. Нажмите Кутулс > Вставить > Повторяющиеся строки / столбцы на основе значения ячейки, см. снимок экрана:

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

4, Затем нажмите Ok or Применить кнопку, вы получите такой результат, как вам нужно:

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !

Больше относительных статей:

  • Скопируйте и вставьте строку несколько раз или продублируйте строку X раз
  • Пробовали ли вы в своей повседневной работе скопировать строку или каждую строку, а затем несколько раз вставить ее под текущей строкой данных на листе? Например, у меня есть диапазон ячеек, теперь я хочу скопировать каждую строку и вставить их 3 раза в следующую строку, как показано на следующем снимке экрана. Как бы вы справились с этой работой в Excel?
  • Вставлять пустые строки при изменении значения в Excel
  • Предположим, у вас есть диапазон данных, и теперь вы хотите вставить пустые строки между данными при изменении значения, чтобы вы могли разделить последовательные одинаковые значения в одном столбце, как показано на следующих снимках экрана. В этой статье я расскажу о некоторых хитростях, которые помогут вам решить эту проблему.
  • Вставить пустую строку после определенного текста в Excel
  • Если вы хотите вставить пустые строки после определенного текста, как показано на следующем снимке экрана, как с этим быстро и легко справиться, не вставляя их вручную по одной?
  • Копирование строк из нескольких листов на основе критериев на новый лист
  • Предположим, у вас есть книга с тремя листами, которые имеют такое же форматирование, как показано на скриншоте ниже. Теперь вы хотите скопировать все строки из этих листов, столбец C которых содержит текст «Завершено», в новый лист. Как можно быстро и легко решить эту проблему, не копируя и не вставляя их вручную?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

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