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

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


  • 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, или в любое другое имя, как показано ниже.

Код:

 Sub VBAColumn1 () End Sub 

Шаг 3. Сначала выберите диапазон ячеек или полных столбцов, в которые мы хотим вставить столбец, а затем команду Вставить, как показано ниже. Команда Вставить позволит вставить любую строку или столбец или ячейку в выбранный столбец или ячейку диапазона.

Код:

 Sub VBAColumn1 () Диапазон ("B: B"). Вставить конец Sub 

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

Код:

 Sub VBAColumn1 () Range ("B: B"). Вставить диапазон ("B4") End Sub 

Шаг 5 : Как обсуждалось в объяснении, мы будем использовать весь столбец с функцией Вставка, как показано ниже. Это позволит вставить столбец.

Код:

 Sub VBAColumn1 () Range ("B: B"). Вставить диапазон ("B4"). CompleteColumn.Insert End Sub 

Шаг 6: Теперь скомпилируйте код, нажав функциональную клавишу F8, а затем нажмите кнопку Play, чтобы запустить полный код, который находится под строкой меню, как показано ниже. Мы заметим, что между column1 и column2 будут вставлены два новых пустых столбца, как показано ниже.

Пример № 2 — VBA Вставить столбец

Есть еще один способ вставки столбца. Этот метод включает в себя комбинацию различных команд.

Шаг 1: Вставьте новый модуль из меню «Вставка».

Шаг 2: И напишите подкатегорию в названии функции «Выполнено», как показано ниже, или в любом другом имени.

Код:

 Sub VBAColumn2 () End Sub 

Шаг 3: С помощью размерной переменной DIM с любым алфавитом или именем определите его как Range let ‘скажем Column, как показано ниже.

Код:

 Sub VBAColumn2 () Dim Column As Sub End Sub 

Шаг 4: Теперь следуя за Range, используйте функцию Set с столбцом определенного размера, как показано ниже, за которым следует знак равенства («=»).

Код:

 Sub VBAColumn2 () Dim Column As Range: Установить столбец = Конец Sub 

Шаг 5: Теперь используйте функцию Application, встроенную в VBA с определенным диапазоном полного столбца B.

Код:

 Sub VBAColumn2 () Dim Column As Range: Установить столбец = Application.Range ("B: B") End Sub 

Шаг 6: Теперь используйте переменную Column с функцией Insert, как показано ниже.

Код:

 Sub VBAColumn2 () Dim Column As Range: Установить Column = Application.Range ("B: B") Column.Insert End Sub 

Шаг 7: Мы можем сдвинуть, чтобы вставить столбец вправо или влево с помощью команды Shift. Обычно столбец вставляется в правое направление всегда от выбранной ячейки или столбца.

Код:

 Sub VBAColumn2 () Dim Column As Диапазон: Установить Column = Application.Range ("B: B") Column.Insert Shift: = xlShiftToRight, End Sub 

Шаг 8: Наконец, выберите исходный формат ссылки справа или снизу для столбца или строки в зависимости от типа вставки.

Код:

 Sub VBAColumn2 () Dim Column As Диапазон: Установите Column = Application.Range ("B: B") Column.Insert Shift: = xlShiftToRight, CopyOrigin: = xlFormatFromRightOrBelow End Sub 

Шаг 9: Теперь все готово. Мы можем скомпилировать код и запустить его. Мы увидим новый столбец между Colum1 и Column2, который будет добавлен, как показано ниже.

Пример № 3 — VBA Вставить столбец

Этот пример — еще один самый простой способ вставить столбец в VBA.

Шаг 1: Вставьте новый модуль

Шаг 2: Добавьте подкатегорию в название столбца вставки VBA, как показано ниже.

Код:

 Sub VBAColumn3 () End Sub 

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

Код:

 Sub VBAColumn3 () Столбцы ("B: B"). Выберите End Sub 

Шаг 4: Во второй строке используйте команду «Выделение» вместе с функцией «Вставка», как показано ниже.

