Макросы в excel добавление новой строки

Содержание

  1. Пример макроса для вставки и удаления строк или столбцов на нескольких листах в Excel
  2. Аннотация
  3. Дополнительная информация
  4. Пример макроса с использованием цикла для вставки строк на несколько листов
  5. Пример макроса для выбора столбца и вставки нового столбца
  6. VBA Excel. Метод Range.Insert (вставка со сдвигом ячеек)
  7. Метод Range.Insert
  8. Синтаксис
  9. Параметры
  10. Примеры
  11. Простая вставка диапазона
  12. Вставка вырезанного диапазона
  13. Вставка скопированного диапазона
  14. Вставка и перемещение строк
  15. Макрос для добавления строк с заданной высотой в таблицу Excel
  16. Макрос для вставки строк с определенной высотой
  17. Умная вставка строк с помощью макроса
  18. Как вставить/добавить новые/пустые строки в Excel?
  19. Вставка одной пустой строки в таблицу Excel
  20. Добавление нескольких пустых строк в таблицу Excel
  21. Как вставить/добавить заданное количество пустых/новых строк в определенные места?
  22. Вставка разного количества пустых строк
  23. Удаление пустых строк

Пример макроса для вставки и удаления строк или столбцов на нескольких листах в 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

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

Макрос для вставки строк с определенной высотой

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

Необходимо экспонировать группы ячеек для каждого штата. Для этого мы добавим по одной пустой строке между каждой группой розничных точек. При этом не имеет значение будет ли содержать группа объединенные ячейки или нет. Ведь некоторые группы состоят из одной строки. А также дополнительно уменьшим высоту этих пустых строк, чтобы внешний вид таблицы был стильным. Выполнить вручную все эти действия: выделение отдельных групп ячеек, вставка между ними пустых строк, а потом изменение высоты для этих же строк – это не рационально использование сил и времени. Особенно если таблица имеет десятки тысяч строк. Лучше написать свой макрос, который сам автоматически и молниеносно выполнит эту рутинную работу за Вас.

Перейдите в режим редактора макросов 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»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:

Сначала в коде объявлены две переменные:

  1. i – переменная выполняет роль счетчика в цикле.
  2. pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.

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

  1. В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
  2. Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
  3. Удаляются в добавленной строке все вертикальные границы, а также заливка.
  4. Уменьшается значение переменной 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

Результат автоматического форматирования таблицы отчета с учетом новых условий в коде макроса:

Как видите с помощью макросов таблицы любых объемов данных можно форматировать в один клик мышкой.

Источник

Как вставить/добавить новые/пустые строки в Excel?

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

Вставка одной пустой строки в таблицу Excel

Добавить новую строку стандартными средствами Excel можно следующим образом: правой кнопкой мыши кликнуть на номере строки, над которой нужно вставить новую строку и выбрать в контекстном меню пункт «Вставить»

При этом, если какие-то данные в таблице были отформатированы (изменены шрифты, изменены цвета, установлены заливки ячеек), то после добавления новой строки появится кнопка «Параметры добавления», раскрыв которую можно выбрать для новой строки один из трех пунктов «Форматировать как сверху», «Форматировать как снизу» и «Очистить формат».

Вставить пустую строку можно также и через кнопки на панели инструментов. Для этого выделите строку, над которой нужно вставить новую пустую строку. После этого зайдите на вкладку «Главная», в группу «Ячейки» и раскройте меню кнопки «Вставить», выберите пункт «Вставить строки на лист».

Добавление нескольких пустых строк в таблицу Excel

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

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

Как вставить/добавить заданное количество пустых/новых строк в определенные места?

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

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

2. вставка заданного количества пустых строк как выше, так и ниже строк с искомым значением;

3. вставка разного количества пустых строк в зависимости от значения, указанного в заданном столбце;

4. вставка новых строк ниже каждой второй, третьей, пятой, n-ной строки выбранного диапазона (шаг задается пользователем);

5. вставлять пустые строки при каждой смене значения в заданном столбце;

