Макросы для добавления с формулами строки в excel

 

Добрый день,

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

Жду помощи и заранее больше спасибо.  

 
 

delete as…

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

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

#3

05.02.2014 13:11:04

Я пока смог только в добавление строки над итогом. Как скопировать формулы не разобрался пока  :(

Код
Sub vststr()
    With ActiveSheet
        LastRow = .Cells(65536, 3).End(xlUp).Row
        .Rows(LastRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End With
End Sub 
 

МатросНаЗебре,

Спасибо, работает :) Код более изящный, пойду разбираться, спасибо!

 

Sanja

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

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

#5

05.02.2014 13:28:05

Вариант

Код
Sub vststr()
    With ActiveSheet
        LastRow = .Cells(Rows.Count, 3).End(xlUp).Row
        With .Rows(LastRow)
            .Copy
            .Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        End With
            .Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
    Application.CutCopyMode = False
End Sub

Согласие есть продукт при полном непротивлении сторон.

 

Sanja,
спасибо, тоже работает! но можно ли при вставке сделать проверку на формулы и вставлять только их? в текущих вариантах вставляются и ячейки с данными забитыми руками

Изменено: delete as…05.02.2014 14:36:46

 
 

Знаю, что попросите в следующий раз — высылаю желаемое.
Сумма в итогах исправлена.

 

Добрый день!
У меня вопрос похож на проблему создателя темы:
При нажатии на кнопку «Button1» добавляется то кол-во строк, которое указано на листе «CNR» в ячейке A1, но добавляются они с форматом 2-й строки, а нужно, что строки добавлялись с форматом и формулами нижней строки.

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

  • Sample.xlsm (20.72 КБ)

 

Сергей Эм

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

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

МатросНаЗебре, при добавлении строки не создается выпадающий список по валюте.

 

Сергей Эм

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

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

Sanja, вылетает ошибка Compile error: Variable not defined при запуске макроса. Указывает на LastRow =

 

zaolog

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

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

#12

02.02.2020 13:13:24

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

Код
Sub Добавление_строк_пользователем()

'для получения выбранного значения
Dim vRetVal
vRetVal = InputBox("Введите номер добавления строки:", "Добавление нужной строки", "")

'используем Val для преобразования текста vRetVal в число
'Val() преобразует число как текст в число.
'Если будет указан текст(например "третий") - он будет преобразован в 0
vRetVal = Val(vRetVal)
   
    If Val(vRetVal) = 0 Then
        MsgBox "Номер строки должен быть целым числом больше нуля!", vbCritical, "DelCols"
        Exit Sub
    End If

Rows(vRetVal).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

End Sub 

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

  • Вставка строк.xlsm (16.17 КБ)

Изменено: zaolog02.02.2020 13:14:11

0 / 0 / 0

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

Сообщений: 17

1

Макрос на вставку строк: настроить на несколько столбцов с формулами

26.09.2012, 18:14. Показов 7507. Ответов 16


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

есть макрос, который вставляет строки. в одном из столбцов есть формула, макрос работает.
нужно настроить макрос на несколько столбцов с формулами…



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 19:05

2

hakervanya, задача не понятна.



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 19:13

 [ТС]

3

ок. есть таблица, в некоторых столбцах формулы по суммам, налогам, коэффициентам пересчета. таблица на заданное количество строк (20), но необходимо иметь возможность добавлять пустую строку в эту таблицу, которая уже содержит все формулы не прибегая к возможностям экселя. есть макрос, который работает, когда в таблице только одна формула. но что делать, если формулы в нескольких столбцах? рабочий макрос можно посмотреть во вложении выше.



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 19:19

4

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



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 19:35

 [ТС]

5

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



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 19:42

6

hakervanya, у меня работает ваш код для вашего файла.

Задача не понятна.



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 19:54

 [ТС]

7

не работает быстрая команда — Ctrl+q. а возможно настроить запуск макроса посредством нажатия созданной кнопкой?



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 19:57

8

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

не работает быстрая команда — Ctrl+q

а что эта команда делает?

А Excel какого года у вас?



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 20:12

 [ТС]

9

команда запускает макрос. а эксель 2010 года



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 20:22

10

hakervanya,

  1. этот макрос нужен только для одной книги или для нескольких?
  2. кнопку можно сделать на листе, на панели инструментов или на ленте.



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 20:45

 [ТС]

11

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



0



Скрипт

5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 21:20

12

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Макрос1()
 
    Dim lLastRow As Long
    Dim lLastColumn As Long
    Dim i As Long
    
    'Определение последней заполненной строки по столбцу A.
    lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    'Определение последнего заполненного столбца по первой строке.
    lLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    
    'Копируем последнюю строку в строку ниже.
    Rows(lLastRow).Copy Rows(lLastRow + 1)
    
    'Удаление данных из ячеек, где нет формул.
    For i = 1 To lLastColumn Step 1
        If Cells(lLastRow + 1, i).HasFormula = False Then
            Cells(lLastRow + 1, i).ClearContents
        End If
    Next i
 
End Sub

Если для нескольких книг нужен код, то поместите его в личную книгу макросов.

Сочетание клавиш для макроса здесь назначается:

  1. вкладка Разработчик (по умолчанию её нет) — группа КодМакросы;
  2. выделяете макрос, которому нужно сделать сочетание клавиш, — Параметры…



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 21:57

 [ТС]

13

не работает почему-то…



0



5468 / 1148 / 50

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

Сообщений: 3,514

26.09.2012, 22:00

14

hakervanya, в сообщении #12 в коде в строке 8 я сделал определение последней строки по первому столбцу, укажите тогда другой столбец.

В чём выражается неработа кода?



0



0 / 0 / 0

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

Сообщений: 17

26.09.2012, 22:27

 [ТС]

15

копируется первая строка (заглавная), очищается и вставляется на вторую, больше ничего не делает.



0



5468 / 1148 / 50

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

Сообщений: 3,514

28.09.2012, 07:54

16

hakervanya, в сообщении #14 написано, почему возникла эта ошибка.



0



0 / 0 / 0

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

Сообщений: 17

28.09.2012, 19:32

 [ТС]

17

нет, если исправить эту ошибку, то макрос вообще ничего не делает



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

28.09.2012, 19:32

17

Автоматическое добавление строк с сохранением формул

Начинающий

Дата: Понедельник, 17.07.2017, 10:02 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Доброго всем времени суток!

Прошу помощи!
Как сделать автоматическое добавление строк в таблицу? Так, чтобы сохранялись формулы по строкам и итог по столбцам.
В «примере» заполняются ячейки по столбцам: B,F,G (т.е. при заполнении каждой из них необходимо добавить строку снизу, с сохранением всех формул)
Однако необходимо как-то избежать излишнего добавления строк, например при корректировке данных в ранее заполненных ячейках.

На форуме была такая тема:
http://www.excelworld.ru/forum/2-17111-1
Смог добиться автоматического появления строк.
Однако при добавлении строк, не сохраняются итоговые формулы по столбцам, например в D11 (в диапазон не попадали вновь добавленные строки).
При корректировке данных в ячейках добавлялись лишние строки.

Может можно завязать добавление строк на определенную комбинацию клавиш, или что-то в этом роде?
Заранее благодарен!

К сообщению приложен файл:

2391128.xlsx
(12.8 Kb)

Сообщение отредактировал НачинающийПонедельник, 17.07.2017, 10:06

 

Ответить

sboy

Дата: Понедельник, 17.07.2017, 10:28 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Вариант с кнопкой. вставляет строку ниже активной

К сообщению приложен файл:

2391128.xlsm
(19.0 Kb)


Яндекс: 410016850021169

 

Ответить

_Boroda_

Дата: Понедельник, 17.07.2017, 10:36 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Если я правильно понял, то еще вариант. Без кнопки


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Начинающий

Дата: Понедельник, 17.07.2017, 11:11 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

sboy,
Спасибо, очень интересный вариант!
Остались вопросы:
1. Итоговые формулы по столбцам не изменяются (не охватывают вновь добавленные строки);
2. Автоматически копируются значения в ячейках (с Q и далее)
3. Как переместить кнопку?)