Код:

 Sub VBAColumn3 () Столбцы ("B: B"). Выберите Selection.Insert End Sub 

Шаг 5: Наконец, выберите позицию, в которую мы хотим сместить вставленный новый столбец, вправо или влево с помощью функции Shift. Выбор размещения нового столбца полностью зависит от индивидуальных требований.

Код:

 Sub VBAColumn3 () Столбцы ("B: B"). Выберите Selection.Insert Shift: = xlToRight End Sub 

Шаг 6: Это завершает наш код. Теперь мы можем скомпилировать код, чтобы найти, есть ли какая-либо ошибка. Если ошибки не найдены, запустите код. Мы увидим, что новый столбец будет добавлен между столбцами 1 и 2, как показано ниже.

Пример № 4 — VBA Вставить столбец

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

Шаг 1: Теперь вставьте модуль из меню вставки.

Шаг 2: После этого добавьте подкатегорию в название VBA Insert Column с последовательностью чисел.

Код:

 Sub VBAColumn4 () End Sub 

Шаг 3: Теперь используйте DIM для определения переменной с любым именем. Мы использовали столбец как целое число (в случае использования чисел)

Код:

 Sub VBAColumn4 () Dim Column As Integer End Sub 

Шаг 4: К столбцу после каждого стоящего заполненного столбца мы выберем и используем столбец (2), чтобы добавить новый столбец, как показано ниже.

Код:

 Sub VBAColumn4 () Тусклый столбец в виде целочисленных столбцов (2). Выберите End Sub 

Шаг 5: Откройте цикл For-Next, где мы напишем условия для вставки столбца друг за другом, как показано.

Код:

 Sub VBAColumn4 () Тусклый столбец в виде целочисленных столбцов (2). Выберите для следующего конца Sub 

Шаг 6: Поскольку в наших образцах данных есть только 2 столбца, мы можем добавить только новый столбец из этих столбцов. Таким образом, мы используем диапазон от 0 до 2 столбцов последовательности.

Код:

 Sub VBAColumn4 () Тусклый столбец в виде целочисленных столбцов (2). Выберите для столбца = от 0 до 2 Next End Sub 

Шаг 7: С помощью функции ActiveCell используйте FullColumn для вставки, как показано ниже.

Код:

 Sub VBAColumn4 () Темный столбец в виде целочисленных столбцов (2). Выбрать для столбца = от 0 до 2 ActiveCell.EntireColumn.Insert Next End Sub 

Шаг 8: С помощью функции ActiveCell используйте Offset, чтобы разместить вновь добавленный столбец. Мы используем 0 и 2- ю позицию.

Код:

 Sub VBAColumn4 () Затемнять столбец в виде целочисленных столбцов (2). Выбрать для столбца = от 0 до 2 ActiveCell.EntireColumn.Insert ActiveCell.Offset (0, 2). Выбрать следующий конец Sub 

Шаг 9: Теперь скомпилируйте код и запустите его, если ошибки не найдены. Мы увидим, что после column1 и column2 добавляются новые столбцы.

Плюсы Excel VBA Вставить столбец

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

То, что нужно запомнить

  • Если вы используете пример 4, не забудьте выбрать диапазон столбцов, пока таблица не будет применима.
  • Сохранение файла в макросе enable excel, сохранение кода.
  • Вставьте только применимые и обязательные столбцы, чтобы избежать добавления ненужных столбцов.

Рекомендуемые статьи

Это руководство по вставке столбца VBA. Здесь мы обсуждаем, как вставить столбец в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. VBA VLOOKUP Функция
  2. Функция DCOUNT в Excel
  3. VBA Copy Paste
  4. Функция COMBIN в Excel

Содержание:

  1. Вставить новые столбцы в Excel
  2. Вставить новый столбец (сочетание клавиш)
  3. Добавить несколько новых столбцов (смежных)
  4. Добавить несколько новых столбцов (несмежных)
  5. Вставлять новые столбцы после каждого другого столбца (с использованием VBA)
  6. Добавить столбец в таблицу Excel

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

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

