Вставка диапазона со сдвигом ячеек вправо или вниз методом 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 |
В этом случае седьмой столбец окажется на месте третьего столбца.
Home / VBA / VBA Insert Column (Single and Multiple)
In this tutorial, we will look at how to insert a column using a VBA code in Excel. We will also explore what are the different ways to write a macro for this.
To insert a column using a VBA code, you need to use the “Entire Column” property with the “Insert” method. With the entire column property, you can refer to the entire column using a cell and then insert a new column. By default, it will insert a column before the cell that you have mentioned.
- First, specify a cell using the range object.
- Now, enter a dot (.) to get the list of properties and methods.
- After that, select the “Entire Column” property or type it.
- In the end, again enter a dot (.) and select the “Insert” method or type it.
Range("A1").EntireColumn.Insert
Your code is ready here to insert a column. Now when you run this code, it will instantly insert a new column before the column A.
Insert Multiple Columns
There are two ways to insert multiple columns in a worksheet that I have found. The first is the same insert method that we have used in the above example. With this, you need to specify a range of columns whose count is equal to the count of the column you want to insert.
Now let’s say you want to insert 5 columns after column C in the case you can use a code like the following.
Range("C:G").EntireColumn.Insert
To be honest, I haven’t found this method quite useful because you need to change the range if you want to change the code itself. So, here’s the second method.
'variables to use in the code
Dim iCol As Long
Dim iCount As Long
Dim i As Long
'to get the number of columns that you want to insert with an input box
iCount = InputBox(Prompt:="How many column you want to add?")
'to get the column number where you want to insert the new column
iCol = InputBox _
(Prompt:= _
"After which column you want to add new column? (Enter the column number)")
'loop to insert new column(s)
For i = 1 To iCount
Columns(iCol).EntireColumn.Insert
Next i
When you run this code, it asks you to enter the number of columns that you want to add and then the column number where you want to add all those new columns. It uses a FOR LOOP (For Next) to enter the number of columns that you have mentioned.
Insert Columns Based on the Cell Values
If you want to insert columns based on a cell value, then you can use the following code.
Dim iCol As Long
Dim iCount As Long
Dim i As Long
iCount = Range("A1").Value
iCol = Range("B1").Value
For i = 1 To iCount
Columns(iCol).EntireColumn.Insert
Next i
When you run this macro, it takes count of columns from the cell A1 and the column where you want to add columns from the cell B1.
Insert a Column without Formatting
When you insert a column where the above column has some specific formatting, in that case, the column will also have that formatting automatically. And the simplest way to deal with this thing is to use clear formats. Consider the following code.
Columns(7).EntireColumn.Insert
Columns(7).ClearFormats
When you run the above code, it inserts a new column before the 7th column. Now, what happens, when you insert a column before the 7th column that new column becomes the 7th column, and then the second line of code clear the formats from it.
Insert Copied Column
You can also use the same method to copy a column and then insert it somewhere else. See the following code.
Application.CutCopyMode = False
With Worksheets("Data")
.Columns(5).Copy
.Columns(9).Insert Shift:=xlShiftDown
End With
Application.CutCopyMode = True
More Tutorials
- Count Rows using VBA in Excel
- Excel VBA Font (Color, Size, Type, and Bold)
- Excel VBA Hide and Unhide a Column or a Row
- Excel VBA Range – Working with Range and Cells in VBA
- Apply Borders on a Cell using VBA in Excel
- Find Last Row, Column, and Cell using VBA in Excel
- Insert a Row using VBA in Excel
- Merge Cells in Excel using a VBA Code
- Select a Range/Cell using VBA in Excel
- SELECT ALL the Cells in a Worksheet using a VBA Code
- ActiveCell in VBA in Excel
- Special Cells Method in VBA in Excel
- UsedRange Property in VBA in Excel
- VBA AutoFit (Rows, Column, or the Entire Worksheet)
- VBA ClearContents (from a Cell, Range, or Entire Worksheet)
- VBA Copy Range to Another Sheet + Workbook
- VBA Enter Value in a Cell (Set, Get and Change)
- VBA Named Range | (Static + from Selection + Dynamic)
- VBA Range Offset
- VBA Sort Range | (Descending, Multiple Columns, Sort Orientation
- VBA Wrap Text (Cell, Range, and Entire Worksheet)
- VBA Check IF a Cell is Empty + Multiple Cells
⇠ Back to What is VBA in Excel
Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes
You can use the following syntax to insert multiple columns in Excel using VBA:
Sub InsertMultipleColumns()
Worksheets("Sheet1").Range("B:D").EntireColumn.Insert
End Sub
This particular macro will insert three blank columns in the range D through F of the sheet called Sheet1 and push any existing columns to the right.
The following example shows how to use this syntax in practice.
Suppose we have the following dataset that contains information about various basketball players:
Suppose we would like to insert three blank columns starting at column B.
We can create the following macro to do so:
Sub InsertMultipleColumns()
Worksheets("Sheet1").Range("B:D").EntireColumn.Insert
End Sub
When we run this macro, we receive the following output:
Notice that three blank columns were inserted into column locations B, C and D of this worksheet called Sheet1.
The values that previously existed in columns B, C and D were simply pushed to the right.
Note: You can find the complete documentation for the VBA Insert function here.
Additional Resources
The following tutorials explain how to perform other common tasks in VBA:
VBA: How to Find Last Used Row
VBA: How to Count Number of Rows in Range
VBA: How to Count Number of Used Columns
In this Article
- Rows & Columns – Paste vs. Insert
- Copy & Paste Over Existing Row / Column
- Copy & Insert Row / Column
- Copy Entire Row
- Cut and Paste Rows
- Copy Multiple Rows
- Copy Entire Column
- Cut and Paste Columns
- Copy Multiple Columns
- Copy Rows or Columns to Another Sheet
- Cut Rows or Columns to Another Sheet
This tutorial will teach you how to copy (or cut) entire Rows or Columns using VBA. We cover copying and pasting ranges of cells in another article.
First we will show you how to paste or insert copied rows/columns and discuss the differences. Then we will show you all of the different ways to references rows and columns when copying or cutting.
Rows & Columns – Paste vs. Insert
When pasting rows and columns you have two options: You can paste over the existing row (or column) or you can insert a new row (or column).
Let’s look at the difference…
Copy & Paste Over Existing Row / Column
This will copy row 1 and paste it into the existing row 5:
Range("1:1").Copy Range("5:5")
This will copy column C and paste it into column E:
Range("C:C").Copy Range("E:E")
Copy & Insert Row / Column
Instead you can insert the copied row or column and shift the existing rows or columns to make room.
This will copy row 1 and insert it into row 5, shifting the existing rows down:
Range("1:1").Copy
Range("5:5").Insert
This will copy column C and insert it into column E, shifting the existing columns to the right:
Range("C:C").Copy
Range("E:E").Insert
Copy Entire Row
Below we will show you several ways to copy row 1 and paste into row 5.
Range("1:1").Copy Range("5:5")
Range("A1").EntireRow.Copy Range("A5")
Rows(1).Copy Rows(5)
Cut and Paste Rows
Simply use Cut instead of Copy to cut and paste rows:
Rows(1).Cut Rows(5)
Copy Multiple Rows
Here are examples of copying multiple rows at once:
Range("5:7").Copy Range("10:13")
Range("A5:A7").EntireRow.Copy Range("A10:A13")
Rows("5:7").Copy Rows("10:13")
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
Copy Entire Column
You can copy entire columns similarily to copying entire rows:
Range("C:C").Copy Range("E:E")
Range("C1").EntireColumn.Copy Range("C1").EntireColumn
Columns(3).Copy Range(5)
Cut and Paste Columns
Simply use Cut instead of Copy to cut and paste columns:
Range("C:C").Cut Range("E:E")
Copy Multiple Columns
Here are examples of copying multiple columns at once:
Range("C:E").Copy Range("G:I")
Range("C1:E1").EntireColumn.Copy Range("G1:I1")
Columns("3:5").Copy Columns("7:9")
VBA Programming | Code Generator does work for you!
Copy Rows or Columns to Another Sheet
To copy to another sheet, simply use the Sheet Object:
Sheets("sheet1").Range("C:E").Copy Sheets("sheet2").Range("G:I")
Cut Rows or Columns to Another Sheet
You can use the exact same technique to cut and paste rows or columns to another sheet.
Sheets("sheet1").Range("C:E").Cut Sheets("sheet2").Range("G:I")
Содержание
- VBA Вставить столбец — Как вставить столбец в Excel VBA?
- Excel VBA Вставить столбец
- Как вставить столбец в Excel VBA?
- Пример № 1 — VBA Вставить столбец
- Пример № 2 — VBA Вставить столбец
- Пример № 3 — VBA Вставить столбец
- Пример № 4 — VBA Вставить столбец
- Плюсы Excel VBA Вставить столбец
- То, что нужно запомнить
- Рекомендуемые статьи
- Пример макроса для вставки и удаления строк или столбцов на нескольких листах в Excel
- Аннотация
- Дополнительная информация
- Пример макроса с использованием цикла для вставки строк на несколько листов
- Пример макроса для выбора столбца и вставки нового столбца
- VBA Excel. Метод Range.Insert (вставка со сдвигом ячеек)
- Метод Range.Insert
- Синтаксис
- Параметры
- Примеры
- Простая вставка диапазона
- Вставка вырезанного диапазона
- Вставка скопированного диапазона
- Вставка и перемещение строк
VBA Вставить столбец — Как вставить столбец в Excel VBA?
Excel VBA Вставить столбец
В Excel, если мы хотим вставить столбец, есть несколько способов сделать это. Мы можем щелкнуть вправо и выбрать «Вставить столбец» в раскрывающемся списке меню или одновременно использовать клавиши Ctrl + Shift + Plus (+). Но что если мы автоматизируем этот процесс, создав макрос через VBA? Это очень полезно, когда мы работаем над созданием макроса с огромной структурой кодирования или добавлением столбца или нескольких столбцов, что также является задачей для выполнения. В VBA есть весь столбец, а функция Вставка используется для вставки нового столбца.
Как вставить столбец в Excel VBA?
Мы научимся вставлять столбец в Excel с использованием кода VBA на нескольких примерах.
Вы можете скачать этот шаблон Excel для вставки столбцов VBA здесь — Шаблон Excel для вставки столбцов VBA
Пример № 1 — VBA Вставить столбец
У нас есть таблица из 2 столбцов и 11 строк, как показано ниже. Теперь мы будем автоматизировать процесс вставки столбцов разными способами.
Для этого выполните следующие шаги:
Шаг 1: Сначала вставьте новый модуль в VBA из пункта меню «Вставка», как показано ниже.
Шаг 2: Теперь запустите подкатегорию в названии выполняемой функции, например VBA Insert Column, или в любое другое имя, как показано ниже.
Код:
Шаг 3. Сначала выберите диапазон ячеек или полных столбцов, в которые мы хотим вставить столбец, а затем команду Вставить, как показано ниже. Команда Вставить позволит вставить любую строку или столбец или ячейку в выбранный столбец или ячейку диапазона.
Код:
Шаг 4: Теперь выберите диапазон ячеек в качестве ссылки, откуда мы хотим вставить столбец, как показано ниже.
Код:
Шаг 5 : Как обсуждалось в объяснении, мы будем использовать весь столбец с функцией Вставка, как показано ниже. Это позволит вставить столбец.
Код:
Шаг 6: Теперь скомпилируйте код, нажав функциональную клавишу F8, а затем нажмите кнопку Play, чтобы запустить полный код, который находится под строкой меню, как показано ниже. Мы заметим, что между column1 и column2 будут вставлены два новых пустых столбца, как показано ниже.
Пример № 2 — VBA Вставить столбец
Есть еще один способ вставки столбца. Этот метод включает в себя комбинацию различных команд.
Шаг 1: Вставьте новый модуль из меню «Вставка».
Шаг 2: И напишите подкатегорию в названии функции «Выполнено», как показано ниже, или в любом другом имени.
Код:
Шаг 3: С помощью размерной переменной DIM с любым алфавитом или именем определите его как Range let ‘скажем Column, как показано ниже.
Код:
Шаг 4: Теперь следуя за Range, используйте функцию Set с столбцом определенного размера, как показано ниже, за которым следует знак равенства («=»).
Код:
Шаг 5: Теперь используйте функцию Application, встроенную в VBA с определенным диапазоном полного столбца B.
Код:
Шаг 6: Теперь используйте переменную Column с функцией Insert, как показано ниже.
Код:
Шаг 7: Мы можем сдвинуть, чтобы вставить столбец вправо или влево с помощью команды Shift. Обычно столбец вставляется в правое направление всегда от выбранной ячейки или столбца.
Код:
Шаг 8: Наконец, выберите исходный формат ссылки справа или снизу для столбца или строки в зависимости от типа вставки.
Код:
Шаг 9: Теперь все готово. Мы можем скомпилировать код и запустить его. Мы увидим новый столбец между Colum1 и Column2, который будет добавлен, как показано ниже.
Пример № 3 — VBA Вставить столбец
Этот пример — еще один самый простой способ вставить столбец в VBA.
Шаг 1: Вставьте новый модуль
Шаг 2: Добавьте подкатегорию в название столбца вставки VBA, как показано ниже.
Код:
Шаг 3: Сначала выберите ссылку на столбец или ячейку, куда мы хотим добавить столбец, с помощью Select, как показано ниже.
Код:
Шаг 4: Во второй строке используйте команду «Выделение» вместе с функцией «Вставка», как показано ниже.
Код:
Шаг 5: Наконец, выберите позицию, в которую мы хотим сместить вставленный новый столбец, вправо или влево с помощью функции Shift. Выбор размещения нового столбца полностью зависит от индивидуальных требований.
Код:
Шаг 6: Это завершает наш код. Теперь мы можем скомпилировать код, чтобы найти, есть ли какая-либо ошибка. Если ошибки не найдены, запустите код. Мы увидим, что новый столбец будет добавлен между столбцами 1 и 2, как показано ниже.
Пример № 4 — VBA Вставить столбец
В этом примере мы узнаем, как добавлять новые столбцы после каждого уже стоящего столбца.
Шаг 1: Теперь вставьте модуль из меню вставки.
Шаг 2: После этого добавьте подкатегорию в название VBA Insert Column с последовательностью чисел.
Код:
Шаг 3: Теперь используйте DIM для определения переменной с любым именем. Мы использовали столбец как целое число (в случае использования чисел)
Код:
Шаг 4: К столбцу после каждого стоящего заполненного столбца мы выберем и используем столбец (2), чтобы добавить новый столбец, как показано ниже.
Код:
Шаг 5: Откройте цикл For-Next, где мы напишем условия для вставки столбца друг за другом, как показано.
Код:
Шаг 6: Поскольку в наших образцах данных есть только 2 столбца, мы можем добавить только новый столбец из этих столбцов. Таким образом, мы используем диапазон от 0 до 2 столбцов последовательности.
Код:
Шаг 7: С помощью функции ActiveCell используйте FullColumn для вставки, как показано ниже.
Код:
Шаг 8: С помощью функции ActiveCell используйте Offset, чтобы разместить вновь добавленный столбец. Мы используем 0 и 2- ю позицию.
Код:
Шаг 9: Теперь скомпилируйте код и запустите его, если ошибки не найдены. Мы увидим, что после column1 и column2 добавляются новые столбцы.
Плюсы Excel VBA Вставить столбец
- Это полезно, так как быстро добавляет новый столбец в любой диапазон ячеек.
- Это легко реализовать, даже если структура кода огромна.
- Если мы работаем над огромным кодом, для завершения кода потребуется новая колонка, использование приведенных выше примеров облегчит задачу.
То, что нужно запомнить
- Если вы используете пример 4, не забудьте выбрать диапазон столбцов, пока таблица не будет применима.
- Сохранение файла в макросе enable excel, сохранение кода.
- Вставьте только применимые и обязательные столбцы, чтобы избежать добавления ненужных столбцов.
Рекомендуемые статьи
Это руководство по вставке столбца VBA. Здесь мы обсуждаем, как вставить столбец в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- VBA VLOOKUP Функция
- Функция DCOUNT в Excel
- VBA Copy Paste
- Функция COMBIN в 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, из буфера обмена со сдвигом ячеек по умолчанию:
Вставка и перемещение строк
Вставка одной строки на место пятой строки со сдвигом исходной строки вниз:
Вставка четырех строк на место пятой-восьмой строк со сдвигом исходных строк вниз:
Вставка строк с использованием переменных, указывающих над какой строкой осуществить вставку и количество вставляемых строк:
Источник