_Boroda_,
Спасибо! Все работает! Я ничего не понял(
Вопрос:
1. При необходимости добавить столбцы в таблицу (в середину или в конец), какую строку кода скопировать?
2. Если есть необходимость ниже таблицы разместить другой расчет, просто данные, это не повлияет на правильность расчетов в таблице?
И, можно как-то объединить идею с кнопкой с вашим расчетом?

 

Ответить

_Boroda_

Дата: Понедельник, 17.07.2017, 11:14 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

1. Никакую. Все само посчитается, главное, чтобы во второй в третьей, это я перепутал строке шапка заполнена была
2. Если Вы не будете ничем заполнять столбец А в таблице ниже, то не повлияет
Объединить с кнопкой можно с несколькими видами результата. Что Вам нужно, чтобы по нажатию кнопки происходило? И нужно ли оставить автоматическое добавление?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

sboy

Дата: Понедельник, 17.07.2017, 11:21 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Итоговые формулы по столбцам не изменяются

Вы не правы, диапазон суммирования изменяется

поправил
ПКМ на кнопке, потом можно перемещать

К сообщению приложен файл:

8515092.xlsm
(18.7 Kb)


Яндекс: 410016850021169

 

Ответить

Начинающий

Дата: Понедельник, 17.07.2017, 11:34 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

_Boroda_,
Т.е. я правильно понял, что данный код можно использовать в любых таблицах, где:
1. Во 2 строке — шапка.
2. В столбце А после таблицы данных нет?

Мне бы хотелось, чтобы была кнопка, после таблицы (а лучше перемещаемая- простите за наглость), при нажатии на которую после строки (на которой стоит курсор) добавлялась новая строка, с сохранением всех формул (как у вас).
Вне зависимости, последняя это строка или строка в середине таблицы.

И еще один небольшой вопрос: при удалении лишней строки в середине таблицы, нумерация по столбцу А слетает( как решить эту проблемку?

Сообщение отредактировал НачинающийПонедельник, 17.07.2017, 11:40

 

Ответить

_Boroda_

Дата: Понедельник, 17.07.2017, 11:46 |
Сообщение № 8

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

1. Да. только в третьей, это я перепутал. Но этот параметр задается в макросе
2. Да

Для кнопки код попроще будет
[vba]

Код

Sub VstStr()
    rs_ = Selection(1).Row
    r0_ = 4 ‘ номер первой строки
    If rs_ < r0_ Then Exit Sub
    r1_ = Range(«A» & Rows.Count).End(3).Row
    If rs_ > r1_ Then Exit Sub
    c11_ = Cells(r0_ — 1, Columns.Count).End(1).Column
    Application.ScreenUpdating = 0
    Application.Calculation = xlCalculationManual
    Range(«A» & rs_ + 1).EntireRow.Insert
    Range(«A» & rs_).Resize(, c11_).Copy Range(«A» & rs_ + 1)
    Range(«A» & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents
    Range(«B» & rs_ + 1).Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = 1
End Sub

[/vba]
Сделал закрепление первых 3-х строк, поэтому кнопку можно не двигать вниз — она и так всегда видна будет
А нумерацию — вообще-то, это уже другой вопрос, который нужно задавать в отдельной теме. Правда, в моем файле все равно это уже сделано, иначе неверно проходила бы нумерация после вставки
Там формула

Код

=СУММ(ИНДЕКС(A:A;СТРОКА()-1);1)

К сообщению приложен файл:

7970807.xlsm
(24.1 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Начинающий

Дата: Понедельник, 17.07.2017, 11:48 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

sboy,

Вы не правы, диапазон суммирования изменяется

Действительно, при заполнении ячеек по D, диапазон меняется.
При заполнении ячеек по Q, U, Y, AC и т.д. диапазон меняется, правда появляется — Несогласующаяся формула.

Не меняется диапазон по нижней строке, столбцам I-P, R, S, T и т.д.
Зависимость я не понял(

Про кнопку спасибо!

 

Ответить

AndreTM

Дата: Понедельник, 17.07.2017, 14:07 |
Сообщение № 10

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Если код кнопки немного поменять — то можно будет и столбец A заполнять ниже первой таблицы. Правда, условия все же остаются — у таблицы должны быть заполнены все заголовки, конец таблицы будет определяться первой «пустой» строкой после неё.

[vba]

Код

Sub VstStr()
    rs_ = Selection(1).Row
    r0_ = 4 ‘ номер первой строки
    If rs_ < r0_ Then Exit Sub
    set r_ = Cells (r0_, 1).CurrentRegion
    r1_ = r_.Cells(1, 1).Offset(r_.Rows.Count — 1).Row
    ‘ r1_ = Range(«A» & Rows.Count).End(3).Row
    If rs_ > r1_ Then Exit Sub
    cl1_ = r_.Cells(1, 1).Offset(, r_.Columns.Count — 1).Column
    ‘ c11_ = Cells(r0_ — 1, Columns.Count).End(1).Column
    Application.ScreenUpdating = 0
    Application.Calculation = xlCalculationManual
    Range(«A» & rs_ + 1).EntireRow.Insert
    Range(«A» & rs_).Resize(, c11_).Copy Range(«A» & rs_ + 1)
    Range(«A» & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents
    Range(«B» & rs_ + 1).Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = 1
End Sub

[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTMПонедельник, 17.07.2017, 14:12

 

Ответить

Начинающий

Дата: Понедельник, 17.07.2017, 15:18 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Спасибо огромное, уважаемые sboy, _Boroda_, AndreTM!!!

Вроде бы добился чего хотел!

Еще раз огромное спасибо!)

Сообщение отредактировал НачинающийПонедельник, 17.07.2017, 17:31

 

Ответить

sboy

Дата: Понедельник, 17.07.2017, 16:18 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Начинающий, Вы можете нарисовать любую кнопку, а потом на нее назначить макрос


Яндекс: 410016850021169

 

Ответить

_Boroda_

Дата: Понедельник, 17.07.2017, 16:30 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

вообще-то, это уже другой вопрос, который нужно задавать в отдельной теме


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Domk
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2008 (Ср) 17:14

макрос в Exсel вставка строки и копирование формул

Поможите люди добрые!!!

Очень нужно автоматизировать частоповторяющуюся операцию Этапы:

1. вставка строки там, где курсор

2. вставка формул из строки 1 в новую строку

3. оставление курсора в столбце А новой строки

Заранее огромное спасибо!


Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 13.03.2008 (Чт) 0:03

Попробуйте

Код: Выделить всё
Sub Test()
    ActiveCell.EntireRow.Insert
    Rows(1).Copy
    Cells(ActiveCell.Row, 1).PasteSpecial Paste:=xlPasteFormulas
    Application.CutCopyMode = False
    Cells(ActiveCell.Row, 1).Select
End Sub


Domk
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2008 (Ср) 17:14

Сообщение Domk » 13.03.2008 (Чт) 9:39

Огромное спасибо! Очень помогли!



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 2

Sub Макрос1()
 
    Dim lLastRow As Long
    Dim lLastColumn As Long
    Dim i As Long
    
    'Определение последней заполненной строки по столбцу A.
    lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    'Определение последнего заполненного столбца по первой строке.
    lLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    
    'Копируем последнюю строку в строку ниже.
    Rows(lLastRow).Copy Rows(lLastRow + 1)
    
    'Удаление данных из ячеек, где нет формул.
    For i = 1 To lLastColumn Step 1
        If Cells(lLastRow + 1, i).HasFormula = False Then
            Cells(lLastRow + 1, i).ClearContents
        End If
    Next i
 
End Sub

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