Вставить новые столбцы в Excel

В этом руководстве я расскажу о следующих методах / сценариях вставки новых столбцов в Excel

  1. Вставьте один новый столбец (с помощью сочетания клавиш или параметров на ленте)
  2. Добавить несколько новых столбцов
  3. Добавляйте несмежные столбцы за один раз
  4. Вставлять новые столбцы после каждого другого столбца
  5. Вставить новый столбец в таблицу Excel

Вставить новый столбец (сочетание клавиш)

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

Ниже показано сочетание клавиш для вставки столбца в Excel:

Ctrl + Shift + (удерживая клавиши Ctrl и Shift, нажмите клавишу плюс)
Command + I, если вы используете Mac

Ниже приведены инструкции по использованию этого сочетания клавиш для добавления столбца слева от выбранного столбца:

  1. Выберите ячейку в столбце, слева от которого вы хотите добавить новый столбец
  2. Используйте сочетание клавиш Ctrl + Shift + плюс
  3. В открывшемся диалоговом окне «Вставка» выберите параметр «Весь столбец» (или нажмите клавишу C).5 способов вставки новых столбцов в Excel (включая ярлык и VBA)
  4. Щелкните OK (или нажмите клавишу Enter).

Вышеупомянутые шаги немедленно добавят новый столбец слева от выбранного столбца.

Другой способ добавить новый столбец — сначала выбрать весь столбец, а затем выполнить описанные выше действия. Когда вы выбираете весь столбец, используя Ctrl + Shift + ярлык не отображает диалоговое окно вставки. Он сразу же добавит новый столбец.

Ниже показано сочетание клавиш для выбора всего столбца (после выбора ячейки в столбце):

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

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

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Это приведет к вставке столбца слева от столбца, в котором вы выбрали ячейку.

Добавить несколько новых столбцов (смежных)

Если вам нужно вставить несколько соседних столбцов, вы можете либо вставить один столбец и время и просто повторить тот же процесс (вы можете использовать клавишу F4, чтобы повторить последнее действие), либо вы можете вставить все эти столбцы за один раз. Предположим, у вас есть набор данных, как показано ниже, и вы хотите добавить два столбца слева от столбца B.

Ниже приведены шаги для этого

  1. Выберите два столбца (начиная с того, слева от которого вы хотите вставить столбцы)
  2. Щелкните правой кнопкой мыши в любом месте выделения
  3. Нажмите «Вставить«.

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Вышеупомянутые шаги мгновенно вставили бы два столбца слева от столбца B. Если вы хотите вставить любое другое количество столбцов (скажем, 3, 4 или 5 столбцов), вы выбираете это количество для начала.

Добавить несколько новых столбцов (несмежных)

Приведенный выше пример является быстрым и быстрым, когда вы хотите добавить новые соседние столбцы (т. Е. Блок из 3 соседних столбцов, как показано выше). Но что, если вы хотите вставить столбцы, но они не являются смежными.

Например, предположим, что у вас есть набор данных, показанный ниже, и вы хотите вставить один столбец перед столбцом B и один перед столбцом D.

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Хотя вы можете делать это по одному, есть способ лучше.

Ниже приведены шаги по добавлению нескольких несмежных столбцов в Excel

  1. Выберите столбцы, в которые вы хотите вставить новый столбец.
  2. Щелкните правой кнопкой мыши в любом месте выделения
  3. Щелкните Вставить.

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Вышеупомянутые шаги мгновенно вставят столбец слева от выбранных столбцов.

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Вставлять новые столбцы после каждого другого столбца (с использованием VBA)

