Здравствуйте! Прошу помощи. Имеется файл эксель (приложил для ясности), где на листе "Фундамент" находятся "таблицы" с данными. Необходимо создать кнопку, по нажатию которой вставлялись бы новые аналогичные "таблицы". Знаний хватает на создание макроса вставки строк, а вот создать такой макрос - не хватает знаний. Это вообще реально и как можно реализовать? Заранее спасибо.
Здравствуйте! Прошу помощи. Имеется файл эксель (приложил для ясности), где на листе "Фундамент" находятся "таблицы" с данными. Необходимо создать кнопку, по нажатию которой вставлялись бы новые аналогичные "таблицы". Знаний хватает на создание макроса вставки строк, а вот создать такой макрос - не хватает знаний. Это вообще реально и как можно реализовать? Заранее спасибо.Lars
Сейчас попробую объяснить несколько понятнее. На листе "Фундамент" имеются две таблицы (назовем их так) с данными по фундаментам (Фундамент ленточный, Фундамент сваи), такие вот аналоги карточки материала, где ведутся все расчеты и выясняется стоимость того или иного материала. Стоит задача создать на листе "Фундамент" кнопку, которая по нажатии, будет создавать точно такие же таблицы как "Фундамент ленточный" и "Фундамент сваи", но с пустыми значениями через ячейку от предыдущей.
Сейчас попробую объяснить несколько понятнее. На листе "Фундамент" имеются две таблицы (назовем их так) с данными по фундаментам (Фундамент ленточный, Фундамент сваи), такие вот аналоги карточки материала, где ведутся все расчеты и выясняется стоимость того или иного материала. Стоит задача создать на листе "Фундамент" кнопку, которая по нажатии, будет создавать точно такие же таблицы как "Фундамент ленточный" и "Фундамент сваи", но с пустыми значениями через ячейку от предыдущей.Lars
Ну тогда задайте сразу 8 или больше разных объектных переменных - на все постоянные значения и формулы суммирования, и раскопируйте их. Примерно так - сделал для первой таблицы, продолжайте аналогично:
[vba]
Code
Sub dobavitj_tablicu() Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range, tgt As Range Set r1 = [a1:e1] Set r2 = [a2:b11] Set r3 = [a12:d12] Set r4 = [e10:e12] Set tgt = Range("E" & Rows.Count).End(xlUp).Offset(2, -4) r1.Copy tgt r2.Copy tgt.Offset(1) r3.Copy tgt.Offset(11) r4.Copy tgt.Offset(9, 4) End Sub
[/vba]
Или проще - на дополнительном листе заполняете диапазон таблицами без данных и используете весь этот один диапазон как форму для копирования. Как в первом варианте кода. Только нужно указать лист: [vba]
Code
Set r = sheets("формы").[a1:i29]
[/vba]
Ну тогда задайте сразу 8 или больше разных объектных переменных - на все постоянные значения и формулы суммирования, и раскопируйте их. Примерно так - сделал для первой таблицы, продолжайте аналогично:
[vba]
Code
Sub dobavitj_tablicu() Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range, tgt As Range Set r1 = [a1:e1] Set r2 = [a2:b11] Set r3 = [a12:d12] Set r4 = [e10:e12] Set tgt = Range("E" & Rows.Count).End(xlUp).Offset(2, -4) r1.Copy tgt r2.Copy tgt.Offset(1) r3.Copy tgt.Offset(11) r4.Copy tgt.Offset(9, 4) End Sub
[/vba]
Или проще - на дополнительном листе заполняете диапазон таблицами без данных и используете весь этот один диапазон как форму для копирования. Как в первом варианте кода. Только нужно указать лист: [vba]
Hugo, да, простым вариантом все отлично работает. Добавил лист с формой, делаю с него копирование полей, на лист "Фундамент" повесил кнопку для выполнения макроса. По нажатии добавляются необходимые поля. Правда, теперь есть к вам еще один вопрос, если не затруднит. При единичном нажатии кнопки - все работает, добавляются новые поля, как изначально и было необходимо. А можно ли как-нибудь сделать так, чтобы при повторном нажатии на кнопку, макрос добавлял снова такую же форму еще ниже, а не заменял предыдущую вставку? Приложил файл с кнопкой, чтоб было понятнее.
Hugo, да, простым вариантом все отлично работает. Добавил лист с формой, делаю с него копирование полей, на лист "Фундамент" повесил кнопку для выполнения макроса. По нажатии добавляются необходимые поля. Правда, теперь есть к вам еще один вопрос, если не затруднит. При единичном нажатии кнопки - все работает, добавляются новые поля, как изначально и было необходимо. А можно ли как-нибудь сделать так, чтобы при повторном нажатии на кнопку, макрос добавлял снова такую же форму еще ниже, а не заменял предыдущую вставку? Приложил файл с кнопкой, чтоб было понятнее.Lars
Господа, а как в этом файле сделать, чтобы таблицы вставлялись не вниз, а справа. Как в этом коде указать, что таблицу нужно вставить в пустую строку СТРОКИ, а не СТОЛБЦА?
Господа, а как в этом файле сделать, чтобы таблицы вставлялись не вниз, а справа. Как в этом коде указать, что таблицу нужно вставить в пустую строку СТРОКИ, а не СТОЛБЦА?Валерий - shelesto@ya.ru