Вставка диапазона со сдвигом ячеек вправо или вниз методом 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 |
Господа. Есть таблица. Юзер должен только заполнять данные в таблице и добавлять строки (по необходимости) макросом. Заголовок таблицы и расчет итогов защищен 1) Написал простейший макрос добавления строк Теперь столкнулся с проблемой. Выше этой таблицы есть области где юзер может добавить строки сам, вручную. Если он там добавляет, то у меня смещается диапазон вставки (так как он прописан конкретно в макросе), а также нарушается и итоговое суммирование (начальная ячейка прописана в ДВССЫЛ). Как быть? Эту таблицу можете посмотреть в примере. Буду благодарен за помощь |
Владимир Пользователь Сообщений: 8196 |
Пускай вставляет. Какие проблемы? «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
brunokaz Пользователь Сообщений: 68 |
Владимир,Спасибо за подсказку по сумме. Что будет если сверху добавить сверху таблицы строку? 1) Вставка будет осуществляться в 6 строку, которая уже сместиться на заголовок таблицы Понимаете? |
Владимир Пользователь Сообщений: 8196 |
Тогда нужно через ПОИСКПОЗ привязаться к слову «рыночная». «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
Nordheim Пользователь Сообщений: 3154 |
#5 16.08.2017 11:19:15 Аналог вашего макроса!
Изменено: Nordheim — 16.08.2017 11:21:40 «Все гениальное просто, а все простое гениально!!!» |
||
brunokaz Пользователь Сообщений: 68 |
Владимир,принято. Благодарю. Попробую. Только у меня строк надо ставить 5000 и главное чтобы никто больше не прописал слово рыночная в этом дипазоне Скажите, а по вставке строк макросом нет идей? ) |
Владимир Пользователь Сообщений: 8196 |
#7 16.08.2017 11:31:46
Тут нужны Ваши пояснения, что хотите получить на выходе? Копировать нужно с листа 2 одну строку или то, что заполнено и т.д. в этом духе. «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
||
brunokaz Пользователь Сообщений: 68 |
Nordheim, Изменено: brunokaz — 16.08.2017 11:49:44 |
brunokaz Пользователь Сообщений: 68 |
Владимир, тогда по примеру с адресами пройдусь: 1) Я заполнил таблицу, все данные в ней, и понял, что у меня есть еще 1 объект, данные по которому необходимо внести в эту таблицу. Я нажимаю кнопку — строка добавляется выше сроки заполненной мною ранее (становится первой в этой таблице). При этом, сохраняются форматирования, оформление и выпадающий список новой добавленной строки.я заполняю данные по второму объекту. Как-то так. Эта таблица большого заключения, под которой и над которой будет вестись работа по заполнению данных… Изменено: brunokaz — 16.08.2017 11:51:17 |
Nordheim Пользователь Сообщений: 3154 |
#10 16.08.2017 11:49:45 Файл без данных поэтому не отследил, ничего заполненного не должен удалять.
Subbrunokaz написал: 2) Вставляет по несколько строк всегда вставляет только 1 строку brunokaz написал: 3) в случае добавления строк выше таблицы, начнется чорти чо. Проблема не решается получается Как может макрос вставит строку выше таблицы? Вы планируете смещать таблицу? Изменено: Nordheim — 16.08.2017 11:51:30 «Все гениальное просто, а все простое гениально!!!» |
||
Владимир Пользователь Сообщений: 8196 |
А почему Вы не хотите просто защитить первые три строки от вставки строк, редактирования? «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
brunokaz Пользователь Сообщений: 68 |
#12 16.08.2017 11:54:56 Nordheim, Мы привязаны к строке 6. Если я добавлю строку выше таблицы, это же станет строкой заголовка и начнуться проблемы
Изменено: brunokaz — 16.08.2017 11:55:25 |
||
Nordheim Пользователь Сообщений: 3154 |
#13 16.08.2017 12:02:54 Я не пойму как вы добавите строку выше таблицы, в коде зашита вставка в 6 строку, и дальнейшее форматирование конкретно 6 сроки.
Вроде код примитивный до невозможности и все понятно. «Все гениальное просто, а все простое гениально!!!» |
||
Nordheim Пользователь Сообщений: 3154 |
#14 16.08.2017 12:03:54
Каким образом? «Все гениальное просто, а все простое гениально!!!» |
||
brunokaz Пользователь Сообщений: 68 |
Nordheim, в моем примере выделите строку два и вручную добавьте строку, а потом добавьте строку в таблицу при помощи написанного Вами макроса. Получится так, что строка 6 (Rows(«6:6»).Insert Shift:=xlDown) это уже строка заголовка таблицы ….. Код простой, может я не верно объясняю, за что и извиняюсь, если это так. Изменено: brunokaz — 16.08.2017 12:18:40 |
Nordheim Пользователь Сообщений: 3154 |
#16 16.08.2017 12:27:19
Я и спросил разве таблица будет смещаться?
проделайте манипуляции с вашим макросом результат идентичный будет. «Все гениальное просто, а все простое гениально!!!» |
||||
brunokaz Пользователь Сообщений: 68 |
#17 16.08.2017 12:39:57
Не понял фразу сначала по смещению….
Согласен
Этот лист состоит из десятков таблиц. Таблицы и их форму изменять нельзя — это утвержденная форма заключения, но в некоторых местах строки добавлять можно (например под таблицами), с целью отражения комментариев к изложенным в таблицах данным и изложением доп инфы по данным из таблицы. Изменено: brunokaz — 16.08.2017 12:40:19 |
||||||
Владимир Пользователь Сообщений: 8196 |
Попробуйте добавить строки выше табличной формы.. Изменено: Владимир — 16.08.2017 13:54:52 «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
brunokaz Пользователь Сообщений: 68 |
#19 16.08.2017 15:09:04
Лист защищен…. |
||
brunokaz Пользователь Сообщений: 68 |
Если эту проблему не решить или трудно решаема, прошу подтвердить кто может. Тогда я буду думать что делать… |
Nordheim Пользователь Сообщений: 3154 |
#21 17.08.2017 08:39:47
«Все гениальное просто, а все простое гениально!!!» |
||
brunokaz Пользователь Сообщений: 68 |
Nordheim, к сожалению это не решает вопрос с возможным смещением таблицы. Если только весь лист не защищать по вставке строк, что я не могу сделать Изменено: brunokaz — 17.08.2017 09:16:32 |
Nordheim Пользователь Сообщений: 3154 |
#23 17.08.2017 09:22:28
Почему же?, Строки вставляются благополучно макросом. Пользователь вставить строки не может. как в таком случае сместится таблица? «Все гениальное просто, а все простое гениально!!!» |
||
brunokaz Пользователь Сообщений: 68 |
Nordheim, ладно…придется запрещать пользователям вставлять строки. Спасибо Вам за помощь |
Nordheim Пользователь Сообщений: 3154 |
Попробуйте сделать обходной вариант. Вставление строк в любое место кроме шапки таблицы, с использованием InputBox. «Все гениальное просто, а все простое гениально!!!» |
brunokaz Пользователь Сообщений: 68 |
|
Kcuxa_xa Пользователь Сообщений: 68 |
Подскажите, а что нужно поменять в макросе, что бы он добавлял новую строку не в начало таблицы, а в конец? Изменено: Kcuxa_xa — 07.01.2019 22:26:50 |
Nordheim Пользователь Сообщений: 3154 |
Kcuxa_xa, А в чем смысл? Вам нужно вставить пустую строку перед последней заполненной в таблице? «Все гениальное просто, а все простое гениально!!!» |
Kcuxa_xa Пользователь Сообщений: 68 |
#29 07.01.2019 23:16:38
да Вы правы это в принципе не критично. А не подскажите как в таком случае сделать, что бы новая строка автоматом нумеровалась по порядку? |
||
Nordheim Пользователь Сообщений: 3154 |
#30 07.01.2019 23:29:58 Файл пример покажите.
Изменено: Nordheim — 07.01.2019 23:34:39 «Все гениальное просто, а все простое гениально!!!» |
||
В данном практическом примере приведен код макроса для умной вставки пустых строк между ячейками. Пошаговая инструкция как вставлять строки между объединенными и необъединенными ячейками одновременно для любой таблицы.
Макрос для вставки строк с определенной высотой
В таблице отчета по продажам в розничных точках содержаться объединенные ячейки, как показано ниже на рисунке:
Необходимо экспонировать группы ячеек для каждого штата. Для этого мы добавим по одной пустой строке между каждой группой розничных точек. При этом не имеет значение будет ли содержать группа объединенные ячейки или нет. Ведь некоторые группы состоят из одной строки. А также дополнительно уменьшим высоту этих пустых строк, чтобы внешний вид таблицы был стильным. Выполнить вручную все эти действия: выделение отдельных групп ячеек, вставка между ними пустых строк, а потом изменение высоты для этих же строк – это не рационально использование сил и времени. Особенно если таблица имеет десятки тысяч строк. Лучше написать свой макрос, который сам автоматически и молниеносно выполнит эту рутинную работу за Вас.
Перейдите в режим редактора макросов Visual Basic (ALT+F11):
Создайте в нем новый модуль с помощью инструмента: «Insert»-«Module». А потом запишите в него VBA-код самого макроса:
Sub VstavkaStrok()
Dim i As Long
Dim pustroka As Long
For i = Selection.Rows.Count To 2 Step -1
pustroka = Selection(i, 1).Row + 1
ActiveSheet.Rows(pustroka).Insert xlShiftDown
ActiveSheet.Rows(pustroka).RowHeight = 7
ActiveSheet.Rows(pustroka).Borders(xlInsideVertical). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeLeft). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeRight). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Interior. _
ColorIndex = xlColorIndexNone
i = i - Selection(i, 1).MergeArea.Rows.Count + 1
Next
End Sub
Теперь если мы хотим вставить по одной пустой строке между каждой объединенной и необъединенной ячейкой, которые находиться в столбце A? Тогда а в таблице отчета по продажам выделяем диапазон ячеек A:D18 и запускаем наш макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«VstavkaStrok»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:
Сначала в коде объявлены две переменные:
- i – переменная выполняет роль счетчика в цикле.
- pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.
В макросе находиться цикл, который запускает целый ряд инструкций для каждой строки в выделенном диапазоне ячеек. Направление цикла идет с нижней строки выделения к верхней.
- В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
- Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
- Удаляются в добавленной строке все вертикальные границы, а также заливка.
- Уменьшается значение переменной i на количество строк, которые охватывает текущая объединенная ячейка, находящаяся в первом столбце выделенного диапазона.
Умная вставка строк с помощью макроса
Если же мы хотим экспонировать только самые большие группы. Допустим Вы желаете сделать так, чтобы макросом были вставлены пустые строки только после объединенных ячеек в столбце A, которые охватывают много строк. И не вставлять пустые строки после необъединенных ячеек или тех объединенных ячеек, которые охватывают не более 1-ой строки. Тогда после строки в коде макроса где описано начало цикла добавляем строку кода с условной инструкцией:
If Selection(i, 1).MergeArea.Rows.Count <> 1 Then
Также перед инструкцией конца цикла Next следует вставить инструкцию конца условия – End If.
Обратите внимание! Параметр условия для игнорирования объединенных ячеек с определенным количеством озвучиваемых строк можно будет даже настраивать, изменяя число после оператора сравнения.
Такая модификация кода макроса внутри цикла будет следить за тем применять ли ряд инструкций к текущей строке или игнорировать их на данном этапе прохода по срокам. Если же текущая строка не содержит необъединенной ячейки или объединенная ячейка охватывает более чем 1-ну строку, тогда для нее применяться все инструкции форматирования. Полная версия модифицированного года выглядит так:
Sub VstavkaStrok1()
Dim i As Long
Dim pustroka As Long
For i = Selection.Rows.Count To 2 Step -1
If Selection(i, 1).MergeArea.Rows.Count <> 1 Then
pustroka = Selection(i, 1).Row + 1
ActiveSheet.Rows(pustroka).Insert xlShiftDown
ActiveSheet.Rows(pustroka).RowHeight = 7
ActiveSheet.Rows(pustroka).Borders(xlInsideVertical). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeLeft). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeRight). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Interior. _
ColorIndex = xlColorIndexNone
i = i - Selection(i, 1).MergeArea.Rows.Count + 1
End If
Next
End Sub
Результат автоматического форматирования таблицы отчета с учетом новых условий в коде макроса:
Как видите с помощью макросов таблицы любых объемов данных можно форматировать в один клик мышкой.
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
1 |
|
23.12.2012, 00:31. Показов 40216. Ответов 85
Здравствуйте! Прошу вас помочь, сам я точно не справлюсь!! В таблице, скажем, из 4-х столбцов (A,B,C,D) необходимо добавить строку снизу. При этом по столбцу A происходит автоматическая пере-нумерация. а последняя строка Итого: не удаляется. если можно Прикрепил файл, содержащий таблицу. В силу своих возможностей в ней сделал макросы для Удаления строк. А со Вставками большой ступор. Смог только частично написать вставку снизу, но как сделать автоматическую нумерацию и формулу не знаю. Заранее благодарен!
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
23.12.2012, 13:07 |
2 |
|||
Только откажись от объединения ячеек
Добавлено через 1 минуту
1 |
Hugo121 6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
||||
23.12.2012, 13:39 |
3 |
|||
Можно не убирать объединение, и без цикла:
Там только рамка пропадает — ну это можно ещё пару строк дописать — форматировать Cells(l, 1)
1 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 13:46 [ТС] |
4 |
Ребят вы не могли бы скинуть документ который вы сделали…я даже не знаю куда это надо ввести…пожалуйста помогите…..заранее благодарен
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
23.12.2012, 13:52 |
5 |
Можно не убирать объединение, и без цикла: Можно, наверное. Миниатюры
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
23.12.2012, 13:54 |
6 |
Я к тому, что делал не на отвлечённой книге, а на конкретной Миниатюры
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:02 [ТС] |
7 |
это надо просто вставить туда,…..
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
23.12.2012, 14:05 |
8 |
В силу своих возможностей в ней сделал макросы для Удаления строк А где ж ты их делал раньше?
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:06 [ТС] |
9 |
я просто вставил кнопки и назначал макросы…а как вы, я не умею
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
23.12.2012, 14:06 |
10 |
Алексей, я тоже делал на конкретной. Мистика…
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:13 [ТС] |
11 |
если можешь скинь мне готовый файл,… пожалуйста Добавлено через 5 минут
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
23.12.2012, 14:14 |
12 |
См. первую страницу, в 15:06 Добавлено через 41 секунду
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:15 [ТС] |
13 |
кроме строки итого:
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
23.12.2012, 14:16 |
14 |
Мистика не иначе! Кликните здесь для просмотра всего текста Я Александр
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:21 [ТС] |
15 |
Александр! когда нажимаю кнопку Добавить или удалить…выводит не удается выполнить макрос..Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
23.12.2012, 14:22 |
16 |
Позор на мою седую голову: не в тот лист макрос вставил
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:22 [ТС] |
17 |
в смысле
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
23.12.2012, 14:23 |
18 |
tt & ttt
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
23.12.2012, 14:24 |
19 |
Упс, Александр, извиняюсь
0 |
0 / 0 / 0 Регистрация: 23.12.2012 Сообщений: 15 |
|
23.12.2012, 14:25 [ТС] |
20 |
Hugo121, а по одной строки удалить получиться,…
0 |
Содержание
- Пример макроса для вставки и удаления строк или столбцов на нескольких листах в Excel
- Аннотация
- Дополнительная информация
- Пример макроса с использованием цикла для вставки строк на несколько листов
- Пример макроса для выбора столбца и вставки нового столбца
- VBA Excel. Метод Range.Insert (вставка со сдвигом ячеек)
- Метод Range.Insert
- Синтаксис
- Параметры
- Примеры
- Простая вставка диапазона
- Вставка вырезанного диапазона
- Вставка скопированного диапазона
- Вставка и перемещение строк
- Как вставить/добавить новые/пустые строки в Excel?
- Вставка одной пустой строки в таблицу Excel
- Добавление нескольких пустых строк в таблицу Excel
- Как вставить/добавить заданное количество пустых/новых строк в определенные места?
- Вставка разного количества пустых строк
- Удаление пустых строк
- Макрос для добавления строк с заданной высотой в таблицу Excel
- Размер ячейки
- Макрос для вставки строк с определенной высотой
- Высота строки
- Добавление нескольких пустых строк в таблицу Excel
- Описание работы
- Вставка произвольного количества строк
- Вставка строк при изменении значения в столбце
- Удаление пустых строк
- Надстройка позволяет:
- Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Пример макроса для вставки и удаления строк или столбцов на нескольких листах в Excel
Аннотация
Эта статья содержит пример макроса Microsoft Visual Basic для приложений (вспомогательная процедура), который можно использовать для вставки или удаления строк или столбцов на нескольких листах в Microsoft Excel.
Дополнительная информация
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут объяснить функциональность отдельной процедуры. обязаны изменять примеры для реализации дополнительных возможностей или удовлетворения требований конкретных пользователей. Чтобы вставить или удалить строки или столбцы на нескольких листах, используйте команду For Each. Next statement для циклического прохода по всем необходимым листам или выберете строки или столбцы перед выполнением вставки или удаления.
Приведенные ниже примеры макросов работают только с непрерывным диапазоном столбцов или строк.
Пример макроса с использованием цикла для вставки строк на несколько листов
Пример макроса для выбора столбца и вставки нового столбца
Следующий пример макроса выбирает весь столбец перед вставкой новых столбцов:
Источник
VBA Excel. Метод Range.Insert (вставка со сдвигом ячеек)
Вставка диапазона со сдвигом ячеек вправо или вниз методом Insert объекта Range. Вставка и перемещение строк и столбцов из кода VBA Excel. Примеры.
Метод Range.Insert
Синтаксис
Expression – выражение (переменная), возвращающее объект Range.
Параметры
Параметр | Описание | Значения |
---|---|---|
Shift | Необязательный параметр. Определяет направление сдвига ячеек. Если параметр Shift опущен, направление выбирается в зависимости от формы* диапазона. | xlShiftDown (-4121) – ячейки сдвигаются вниз; xlShiftToRight (-4161) – ячейки сдвигаются вправо. |
CopyOrigin | Необязательный параметр. Определяет: из каких ячеек копировать формат. По умолчанию формат копируется из ячеек сверху или слева. | xlFormatFromLeftOrAbove (0) – формат копируется из ячеек сверху или слева; xlFormatFromRightOrBelow (1) – формат копируется из ячеек снизу или справа. |
* Если диапазон горизонтальный или квадратный (количество строк меньше или равно количеству столбцов), ячейки сдвигаются вниз. Если диапазон вертикальный (количество строк больше количества столбцов), ячейки сдвигаются вправо.
Примеры
Простая вставка диапазона
Вставка диапазона ячеек в диапазон «F5:K9» со сдвигом исходных ячеек вправо:
Если бы параметр Shift не был указан, сдвиг ячеек, по умолчанию, произошел бы вниз, так как диапазон горизонтальный.
Вставка вырезанного диапазона
Вставка диапазона, вырезанного в буфер обмена методом Range.Cut, из буфера обмена со сдвигом ячеек по умолчанию:
Вставка скопированного диапазона
Вставка диапазона, скопированного в буфер обмена методом Range.Copy, из буфера обмена со сдвигом ячеек по умолчанию:
Вставка и перемещение строк
Вставка одной строки на место пятой строки со сдвигом исходной строки вниз:
Вставка четырех строк на место пятой-восьмой строк со сдвигом исходных строк вниз:
Вставка строк с использованием переменных, указывающих над какой строкой осуществить вставку и количество вставляемых строк:
Источник
Как вставить/добавить новые/пустые строки в Excel?
Одними из наиболее часто используемых действий при работе с таблицами в Excel являются добавление и удаление строк вообще и пустых строк в частности. Рассмотрим механизмы добавления и удаления пустых строк в таблицах.
Вставка одной пустой строки в таблицу Excel
Добавить новую строку стандартными средствами Excel можно следующим образом: правой кнопкой мыши кликнуть на номере строки, над которой нужно вставить новую строку и выбрать в контекстном меню пункт «Вставить»
При этом, если какие-то данные в таблице были отформатированы (изменены шрифты, изменены цвета, установлены заливки ячеек), то после добавления новой строки появится кнопка «Параметры добавления», раскрыв которую можно выбрать для новой строки один из трех пунктов «Форматировать как сверху», «Форматировать как снизу» и «Очистить формат».
Вставить пустую строку можно также и через кнопки на панели инструментов. Для этого выделите строку, над которой нужно вставить новую пустую строку. После этого зайдите на вкладку «Главная», в группу «Ячейки» и раскройте меню кнопки «Вставить», выберите пункт «Вставить строки на лист».
Добавление нескольких пустых строк в таблицу Excel
Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.
После того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.
Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк, которая предоставляет следующие возможности:
1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);
2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;
3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;
4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);
7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:
а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа — диапазон, который выберет пользователь;
г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбор необходимых условий для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:
Вставка разного количества пустых строк
При помощи надстройки можно вставлять изменяющееся количество пустых строк, если количество вставляемых строк указано в отдельном столбце.
Если установить флажок в поле «Разное количество пустых строк для вставки», то поле с количеством строк для вставки изменяется на номер столбца, в котором указаны числовые значения.
В результате программа определяет номер строки, которая подходит под заданные пользователем условия и вставляет столько пустых строк, сколько указано в этой строке заданного столбца.
Удаление пустых строк
Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее.
Источник
Макрос для добавления строк с заданной высотой в таблицу Excel
Размер ячейки
Размер ячейки по высоте и ширине определяется высотой строки и шириной столбца, на пересечении которых она находится. Если, в вашем случае, нежелательно изменять размеры всей строки или всего столбца, используйте объединенные ячейки нужной величины.
Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.
Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.
На сайте поддержки офисных приложений Microsoft так написано об этих величинах:
- высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
- ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.
Макрос для вставки строк с определенной высотой
В таблице отчета по продажам в розничных точках содержаться объединенные ячейки, как показано ниже на рисунке:
Необходимо экспонировать группы ячеек для каждого штата. Для этого мы добавим по одной пустой строке между каждой группой розничных точек. При этом не имеет значение будет ли содержать группа объединенные ячейки или нет. Ведь некоторые группы состоят из одной строки. А также дополнительно уменьшим высоту этих пустых строк, чтобы внешний вид таблицы был стильным. Выполнить вручную все эти действия: выделение отдельных групп ячеек, вставка между ними пустых строк, а потом изменение высоты для этих же строк – это не рационально использование сил и времени. Особенно если таблица имеет десятки тысяч строк. Лучше написать свой макрос, который сам автоматически и молниеносно выполнит эту рутинную работу за Вас.
Перейдите в режим редактора макросов Visual Basic (ALT+F11):
Создайте в нем новый модуль с помощью инструмента: «Insert»-«Module». А потом запишите в него VBA-код самого макроса:
Sub VstavkaStrok()
Dim i As Long
Dim pustroka As Long
For i = Selection.Rows.Count To 2 Step -1
pustroka = Selection(i, 1).Row + 1
ActiveSheet.Rows(pustroka).Insert xlShiftDown
ActiveSheet.Rows(pustroka).RowHeight = 7
ActiveSheet.Rows(pustroka).Borders(xlInsideVertical). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeLeft). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeRight). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Interior. _
ColorIndex = xlColorIndexNone
i = i — Selection(i, 1).MergeArea.Rows.Count + 1
Next
End Sub
Теперь если мы хотим вставить по одной пустой строке между каждой объединенной и необъединенной ячейкой, которые находиться в столбце A? Тогда а в таблице отчета по продажам выделяем диапазон ячеек A:D18 и запускаем наш макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«VstavkaStrok»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:
Сначала в коде объявлены две переменные:
- i – переменная выполняет роль счетчика в цикле.
- pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.
В макросе находиться цикл, который запускает целый ряд инструкций для каждой строки в выделенном диапазоне ячеек. Направление цикла идет с нижней строки выделения к верхней.
- В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
- Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
- Удаляются в добавленной строке все вертикальные границы, а также заливка.
- Уменьшается значение переменной i на количество строк, которые охватывает текущая объединенная ячейка, находящаяся в первом столбце выделенного диапазона.
Высота строки
Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец – высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.
Примеры изменения высоты строк:
Пример 1
Изменение высоты отдельной ячейки:
в результате, строка, в которой находится активная ячейка, приобретает высоту, равную 10 пунктам.
Пример 2
Изменение высоты строки:
в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.
Пример 3
Изменение высоты ячеек заданного диапазона:
в результате, каждой из первых шести строк рабочего листа будет задана высота, равная 20 пунктам.
Пример 4
Изменение высоты ячеек целого столбца:
в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.
Добавление нескольких пустых строк в таблицу Excel
Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.
После того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.
Описание работы
Иногда необходимо вставлять большое количество пустых строк по различным условиям и в ручную этот процесс занимает много времени. Для упрощения данного процесса в функционал надстройки добавлена функция «Вставить пустые строки».
Чтобы воспользоваться функцией перейдите на вкладку «VBA-Excel» в разделе «Ячейки и диапазоны» откройте меню «Вставить», выберите «Вставить пустые строки».
Появится диалоговое окно с выбором опций для вставки строк. Необходимо выбрать опции в соответствии с тем какая стоит задача.
Вставка произвольного количества строк
Для этого в поле «Условие» необходимо выбрать пункт «Вставить N пустых строк»
Для того что бы указать в какую строку вставлять пустые строки нужно в поле «Начиная со строки» указать номер нужной строки.
Это можно сделать двумя способами:
- Вручную ввести номер строки.
- Нажать кнопку «…» расположенную рядом с полем «Начиная со строки», после чего откроется окно выбора строки. Далее нужно выбрать любую ячейку находящуюся в нужной строку и нажать «Ок»
После чего в поле Количество указать сколько пустых строк нужно вставить. И нажать кнопку «Ок»
Например, нужно вставить 5 пустых строк с 7 строки. тогда ввод в диалоговое окно будет выглядеть следующим образом:
Вставка строк при изменении значения в столбце
Для этого в поле «Условие» должно быть выбрано «Вставлять по изменению значения в столбце»
В этом режиме пустые строки вставляются в том случае если в выбранном столбце меняется значение.
Для указания столбца, по которому просматриваются значения, нужно в поле «Столбец» ввести имя столбца. Это можно сделать двумя способами:
- Вручную ввести имя столбца
- Нажать кнопку «…» расположенную рядом с полем «Столбец», после чего откроется окно выбора столбца. Далее нужно выбрать любую ячейку находящуюся в нужном столбце и нажать «Ок»
Например, вам нужно отделить каждый новый артикул в столбце А пустой строкой. Тогда диалоговое окно примет вид:
Удаление пустых строк
Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее .
Надстройка позволяет:
1. Находить пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданными числовыми и текстовыми значениями (цифрами, буквами, символами, словами и так далее). Задавать для поиска можно как единичное значение, так и несколько значений, через знак-разделитель “;” (точка с запятой);
2. вставлять заданное количество пустых строк как выше, так и ниже строк с искомым значением;
3. вставлять разное количество пустых строк в зависимости от значения, указанного в заданном столбце;
4. осуществлять вставку новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки ниже каждой заполненной ячейки в заданном столбце;
7. задавать диапазон для вставки строк, для этого предусмотрено несколько режимов:
а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа — диапазон, который выберет пользователь;
г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбирать необходимые условия для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Я написал макрос, который ищет столбец для ячейки, которая содержит текст “AddCompany”, а затем для каждой такой ячейки, вставляет новую строку в другой лист, а затем копирует и вставляет значение смежной ячейки (которая содержит имя компании) в эту новую строку.
В моей копии я использую составленные имена в ячейках “Test Company 1” через “Test Company 4” для проверки макроса. Макрос правильно вставляет 4 новые строки, но только последняя компания “Test Company 4” вставлена. И он вставляется в неправильную ячейку, в строке непосредственно под вновь вставленными строками.
Конечным результатом является то, что макрос вставляет строки с 9 по 12 и вставляет “Test Company 4” в строку 13, которая уже содержит имя (которое я не хочу менять).
Я хочу, чтобы макрос делал это, чтобы вставить “новую” строку (просто будет 9-я строка в этом случае, чтобы она поместилась в большую таблицу) для каждой найденной “AddCompany”, затем вставьте название компании в соседнюю ячейку, и повторить до завершения. Вновь вставленные строки с 9 по 12 должны отображать каждую тестовую компанию в конце.
Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк , которая предоставляет следующие возможности:
1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);
2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;
3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;
4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);
7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:
а) используемый диапазон листа – диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны – отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа – диапазон, который выберет пользователь;
г) диапазоны листов – это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбор необходимых условий для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:
Источник
- Excel VBA Вставить строку
Excel VBA Вставить строку
Поскольку в этом слове есть две вещи, одна — VBA, а другая — Insert Row. В этом я объясню, как вставить строку в Excel, используя VBA (Visual Basic для приложений).
VBA — это язык программирования для тех, кто работает в Excel и других программах Office, поэтому можно автоматизировать задачи в Excel, написав так называемые макросы. Используя кодирование VBA, мы можем выполнять практически все задачи, которые мы выполняем в Excel, так как мы можем копировать, вставлять, удалять и т. Д.
Вставить строку — используется для вставки строки в Excel между другой строкой с помощью автоматизации, т.е. одним щелчком мыши.
Предположим, что мы вводим данные сотрудника в Excel, и мы пропустили некоторых сотрудников и хотим вставить данные недостающих между ними, поэтому нам нужно создать пробел и вставить строку для ввода их данных. Вместо вставки строки одна за другой мы можем автоматизировать задачу вставки строк с использованием VBA и создания макросов.
Есть много способов, с помощью которых мы можем вставить строки, используя кодирование VBA. Функция, используемая для вставки строки в VBA:
Диапазон (). Ряд (). EntireRow.Insert
Давайте рассмотрим, у нас есть набор данных, который состоит из столбцов, таких как Имя клиента , Продукт, Продажи, Количество, Стоимость доставки, Приоритет заказа.
Предположим, что нам нужно сместить столбцы вниз, чтобы вставить 3 новые строки между 3 и 4, чтобы вставить новую отсутствующую запись. Вместо того, чтобы вставлять строку один за другим, мы автоматизируем это, чтобы вставить все 3 строки одним щелчком мыши.
Как вставить строки в Excel VBA?
Ниже приведены различные примеры вставки строк в Excel с использованием кода VBA.
Вы можете скачать этот шаблон Excel для вставки строк VBA здесь — Шаблон Excel для вставки строк VBA
Пример № 1 — Использование всей строки
Выполните следующие шаги, чтобы вставить строки в Excel, используя код VBA.
Шаг 1: Для создания макроса нам нужно выбрать вкладку «Разработчик».
Шаг 2. После открытия вкладки «Разработчик» вставьте кнопку из группы «Элементы управления». Нажмите « Вставить» и выберите первый вариант из элементов управления ActiveX. Как вы можете видеть эту командную кнопку .
Шаг 3: Перетащите стрелку в любую ячейку, чтобы создать командную кнопку.
Шаг 4: Чтобы войти в функцию «Вставка», щелкните правой кнопкой мыши на кнопке «Командный», т. Е. Вставьте 3 строки и нажмите « Просмотреть код»
Шаг 5: Когда вы нажимаете на Просмотр кода, появляется следующий код.
Код:
Частный Sub CommandButton1_Click () End Sub
Шаг 6: Мы должны написать наш код INSERT ROW. Как упоминалось ранее, мы должны использовать функцию Rows.EntireRow с RANGE в VBA. В этом коде мы должны вставить 3 между 3- м и 4- м .
Код:
Private Sub CommandButton1_Click () Диапазон ("A3"). Строки ("3: 5"). CompleteRow.Insert End Sub
В приведенной выше строке кода A3 — это столбец, в который мы должны вставить строку, а строки (3: 5) — то, что мы должны вставить 3 новые строки.
Шаг 7: Запустите код, нажав на кнопку « Вставить 3 строки» .
Пример № 2 — Использование номеров строк
Точно так же мы напишем код для вставки 2 строк одним нажатием кнопки.
В этом, мы должны упомянуть строку от начального ряда до конечного номера строки, используя RANGE, за которым следует INSERT, который вставит строки.
Код:
Частный саб Диапазон CommandButton2_Click () ("3: 4"). Вставить конечный саб
Когда мы нажимаем кнопку «Вставить 2 строки», мы видим, что 2 строки были вставлены между 3- й и 4- й строкой.
Точно так же мы можем настроить нашу функцию, чтобы вставить столько строк, сколько сможем.
Пример № 3 — Использование активной ячейки
Активная ячейка означает ячейку, которая выбрана в данный момент. Мы будем использовать активную ячейку для вставки строк. Предположим, что мы находимся в ячейке B3 и хотим вставить ячейку над ней, поэтому мы будем использовать свойство active cell. Мы будем использовать следующий код для активной ячейки.
Код:
Закрытая подпрограмма CommandButton3_Click () ActiveCell.EntireRow.Insert End Sub
Когда мы нажимаем кнопку «Активное свойство ячейки», мы видим, что одна ячейка вставляется над выбранной ячейкой. Выше мы выбрали B5, а ниже мы видим, что над ним вставлена одна строка.
Пример № 4 — Использование активной ячейки со смещением
Предположим, мы хотим вставить строку после 3 строк активной ячейки, для этого мы будем использовать функцию OFFSET. Предположим, мы находимся в ячейке B4 и должны вставить строку после 2 строк, мы будем использовать этот код.
Код:
Закрытая подпрограмма CommandButton4_Click () ActiveCell.Offset (2, 0) .EntireRow.Insert End Sub
Когда мы нажимаем кнопку «Активная ячейка с использованием смещения», в B6 вставляется одна строка .
То, что нужно запомнить
- Он используется для вставки строк в Excel, автоматизируя его.
- Вставка строки VBA используется с объектом RANGE в VBA.
- Перед началом работы включите «Включить все макросы» в настройках макроса.
Рекомендуемые статьи
Это руководство по VBA Insert Row. Здесь мы обсудим, как вставить строку в Excel, используя код VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете посмотреть следующие статьи, чтобы узнать больше —
- Примеры функции VBA GetObject
- Excel Вставка нескольких строк (шаблон Excel)
- Как использовать функцию VBA StrConv?
- Руководство по Excel Вставить ярлык строки
Содержание
- Размер ячейки
- Макрос для вставки строк с определенной высотой
- Высота строки
- Добавление нескольких пустых строк в таблицу Excel
- Описание работы
- Вставка произвольного количества строк
- Вставка строк при изменении значения в столбце
- Удаление пустых строк
- Надстройка позволяет:
- Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Размер ячейки
Размер ячейки по высоте и ширине определяется высотой строки и шириной столбца, на пересечении которых она находится. Если, в вашем случае, нежелательно изменять размеры всей строки или всего столбца, используйте объединенные ячейки нужной величины.
Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.
Высота строки и ширина столбца в Excel
Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.
На сайте поддержки офисных приложений Microsoft так написано об этих величинах:
- высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
- ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.
Макрос для вставки строк с определенной высотой
В таблице отчета по продажам в розничных точках содержаться объединенные ячейки, как показано ниже на рисунке:
Необходимо экспонировать группы ячеек для каждого штата. Для этого мы добавим по одной пустой строке между каждой группой розничных точек. При этом не имеет значение будет ли содержать группа объединенные ячейки или нет. Ведь некоторые группы состоят из одной строки. А также дополнительно уменьшим высоту этих пустых строк, чтобы внешний вид таблицы был стильным. Выполнить вручную все эти действия: выделение отдельных групп ячеек, вставка между ними пустых строк, а потом изменение высоты для этих же строк – это не рационально использование сил и времени. Особенно если таблица имеет десятки тысяч строк. Лучше написать свой макрос, который сам автоматически и молниеносно выполнит эту рутинную работу за Вас.
Перейдите в режим редактора макросов Visual Basic (ALT+F11):
Создайте в нем новый модуль с помощью инструмента: «Insert»-«Module». А потом запишите в него VBA-код самого макроса:
SubVstavkaStrok()
DimiAs Long
DimpustrokaAs Long
Fori = Selection.Rows.CountTo2Step-1
pustroka = Selection(i, 1).Row + 1
ActiveSheet.Rows(pustroka).Insert xlShiftDown
ActiveSheet.Rows(pustroka).RowHeight = 7
ActiveSheet.Rows(pustroka).Borders(xlInsideVertical). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeLeft). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Borders(xlEdgeRight). _
LineStyle = xlLineStyleNone
ActiveSheet.Rows(pustroka).Interior. _
ColorIndex = xlColorIndexNone
i = i - Selection(i, 1).MergeArea.Rows.Count + 1
Next
End Sub
Теперь если мы хотим вставить по одной пустой строке между каждой объединенной и необъединенной ячейкой, которые находиться в столбце A? Тогда а в таблице отчета по продажам выделяем диапазон ячеек A:D18 и запускаем наш макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«VstavkaStrok»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:
Сначала в коде объявлены две переменные:
- i – переменная выполняет роль счетчика в цикле.
- pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.
В макросе находиться цикл, который запускает целый ряд инструкций для каждой строки в выделенном диапазоне ячеек. Направление цикла идет с нижней строки выделения к верхней.
- В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
- Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
- Удаляются в добавленной строке все вертикальные границы, а также заливка.
- Уменьшается значение переменной i на количество строк, которые охватывает текущая объединенная ячейка, находящаяся в первом столбце выделенного диапазона.
Высота строки
Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец – высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.
Примеры изменения высоты строк:
Пример 1
Изменение высоты отдельной ячейки:
ActiveCell.RowHeight = 10 |
в результате, строка, в которой находится активная ячейка, приобретает высоту, равную 10 пунктам.
Пример 2
Изменение высоты строки:
в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.
Пример 3
Изменение высоты ячеек заданного диапазона:
Range(“A1:D6”).RowHeight = 20 |
в результате, каждой из первых шести строк рабочего листа будет задана высота, равная 20 пунктам.
Пример 4
Изменение высоты ячеек целого столбца:
Columns(5).RowHeight = 15 |
в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.
Для того, чтобы вставить несколько новых строк в документ, необходимо выделить строку, выше которой нужно добавить новые строки, и не отпуская левой кнопки мыши выделить столько строк, сколько нужно вставить.
После того как строки выделены, необходимо щелкнуть правой кнопкой мыши на выделенном участке листа и из контекстного меню выбрать пункт «Вставить», либо воспользоваться кнопками во вкладках ленты, аналогично тому, как это описано в предыдущем пункте.
Описание работы
Иногда необходимо вставлять большое количество пустых строк по различным условиям и в ручную этот процесс занимает много времени. Для упрощения данного процесса в функционал надстройки добавлена функция «Вставить пустые строки».
Чтобы воспользоваться функцией перейдите на вкладку «VBA-Excel» в разделе «Ячейки и диапазоны» откройте меню «Вставить», выберите «Вставить пустые строки».
Появится диалоговое окно с выбором опций для вставки строк. Необходимо выбрать опции в соответствии с тем какая стоит задача.
Вставка произвольного количества строк
Для этого в поле «Условие» необходимо выбрать пункт «Вставить N пустых строк»
Для того что бы указать в какую строку вставлять пустые строки нужно в поле «Начиная со строки» указать номер нужной строки.
Это можно сделать двумя способами:
- Вручную ввести номер строки.
- Нажать кнопку «…» расположенную рядом с полем «Начиная со строки», после чего откроется окно выбора строки. Далее нужно выбрать любую ячейку находящуюся в нужной строку и нажать «Ок»
После чего в поле Количество указать сколько пустых строк нужно вставить. И нажать кнопку «Ок»
Например, нужно вставить 5 пустых строк с 7 строки. тогда ввод в диалоговое окно будет выглядеть следующим образом:
Результатом будет:
Вставка строк при изменении значения в столбце
Для этого в поле «Условие» должно быть выбрано «Вставлять по изменению значения в столбце»
В этом режиме пустые строки вставляются в том случае если в выбранном столбце меняется значение.
Для указания столбца, по которому просматриваются значения, нужно в поле «Столбец» ввести имя столбца. Это можно сделать двумя способами:
- Вручную ввести имя столбца
- Нажать кнопку «…» расположенную рядом с полем «Столбец», после чего откроется окно выбора столбца. Далее нужно выбрать любую ячейку находящуюся в нужном столбце и нажать «Ок»
Например, вам нужно отделить каждый новый артикул в столбце А пустой строкой. Тогда диалоговое окно примет вид:
Результат:
Удаление пустых строк
Удаление строк в таблицах Excel уже рассматривалось на страницах этого сайта, удаление же пустых строк является частным случаем удаления строк, следует заметить, что удаление пустых строк, как собственно и их вставку, можно производить программно, при помощи макроса (надстройки). Обо всем этом можно прочитать подробнее.
Надстройка позволяет:
1. Находить пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданными числовыми и текстовыми значениями (цифрами, буквами, символами, словами и так далее). Задавать для поиска можно как единичное значение, так и несколько значений, через знак-разделитель “;” (точка с запятой);
2. вставлять заданное количество пустых строк как выше, так и ниже строк с искомым значением;
3. вставлять разное количество пустых строк в зависимости от значения, указанного в заданном столбце;
4. осуществлять вставку новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки ниже каждой заполненной ячейки в заданном столбце;
7. задавать диапазон для вставки строк, для этого предусмотрено несколько режимов:
а) используемый диапазон листа — диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа — диапазон, который выберет пользователь;
г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбирать необходимые условия для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Я написал макрос, который ищет столбец для ячейки, которая содержит текст “AddCompany”, а затем для каждой такой ячейки, вставляет новую строку в другой лист, а затем копирует и вставляет значение смежной ячейки (которая содержит имя компании) в эту новую строку.
В моей копии я использую составленные имена в ячейках “Test Company 1” через “Test Company 4” для проверки макроса. Макрос правильно вставляет 4 новые строки, но только последняя компания “Test Company 4” вставлена. И он вставляется в неправильную ячейку, в строке непосредственно под вновь вставленными строками.
Конечным результатом является то, что макрос вставляет строки с 9 по 12 и вставляет “Test Company 4” в строку 13, которая уже содержит имя (которое я не хочу менять).
Я хочу, чтобы макрос делал это, чтобы вставить “новую” строку (просто будет 9-я строка в этом случае, чтобы она поместилась в большую таблицу) для каждой найденной “AddCompany”, затем вставьте название компании в соседнюю ячейку, и повторить до завершения. Вновь вставленные строки с 9 по 12 должны отображать каждую тестовую компанию в конце.
Как вставить/добавить заданное количество пустых/новых строк в определенные места?
Стандартными средствами Excel такую задачу решить можно не всегда, но не будем забывать про то, что существует такой мощный инструмент как VBA, позволяющий автоматизировать повторяющиеся однотипные действия. По инструкции устанавливается в приложение Excel надстройка для вставки пустых строк, которая предоставляет следующие возможности:
1. Выбор искомого значения, которым могут являться пустые ячейки, непустые ячейки, ячейки с заданным цветом заливки, ячейки с заданным числом, а также ячейки с заданным текстом (быквы, символы);
2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;
3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;
4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);
5. вставлять пустые строки при каждой смене значения в заданном столбце;
6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);
7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:
а) используемый диапазон листа – диапазон активного листа, включающий в себя все ячейки, находящиеся между первой заполненной и последней заполненной ячейкой;
б) используемые диапазоны – отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;
в) диапазон листа – диапазон, который выберет пользователь;
г) диапазоны листов – это одноименные диапазоны на всех листа рабочей книги.
*Внимательно выбирайте диапазон для получения желаемого результата!
8. выбор необходимых условий для значений ячеек.
Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.
Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.
Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:
Источники
- https://vremya-ne-zhdet.ru/vba-excel/razmer-yacheyki-vysota-stroki-shirina-stolbtsa-avtopodbor/
- https://exceltable.com/vba-macros/makros-dlya-dobavleniya-strok
- http://macros-vba.ru/nadstrojki/excel/105-kak-vstavit-dobavit-udalit-novye-pustye-stroki
- https://micro-solution.ru/projects/addin_vba-excel/insert_rows
- https://9726552.ru/makros-vstavit-stroku-posle-stroki-so-znachenijami/