Иногда вам может понадобиться добавить новый столбец после каждого другого столбца в существующем наборе данных. Хотя вы можете сделать это вручную, если вы работаете с большим набором данных, это может занять некоторое время. Более быстрый способ сделать это — использовать простой код VBA, чтобы просто вставить столбец после каждого столбца в вашем наборе данных.
Sub InsertColumn () 'Код, созданный Sumit Bansal с trumpexcel.com Dim ColCount As Integer Dim i As Integer StartCol = Selection.Columns.Count + Selection.Columns (1) .Column EndCol = Selection.Columns (1) .Column For i = StartCol To EndCol Шаг -1 Ячейки (1, i) .EntireColumn.Insert Next i End Sub
Приведенный выше код пройдет по каждому столбцу в выделенном фрагменте и вставит столбец справа от выбранных столбцов. Вы можете добавить этот код в обычный модуль, а затем запустить этот макрос оттуда. Или, если вам необходимо использовать эту функцию регулярно, вы также можете рассмотреть возможность добавления ее в личную книгу макросов, а затем добавить ее на панель быстрого доступа. Таким образом, у вас всегда будет доступ к этому коду и вы сможете запустить его одним щелчком мыши.

Примечание. Приведенный выше код также работает, если данные отформатированы как таблица Excel.

Добавить столбец в таблицу Excel

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

Чтобы вставить столбец слева от столбца B, выберите любую ячейку в столбце, щелкните правой кнопкой мыши, перейдите к параметру «Вставить» и нажмите «Столбцы таблицы слева».

5 способов вставки новых столбцов в Excel (включая ярлык и VBA)

Это вставит столбец слева от выбранной ячейки. Если вы выберете ячейку в столбце B и одну в столбце D, вы заметите, что опция «Столбцы таблицы слева» неактивна. В этом случае вам придется вставлять столбцы только по одному. Что удивительно, это работает, когда вы выбираете несмежные строки, но не со столбцами.

Итак, это некоторые из методов, которые вы можете использовать для вставки новых столбцов в Excel. Все методы, описанные в этом руководстве, также будут работать, если вы хотите вставить новые строки (хотя код VBA потребует некоторой модификации).

Надеюсь, вы нашли этот урок полезным!

Ivan_taranov

0 / 0 / 0

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

Сообщений: 3

1

Как через макрос добавить столбец?

04.10.2011, 05:27. Показов 42640. Ответов 15

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


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

Как через макрос добавить столбец?
В объемной таблице я ищу нужный столбец.

Visual Basic
1
2
3
4
5
6
7
If DialogSheets('d1').Show = No Then GoTo M10
Worksheets('1').Activate
 Range('A2:BA2').Select
    Selection.Find(What:=Sheets('sup').Cells(Sheets('sup').Cells(2, 2).Value, 3).Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Select
Sheets('sup').Cells(7, 2).Value = Selection.Column

И после того, как узнал номер никак не могу его выделить.
Подскажите пожалуйста, как лучше это сделать.



0



Masalov

22 / 5 / 1

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

Сообщений: 370

04.10.2011, 06:49

2

вставить 5-й столбик

Visual Basic
1
Sheets('sup').Columns(5).Insert Shift:=xlToRight

выделить 5-й столбик

Visual Basic
1
Columns(5).Select

(для активного листа)

посмотрите тему: http://relib.com/forums/topic.asp?id=876276
в ней alex_gearbox приводит пример.



0



Ivan_taranov

0 / 0 / 0

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

Сообщений: 3

06.10.2011, 11:01

 [ТС]

3

Спасибо большое за ответ, но с одной стороны все просто, а если я подставляю

Visual Basic
1
Columns(Sheets('sup').Cells(88, 2).Value).Select

То выделяется вся таблица.
Попробовал по другому

Visual Basic
1
2
a = Sheets('sup').Cells(88, 2).Value
Columns(a).Select

Результат тот же.



0



Masalov

22 / 5 / 1

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

Сообщений: 370

06.10.2011, 11:24

4

А что в Sheets(‘sup’).Cells(88, 2)?

Зачем Вы используете так часто Select?
Это зачем-то надо или Вы подражаете макрорекордеру?

Например запись

Visual Basic
1
2
Range('A2:BA2').Select
Selection.Find(What:=...

Лучше заменить на

Visual Basic
1
Range('A2:BA2').Find(What:=...

В этом случае Select не нужен, код читаемее…



0



0 / 0 / 0

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

Сообщений: 3

08.10.2011, 12:08

 [ТС]

5

Просто я еще мало знаю о значениях и для написания функции поиск использовал примитивное решение. Включил начать макрос и нажал Ctrl+F и напримере этого уже стал писать макрос. Т.е. если правильно понимаю, что Select и Selection можно опускать?



0



Сумрак

08.10.2011, 16:30

6

Нет, Selection — это обьект указывающий на выделенный обьект Range/
В Excel все постороено на Range. Ячейка(Cell) Тоже Range. Вобщем все Range :-))). Макрорекордер использует этот обьект только для исключения ошибок. Но лучше использовать явное обьявление обьектов. Если работаете с Листом то
Dim WS as WorkSheet
set WS = Aktivesheet

