Страницы: 1
RSS
Автозаполнение ячеек формулами по отдельным столбцам при вставке новой строки.
 
Доброе время суток. Вопрос. На листе есть несколько столбцов содержащих формулы работающие со строками. Необходимо при добавлении новой строки (строку добавляю кнопкой с кодом "Selection.EntireRow.Insert") автоматически заполнять в добавленной строке ячейки в столбцах с формулами.(Сейчас делаю Ctrl + D в нужный столбцах).  
 
Спасибо.
 
День или два назад СЛЭН?, по моему, помогал с макросом который вставлял строки по условию + сохранение формул. Но это не такой уж и редкий вопрос. Варианты были. Поищите. Если не найдете - вечером дома посмотрю, где то был один из примеров.
 
Буду очень благодарн - талантом в этой области я не отличаюсь - без прямой подсказки трудно разобраться. Нужно в общем всего лишь активировать ячейку в текущей строке, столбец F далее делаю Selection.FillDown , далее таже строка, столбец J, Скоприовать в нее данные из А1. Если не затруднит - пример такого кода.  
 
Спасибо
 
Посмотрите в файле. Слэн реализовал это с использованием именованных ячеек. Но код макроса, который вставляет стоку можно быстро адаптировать к вашим нуждам.
 
Спасибо Igor67, но видимо вы лучшего мнения о моих способностях.   :(  Буду разбираться - что к чему, сходу не получилось.
 
Может и так, но понять виртуально что необходимо...
 
Я так понял, что есть база, например A,B,C,D столбцы - числа, E-столбец - формула, F,G,H - числа, I - формулы и т.д. Если таблица вправо не "бесконечна", можно следующее применить:  
 
Sub ins()  
Dim n As String  
 
Selection.EntireRow.Insert ' ваша вставка строки  
n = Selection.Address() '  
r = Mid(n, 4) ' вычисление номера вставленной строки  
 
Cells(r - 1, 5).Copy ' 5 - это столбец Е - столбец с формулами  
Cells(r, 5).Select '  
ActiveSheet.Paste '  
 
Cells(r - 1, 9).Copy '9 - это столбец I - столбец с формулами  
Cells(r, 9).Select '  
ActiveSheet.Paste '  
 
End Sub  
 
Соответственно Вам надо 5 и 9 заменить на свои номера столбцов с формулами, при необходимости добавить копируемые столбцы, например  
Cells(r - 1, 15).Copy    
Cells(r, 15).Select    
ActiveSheet.Paste
 
Силыч, посмотрите еще раз приложенный файл. Я понял так - у Вас есть таблица с данными и и формулами. Необходимо при вводе новых данных автоматически вставлять в строку формулы.  
Одной из ячеек в последней строке Вашей таблицы присвойте имя - cell1, всей строке таблицы - rw1.  
Вместо вашего макроса вставте этот код:  
' просто отключаем обновление экрана  
   Application.EnableEvents = False  
'вставляем строку со сдвигом последней заполненной строки вниз  
      Range("cell1").EntireRow.Insert  
'копируем все во вставленную строку (формулы, форматы, данные)        
Range("rw1").Copy Destination:=Range("rw1").Offset(-1)  
'в последней строке удаляем только данные - xlCellTypeConstants  
      Range("rw1").SpecialCells(xlCellTypeConstants, 23).ClearContents  
   Application.EnableEvents = True  
     
End Sub
 
Отличный вариант с удалением только данных :), по-любому где-нить еще пригодится, надо запомнить. Если можно, вопрос : а параметр "23" что означает?
Страницы: 1
Читают тему
Наверх