6. вставлять пустые строки между заполненными (после каждой заполненной ячейки в столбце с заданным номером);

7. выбор диапазонов для вставки строк, предусмотрено несколько режимов:

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

б) используемые диапазоны — отличается от предыдущего режима тем, что обработка данных производится в используемом диапазоне каждого листа рабочей книги;

в) диапазон листа — диапазон, который выберет пользователь;

г) диапазоны листов — это одноименные диапазоны на всех листа рабочей книги.

*Внимательно выбирайте диапазон для получения желаемого результата!

8. выбор необходимых условий для значений ячеек.

Для числовых значений: равно/не равно, больше/не больше, меньше/не меньше.

Для текстовых значений: совпадает/не совпадает, содержит/не содержит, начинается/не начинается, заканчивается/не заканчивается.

Программа выполняет проверку всех ячеек заданного диапазона и при выполнении выбранного условия вставляет нужное пользователю количество пустых строк над/под строкой (на выбор), содержащей ячейку с заданным значением. На выбор пользователя представлено множество условий для значений ячеек, с помощью которых можно определить места для вставки новых строк, а также предоставлен выбор диапазонов для обработки данных. Для большей гибкости поиск ячеек с нужными значениями можно осуществлять раздельно, как по текстовым значениям ячеек, так и по числовым. Предусмотрен также поиск как пустых, так и непустых ячеек. Этот макрос позволяет также добавлять новые строки в заданном количестве в каждую n-ую строку выбранного диапазона. Если, к примеру, вставить по две пустые строки ниже каждой второй строки диапазона А2:А24, т ополучим следующий результат:

Вставка разного количества пустых строк

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

Если установить флажок в поле «Разное количество пустых строк для вставки», то поле с количеством строк для вставки изменяется на номер столбца, в котором указаны числовые значения.

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

Удаление пустых строк

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

Источник

  1. Image titled 12824869 1

    1

    Open your project in Excel. To do this, double-click the Excel document that contains your data in Finder (Macs) or File Explorer (Windows). Alternatively, if you already have Excel open, click File > Open and select the file that has your data.

  2. Image titled 12824869 2

    2

    Make sure the Developer tab is displayed on your editing ribbon. If it isn’t and you’re using Windows, go to the File tab and click Options > Customize ribbon. Under «Main tabs'» check the box next to «Developer.»

    • If you’re using a Mac, enable the Developer tab by clicking the Excel menu at the top of the screen and selecting Preferences. Click Ribbon & Toolbar, check the «Developer» box in the «Customize this Ribbon» category, and click Save.

    Advertisement

  3. Image titled 12824869 3

    3

    Open the VBA editor. Click the Developer tab and select Visual Basic to do so. Alternatively, you can press Alt + F11.

  4. Image titled 12824869 4

    4

    Right-click a sheet. In the vertical menu on the left side of the window, you’ll see a list of your workbook’s sheets. Right-click on any of these to get another drop-down menu.

  5. Image titled 12824869 5

    5

    Hover your cursor over Insert and click Module. When you hover over Insert, a menu will pop out to the right of the menu. Clicking on Module will create a space for you to enter a VBA code and run it.

  6. Image titled 12824869 6

    6

    Enter this code into your VBA window:

    Sub Insert_Rows_Loop()
         Dim CurrentSheet As Object
    
         ' Loop through all selected sheets.
         For Each CurrentSheet In ActiveWindow.SelectedSheets
            ' Insert 5 rows at top of each sheet.
            CurrentSheet.Range("a1:a5").EntireRow.Insert
         Next CurrentSheet
    End Sub
    
    • With this code, you’ll be inserting rows starting at A1 and ending at A5—that’s 5 empty new rows at the top of the sheet.[1]
      You can replace these cell addresses with the location into which you want to place the code, such as beginning with the last row in the sheet to any ending point.
  7. Image titled 12824869 7

    7

    Press F5. Alternatively, you can click the green Play icon above the VB editor writing space.

  8. Image titled 12824869 8

    8

    Click OK to continue. This adds the rows to your sheet.

  9. Advertisement

  1. Image titled 12824869 9

    1

    Open your project in Excel. To do this, double-click the Excel document that contains your data in Finder (Macs) or File Explorer (Windows). Alternatively, if you already have Excel open, click File > Open and select the file.

    • Use this method if you want to learn how to copy existing formulas into new rows you add to your data.
  2. Image titled 12824869 10

    2

    Insert a row inside your data. The keyboard shortcut you’ll use can only add a formula from the row above it, so make sure you insert the row in the middle or the bottom of your data collection.

    • To insert a row, right-click the row below where you want the new row to be added, then click Insert.
  3. Image titled 12824869 11

    3

    Click to select the cell in the new row where you want to include the formula. Remember, this keyboard shortcut will copy the formula from the cell above to the cell you have selected.

    • The cell will highlight to indicate that it is selected.
  4. Image titled 12824869 12

    4

    Press Ctrl+D. The shortcut is the same for Mac and Windows and will fill the formula down from the cell above.
    [2]

  5. Advertisement

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