set WS= nothing — лучше в конце процедуры явно обнулять переменную(очищать)
все… не зависимо какой лист активный… вы занаете что обратившись к WS вы всегда получите нужный лист.

Сумрак

08.10.2011, 16:32

7

хех.. не совсем понятно отвветил…
Select — метод. Selection — обьект. Его нужно не отпускать а ЗАМЕНЯТЬ на явный обьект.

0 / 0 / 0

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

Сообщений: 4

13.09.2019, 09:33

8

Подскажите, необходимо вставить следующий макрос…

Если значение ячейки больше 2, то добавляются столбцы, количество добавляемых равно значение ячейки — 2, и добавиться они должны между определёнными столбцами.
Спасибо!



0



3827 / 2254 / 751

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

Сообщений: 5,928

13.09.2019, 09:46

9

файл пример приложите с более подробным описанием согласно файла.



0



0 / 0 / 0

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

Сообщений: 4

13.09.2019, 10:10

10

Вообще это для екселя макрос…
Необходимо произвести расчёты по формулам, среди которых есть максимум и минимум от вводимых данных.
Первоначально будет два столбца, но пользователь вводит количество участников(N) и , соответственно, если их больше 2-х, то, количество столбцов должно увеличится на n-2. И ячейки в которых были вбиты формулы тоже должны заполнить я формулами., а т. К. Есть мин и максимум среди диапазона, то столбцы должны вставляться между уже имеющимися.



0



0 / 0 / 0

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

Сообщений: 4

13.09.2019, 10:14

11

Вот картинка

Миниатюры

Как через макрос добавить столбец?
 



0



6875 / 2807 / 533

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

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

13.09.2019, 10:32

12

Возьмите свою картинку, и забейте с неё все данные в новый чистый файл Экселя. И файл прикрепите сюда к посту. Это ведь не сложно, правда?



0



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

13.09.2019, 10:57

13

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

Возьмите свою картинку, и забейте с неё все данные в новый чистый файл Экселя. И файл прикрепите сюда к посту. Это ведь не сложно, правда?

Включу экстрасенса. На компьютере нет интернета, или запрещено использовать?



0



6875 / 2807 / 533

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

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

13.09.2019, 10:59

14

Так без проблем, думаю форум подождёт пока подвезут компьютер с интернетом….



0



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

13.09.2019, 11:05

15

ИМХО, нужно таблицу развернуть. Каждый новый участник будет добавляться на новую строку, тогда не нужно вставлять столбцы.



0



0 / 0 / 0

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

Сообщений: 4

13.09.2019, 11:55

16

Сам файл, спасибо, понравился вариант с идеей развернуть таблицу!



0



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.

  1. First, specify a cell using the range object.
  2. Now, enter a dot (.) to get the list of properties and methods.
  3. After that, select the “Entire Column” property or type it.
  4. 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

    Как добавить столбец через макрос?

    Добрый день. Подскажите пожалуйста, как добавить столбец через макрос.
    Дело в том, что когда я выбираю в в диалоговом окне слово за которым прикреплена ячейка
    [COLOR=blue]If DialogSheets(«d1»).Show = No Then GoTo M100[/COLOR]
    То пытаясь выделить столбец [COLOR=blue]Sheets(«итоги»).Columns(Sheets(«sup»).Cells(2, 2).Value).Select[/COLOR]
    и добавить другой [COLOR=blue] Selection.Insert Shift:=xlToRight[/COLOR], получается полный бред.
    Выделяется весь лист, а не столбец и удалаются все значения на этом листе.

    6 ответов

    405

    29 июля 2005 года

    Dmitrii

    554 / / 16.12.2004

    Цитата:

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

    У меня Ваша конструкция

    Код:

    Sheets(«итоги»).Columns(Sheets(«sup»).Cells(2, 2).Value).Select
    Selection.Insert Shift:=xlToRight

    работает нормально (учитывая, конечно, что в ячейке [COLOR=blue]Sheets(«sup»).Cells(2, 2)[/COLOR] стоит число в диапазоне от 1 до 256).
    Поэтому, думаю, надо бы посмотреть на весь код.

    275

    29 июля 2005 года

    pashulka

    985 / / 19.09.2004

    Давайте всё-таки обойдёмся без Select и переменной No, которая всегда Empty

    Код:

    If Not DialogSheets(«d1»).Show Then GoTo M100

    Worksheets(«Итоги»).Columns(5).Insert Shift:=xlToRight

    Спасибо [COLOR=orangered]dmitrii[/COLOR]за ответ. Мутил я мутил и в итоге вернулся к своим старым баранам. [COLOR=blue]If DialogSheets(«d1»).Show = No Then GoTo M100[/COLOR] [COLOR=blue]Worksheets(«итоги»).Activate[/COLOR] [COLOR=blue] Range(«A2:FA2»).Select[/COLOR] [COLOR=blue] Selection.Find(What:=Sheets(«sup»).Cells(Sheets(«sup»).Cells(2, 2).Value, 3).Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _[/COLOR] [COLOR=blue] :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _[/COLOR] [COLOR=blue] False).Select[/COLOR] [COLOR=blue]Sheets(«sup»).Cells(88, 2).Value = Selection.Column[/COLOR] [COLOR=blue]Columns(Sheets(«sup»).Cells(88, 2).Value).Select[/COLOR] [COLOR=blue]Selection.Insert Shift:=xlToRight[/COLOR]
    Я просто сейчас изменяю зарплату для консультантов и поэтому хочется убрать =ЕСЛИ и т.д., а сделать так чтобы не добавлять каждый месяц столбцы с формулами и делать их коррекцию, а прописать разок макрос, который это будет делать сам. Правда, я все это пишу «коряво». «Pashulka» мне уже не раз говорил, что проще обозначить столбцы и ячейки своими именами и обращаться к ним напрямую, а не через поиск. Но я порой могу забыть, что столбец был озаглавлен и его удалю, после этого макрос конечно же обидится и придется снова вспоминать, что было написано и где ошибка. Поэтому и делаю поиск слов.

    275

    29 июля 2005 года

    pashulka

    985 / / 19.09.2004

    svyatoslav
    Вы несколько исказили общий смысл моих высказываний. Я никогда не отрицал применение поиска и насколько я помню в первой части Вашего макроса я его применял. Что касается имён, то в Вашей рабочей книге ничто не указывало не невозможность наличия нескольких лет, а следовательно и повтора названий месяцев в одной таблице. Именно поэтому я и предложил Вам использовать именованные диапазоны. Что касается возникновения ошибки (вследствии отсутствия нужного имени) то её можно, например, «отловить», проверить есть ли данное имя и т.д. и т.п.
    Кстати, если столбец с нужным именем будет отсутствовать, то в [COLOR=red]представленном Вами коде, с использованием метода .Select, это также вызовет ошибку[/COLOR]

    405

    29 июля 2005 года

    Dmitrii

    554 / / 16.12.2004

    Цитата:

    Originally posted by svyatoslav
    Спасибо [COLOR=orangered]dmitrii[/COLOR]за ответ.

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

    Цитата:

    Originally posted by svyatoslav
    «Pashulka» мне уже не раз говорил …

    Очень рекомендую к нему прислушаться, причём не только в случае с именованием диапазонов, но и в случае с ограничением в использовании метода [COLOR=blue]Select[/COLOR].

    Приведённый Вами фрагмент макроса у меня работает без каких-либо ошибок. Так что причины возникновения ошибок у Вас для меня не понятны.
    Пока могу предложить лишь такую модификацию кода:

    Код:

    Worksheets(«итоги»).Activate
    Set x = Range(«A2:FA2»).Find(What:=Sheets(«sup»).Cells(Sheets(«sup»).Cells(2, 2).Value, 3).Value, _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
    If Not x Is Nothing Then
    Sheets(«sup»).Cells(88, 2).Value = x.Column
    Columns(Sheets(«sup»).Cells(88, 2).Value).Insert Shift:=xlToRight
    End If

    Цитата:

    Originally posted by svyatoslav
    Но я порой могу забыть, что столбец был озаглавлен и его удалю …

    Я в таких случаях просто помечаю нужные столбцы цветом фона.

    «Pashulka» извиняюсь, похоже, я не правильно выразился. Просто хотел сказать, что у меня макросы получаются какие-то примитивные, т.е. много лишнего. Побывав на вашем сайте я в этом убедился, но пока еще много не понимаю. В последнем примере .Select я использовал для проверки, выделится ли этот столбец с последующим внесения названия, например «Июль». С другой стороны мне кажется, что если назначить значение столбцу или ячейки в моем случае одинаково, так как я все равно ищу это слово через диалоговое окно и обращаюсь к ячейке в sheets(«sup»). Или я не правильно понимаю? Честно говоря, я воспользовался Вашей подсказкой и обозначил ячейки и строки, которые у меня ни куда не переносятся (мерчандайзеры, уволенные консультанты и т.д.), к которым можно обратиться напрямую без поиска. Большое спасибо «Pashulka» и «Dmitrii» Вам за помощь, если нужна какая-то помощь от меня всегда готов помочь.
    С уважением, Святослав

    Inserting new columns is the easiest way to add new fields into your worksheet area. Since Excel inserts columns by copying the formatting of the previous column, it is usually more practical than moving bottom cells to open up space for new data. Thanks to VBA, we can insert columns dynamically. In this guide, we’re going to show you how to insert specific number of columns 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 column before which you want to insert new columns. You can think of this as the anchor column.
    2. Number of columns.

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

    Range(Columns(AnchorColumn), Columns(AnchorColumn + ColumnCount — 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.

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

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

    How to insert specific number of columns

    The following code inserts a specific number of columns before the selected cell.

    Sub InsertColumns1()

        ‘Define variables

        Dim AnchorColumn As Integer, ColumnCount As Integer

        ‘Set variables

        AnchorColumn = ActiveCell.Column  ‘Selected Cell

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

        ‘Insert columns

        Range(Columns(AnchorColumn), Columns(AnchorColumn + ColumnCount — 1)).Insert

    End Sub

    The next and final sample code will insert static number of columns before the user-prompted cell.

    ‘This macro will insert static number of columns before the user-prompted cell

    Sub InsertColumns2()

        ‘Define variables

        Dim AnchorColumn As Integer, ColumnCount As Integer

        ‘Set variables

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

        ColumnCount = 3   ‘Static

        ‘Insert columns

        Range(Columns(AnchorColumn), Columns(AnchorColumn + ColumnCount — 1)).Insert

    End Sub

    How to insert specific number of columns in Excel 05

    Понравилась статья? Поделить с друзьями:
  • Excel макрос как выделить все листы
  • Excel макрос как выбрать лист
  • Excel макрос как вставить строку
  • Excel макрос имя столбца
  • Excel макрос или activex