About This Article

Article SummaryX

1. Open your project in Excel.

2. Insert a row inside your data.

3. Click to select the cell in the new row where you want to include the formula.
4. Press Crtl + D.

Did this summary help you?

Thanks to all authors for creating a page that has been read 34,699 times.

Is this article up to date?

 

SevenZZ

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

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

Добрый день!

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

В ячейках E12, F12, G12, H12 прописаны формулы. По выполнению макроса необходимо, чтобы появилась новая 13 строка с сохранением всех объединений и границ предыдущей строки, а также с сохранением формул ячеек E12, F12, G12, H12. При повторном выполнении макроса 14 новая строка должна уже взять формулы из ячеек E13, F13, G13, H13, и так по кругу.
Кроме того, новая добавляемая строка должна вставать перед итоговой.

Таблица во вложении.
За помощь буду признательно благодарен!

Изменено: SevenZZ30.09.2018 09:48:51

 

Z

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

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

Win 10, MSO 2013 SP1

#2

16.09.2018 18:37:02

Цитата
SevenZZ написал: Необходим макрос

1 — Заказ принимают в разделе «Работа».
2 — Без макроса. Оформить без выкрутасов в «шапке» данные списком/таблицей с промежуточными итогами и … пользоваться… ;)

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Ts.Soft

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

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

Проверяйте.

Не стреляйте в тапера — он играет как может.

 

SevenZZ

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

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

Ts.Soft, то, что нужно, спасибо. Очень помогли.

 

SevenZZ

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

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

Ts.Soft, если представляется возможным, то посодействуйте в еще одном небольшом макросе.
По выполнению уже имеющего макроса (добавлении необходимо количества строк, которые встают до итоговой) теперь необходимо, чтобы второй макрос вставил две строки после итоговой: первая — эта вся таже строка с формулами, а вторая итоговая. После использования второго макроса, первый макрос снова добавляет строки до итоговой строки, по выполнению второго макроса создаются опять две строки и так по кругу.

Примеры во вложении. Файл «до» это как до работы макроса. Файл «после» отражает как должно стать после запуска макроса.

Прикрепленные файлы

  • до.xlsm (118.44 КБ)
  • после.xlsm (118.58 КБ)

Изменено: SevenZZ20.09.2018 23:28:05

 

SevenZZ

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

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

Уже несколько дней пытаюсь справиться с данной задачей, все никак не получается. Быть может у кого-нибудь есть соображения?

 

Ts.Soft

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

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

SevenZZ,и соображения есть, но руки не доходят Вам помочь. Тем более что нужно будет корректировать формулу в итоговой строке. А добавление строки перед итоговой тоже нужно? Если да, то как Вы планируете выбирать перед какой именно итоговой строкой?

Не стреляйте в тапера — он играет как может.

 

SevenZZ

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

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

Ts.Soft, принцип таков, что расчет может осуществляться в разрезе как одной разнарядки, так и нескольких. Если в разрезе одной осуществляется, то первого Вашего макроса достаточно, а если по двум, то необходимо после первой итоговой строки вставить две строки: первая строка — это та строка, куда будут вводится необходимые значения (по сути это все та же строка, которая вставлялась до итоговой, только теперь она должна встать, после итоговой; вторая строка — это итоговая строка, по второй разнарядке. Выполнение второго макроса по вставке новых двух строк означает, что добавление строк до первой итоговой производится уже не будет, т.к. расчет в той части окончен. Добавление новых строк нужно, и этим занимается уже написанный Вами первый макрос.

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

 

SevenZZ

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

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

#9

23.09.2018 12:30:52

Решил свою проблему след. способом, возможно не самым умным и правильным, но как-то так

Код
Sub НоваяРазнарядка()Dim LastRow As Long
With Sheets("Лист1")
LastRow = .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range(Cells(1, 1), Cells(1, ).Copy .Cells(LastRow + 1, 1)
LastRow = .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range(Cells(2, 1), Cells(2, ).Copy .Cells(LastRow + 1, 1)
End With
End Sub

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

Прикрепленные файлы

  • Лист Microsoft Excel 2.xlsm (30.82 КБ)

Изменено: SevenZZ23.09.2018 12:31:41

 

SevenZZ

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

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

#10

30.09.2018 09:44:24

Знающие люди, отзовитесь!

Цитата
SevenZZ написал:
пытаюсь побороть, то что при добавлении новых строк в итоговой строке не меняется диапазон ячеек, которые суммируются.

Дополнил код одной строкой, и теперь макрос, таков:

Код
Sub add_row()
    EndRow = Cells(Rows.Count, 8).End(xlUp).Row
    Rows(EndRow).Insert Shift:=xlDown
    Rows(EndRow - 1).Copy Rows(EndRow)
    Range(Cells(EndRow, 1), Cells(EndRow, 4)).ClearContents
    Cells(Rows.Count, 7).End(xlUp)(2, 2).Resize(, Cells(1, Columns.Count).End(xlToLeft).Column - 7).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
End Sub

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

 

Ts.Soft

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

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

SevenZZ, Вашу задачу можно решить несколькими способами. В принципе ТЗ выглядит так: необходимо на лист добавлять произвольное количество блоков из строк с данными и итоговой строкой. При этом пользователь в любой момент может удалять строки с данными и добавлять новые в любом блоке. К сожалению при этом может сбиваться формула суммы в итоговой строке.
Можно создать шаблон блока из трёх строк с данными и итоговой строкой. В итоге формула суммы с 1 по 3. Строки 1 и 3 скрываются. Дальше можно как угодно добавлять/удалять строки внутри блока (главное чтобы добавление происходило между скрытых строк) и тогда итоговая сумма сбиваться не будет.

Не стреляйте в тапера — он играет как может.

 

Alemox

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

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

Предложу свой вариант.
Встаёте в таблицу нажимаете «Добавить строку». Добавляется строка ниже активной.
Если нажать «Добавить раздел», то создаётся ещё один раздел ниже.

Прикрепленные файлы

  • после.xlsm (115.23 КБ)

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

SevenZZ

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

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

#13

30.09.2018 20:57:42

Alemox, предложенный Вами вариант прямо в десятку. Спасибо.

Изменено: SevenZZ30.09.2018 21:07:34

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

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


Содержание

  1. Размер ячейки
  2. Макрос для вставки строк с определенной высотой
  3. Высота строки
  4. Добавление нескольких пустых строк в таблицу Excel
  5. Описание работы
  6. Вставка произвольного количества строк
  7. Вставка строк при изменении значения в столбце
  8. Удаление пустых строк
  9. Надстройка позволяет:
  10. Как вставить/добавить заданное количество пустых/новых строк в определенные места?

Размер ячейки

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

Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.

 Высота строки и ширина столбца в 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»-«Выполнить». После запуска макроса таблица будет выглядеть как показано на рисунке:

Сначала в коде объявлены две переменные:

  1. i – переменная выполняет роль счетчика в цикле.
  2. pustroka – переменная будет хранить в себе очередной номер для каждой строки выделенного диапазона.

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

  1. В первой инструкции мы присваиваем для переменной pustroka номер строки которая находиться под текущей строкой.
  2. Следующая инструкция добавляет пустую строку с высотой в 7 пикселей.
  3. Удаляются в добавленной строке все вертикальные границы, а также заливка.
  4. Уменьшается значение переменной 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/

Skip to content

Как вставить пустые строки в диапазон

На чтение 3 мин. Просмотров 3.6k.

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

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

Код макроса

Sub VstavitPustieStrokiVDiapazon()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim iCounter As Long
'Шаг 2: Определяем целевой диапазон
Set MyRange = Range("C6:D17")
'Шаг 3: Запуск обратного цикла
For iCounter = MyRange.Rows.Count To 2 Step -1
'Шаг 4: Вставляем 2 пустые строки
MyRange.Rows(iCounter).EntireRow.Insert
MyRange.Rows(iCounter).EntireRow.Insert
'Шаг 5: Увеличиваем счетчик
Next iCounter
End Sub

Как этот код работает

  1. Сначала мы объявляем две переменные. Первая переменная является переменной объекта под названием MyRange. Это переменная объекта, которая определяет целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит инкрементному счетчику.
  2. На шаге 2 макрос заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем Range («C6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
  3. На этом этапе макрос устанавливает параметры для инкрементного счетчика, чтобы начать на максимальном 1 для диапазона (MyRange.Rows.Count) и заканчивается в 2 (второй ряд от выбранного диапазона). Обратите внимание, что мы используем Шаг-1 классификатор. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до второй строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона. Например, диапазон («D6: D17»). Ряд (5) указывает на пятой строке в диапазоне D6: D17.
  4. На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно макрос работает в текущем цикле. Макрос использует метод EntireRow.Insert, чтобы вставить новую пустую строку. Так как мы хотим две пустые строки, мы делаем это дважды.
  5. На шаге 5, макрос возвращается к началу цикла увеличивать счетчик вниз.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

0 / 0 / 0

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

Сообщений: 4

1

Макросы вставки строки сверху/снизу…

10.09.2011, 16:07. Показов 89166. Ответов 11


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

Здравствуйте!

Прошу вас помочь, сам я точно не справлюсь!!

В таблице, скажем, из 4-х столбцов (A,B,C,D) необходимо добавить строку сверху. При этом по столбцу A происходит автоматическая пере-нумерация. По столбцу D считается произведение B и C.

То же самое для добавления строки снизу.

Прикрепил файл, содержащий таблицу. В силу своих возможностей в ней сделал макросы для Удаления строк. А со Вставками большой ступор. Смог только частично написать вставку снизу, но как сделать автоматическую нумерацию и формулу не знаю.

Заранее благодарен!



0



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

10.09.2011, 16:07

11

toiai

3217 / 966 / 223

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

Сообщений: 2,085

10.09.2011, 18:31

2

Удаление строки предполагает текущую строку, зачем заморочка сверху снизу, если можно сместить курсор вверх или вниз и удалить, тоже самое со ставкой…

Вставить строку сверху можно так:

Visual Basic
1
Rows("11:11").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Добавлено через 6 минут
Удалить строку

Visual Basic
1
Rows(11).Delete

Добавлено через 8 минут
Вставить строку снизу:

Visual Basic
1
Rows("11:11").Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove



1



Frank Nilson

0 / 0 / 0

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

Сообщений: 4

10.09.2011, 21:15

 [ТС]

3

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

Удаление строки предполагает текущую строку, зачем заморочка сверху снизу, если можно сместить курсор вверх или вниз и удалить, тоже самое со ставкой…

Toiai, спасибо! Так действительно проще.

А каким образом прописать автоматический подсчет формулы в столбце D и автоматическую нумерацию в столбце А при добавлении строки сверху/снизу? В этом вся загвоздка…

Добавлено через 25 минут

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

Вставить строку снизу:

Visual Basic
1
Rows("11:11").Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove

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



0



toiai

3217 / 966 / 223

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

Сообщений: 2,085

10.09.2011, 22:54

4

Вместо 11 строки применить значение последней строки. Поскольку последняя строка итоговая, предлагаю вставлять строку сверху, при этом автоматически и формат вставится. По поводу нумерации, перед вставкой считать значение ячейки с предитоговой строки

Visual Basic
1
номер=Cells(nRow-1,1)

По формуле:

Visual Basic
1
Cells(nRow,4).FormulaR1C1 = "=RC[-2]*RC[-1]"

Добавлено через 10 минут
Все-таки надо вставлять строку с предпоследней строки снизу (т.е. использовать xlUp), при этом автоматически расширится диапазон подсчета в итоговой строке.



1



0 / 0 / 0

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

Сообщений: 4

10.09.2011, 23:42

 [ТС]

5

toiai, логику понимаю, но я не могу написать сам макрос, поскольку никогда не программировал. Вы не мог ли бы показать пример одного макроса на добавление строки сверху с автоматической нумерацией и формулой по той таблице? Буду очень благодарен!



0



3217 / 966 / 223

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

Сообщений: 2,085

11.09.2011, 10:38

6

Вот примерно так.



1



730 / 406 / 95

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

Сообщений: 756

11.09.2011, 12:32

7

Вариант вставки строки сверху.



1



0 / 0 / 0

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

Сообщений: 4

11.09.2011, 12:51

 [ТС]

8

Друзья! Спасибо огромное! Очень выручили!!



0



syserr

14.05.2013, 08:43

9

в продолжении темы прошу помощи в решении аналогичного вопроса применительно к моему файлу xls.
Требуется:
1. Автоматическая нумерация строк в первом столбце при их добавлении по кнопке
2. Добавление новой строки по кнопке сразу после шапки с заголовками A9
3. При добавлении новой строки должна добавляться формула в столбцы G и H путем умножения на переменную n столбцов E и F
4. Подсчет итого реализован формулой суммы, но при удалении всех ячеек она не подсчитывает итог

Заранее благодарствую.

0 / 0 / 0

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

Сообщений: 7

26.06.2013, 12:18

10

Ребят, чтобы не создавать отдельную тему, подскажите:

Есть столбец с данными А1:

необходимо добавить 2 пустые строки после каждой заполненной строки

То есть по клику по кнопке, запускается макрос, добавляющий пустые 2 строки после строки А1 (не менее 800 вниз)



0



Аксима

6076 / 1320 / 195

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

Сообщений: 1,023

26.06.2013, 12:37

11

Здравствуйте, @koskokoss,

Вот примерное решение:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub MakeSpace()
 
    Const Îáðàáîòàòü_ñòðîê_ìèíèìóì = 800
    Const Âñòàâèòü_ñòðîê_ïîñëå_çàïîëíåííîé = 2
    
    Dim i As Long, j As Long, cell As Range
    
    Application.ScreenUpdating = False
    For i = Îáðàáîòàòü_ñòðîê_ìèíèìóì To 3 Step -1
        Set cell = Cells(i, 1)
        If Not IsEmpty(cell) Then
            For j = 1 To Âñòàâèòü_ñòðîê_ïîñëå_çàïîëíåííîé
                cell.Insert Shift:=xlDown
            Next j
        End If
    Next i
    Application.ScreenUpdating = True
 
End Sub

С уважением,

Aksima



1



0 / 0 / 0

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

Сообщений: 7

26.06.2013, 13:32

12

Спасибо, то что нужно, только вставляет после второй строки(



0



Понравилась статья? Поделить с друзьями:
  • Макросы в excel для чего простыми словами
  • Макросы в excel для чайников с примерами что это
  • Макросы в excel для чайников с примерами обучение бесплатно
  • Макросы в excel 2007 для чего
  • Макросы автоматизации для word