Страницы: 1
RSS
Макрос для автоматического продления столбца
 
Здравствуйте.  
Помогите, пожалуйста, сделать макрос.  
Для примера – в архиве прилагаю 2 файла, на основе которых, я и буду объяснять ситуацию.    
Каждый месяц я работаю в файле с названием текущего месяца (11_Ноябрь). В этот файл мне приходится вставлять строки из предыдущих файлов (10_Октябрь). При этом в строке, где есть формулы, сохраняются связи на старые файлы (столбец T). Чтобы расчеты были верны – формулу необходимо корректировать продление столбца (со строки 9). Я сделал макрос, который продлевает все столбцы, в которых есть формула, начиная с 9-ой строки (именно там правильные формулы изначально). Макрос продлевает все столбы до 500-ой строки. Долго думает, ведь чем больше строк в файле, тем больше данных надо обработать. Отключил прорисовку результата на экране – сильно скорость не увеличилась. Поэтому возник вопрос – как сделать так, чтобы макрос продлевал столбцы именно до последней вновь вставленной строки, а не до 500-ой.  Можно сделать так, чтобы он продлевал столбы по принципу – если в 10-ой строке есть какое-то значение  - значит надо продлить столбцы.  
Заранее благодарен.
 
Файлы, к сожалению, посмотреть не могу - на работе я, ограничения...  
Судя по всему вам надо найти номер строки последней заполненной ячейки в неком столбце.  
Например, вам надо найти номер строки последней заполненной ячейки в столбце А и затем выделить диапазон в столбце В с 2 строки по найденную строку.  
Тогда так:  
Sub SimpleExample()  
Dim lngI as Long  
lngI = Cells(Rows.Count, 1).End(xlUp).Row  
Range("B2:B" & lngI).Select  
End Sub  
Попробуйте это использовать.  
 
З.Ы. Хы, прям частушка:  
"...На рабОте я  
ОграничЕния  
Под угрозою хожу  
ОтключЕния!..."  
 
51150 - прэлэсно, прэлэсно! :О)
 
Сразу же скажу, что с понятием макрос я познакомился только вчера, когда появилась необходимось немного автоматизировать процесс работы. Поэтому в вашем коде я ничего не понимаю :-)  
Допустим, мне необходимо, чтобы:  
1) макрос нашел последнюю строку, в которой заполнен столбец L (он 12-ый).  
2) надо, чтобы макрос протянул столбец T c 9-ой строки по последнюю найденную.  
 
Должно получиться так:  
Sub SimpleExample()  
Dim lngI as Long  
lngI = Cells(Rows.Count, 12).End(xlUp).Row  
Range("T9:T" & lngI).Select  
End Sub  
Мне кажется, что это неправильно по той причине, что ч просто плохо объяснил задачу, и Вы решили, что найденный столбец просто надо выделить, а его надо именно протянуть с 9-ой строки.  
Наверно, надо использовать:  
Selection.AutoFill Destination:=Range("T9:T"), Type:=xlFillDefault
 
Я привел свой код как пример. Я даже сверху написал: "допустим вам надо...."  
Я не знаком с термином "протянуть столбец" - а поскольку файлы посмотреть не могу - то перевести этот термин для себя не могу тоже. :О)  
Если речь идет о заполнении ячеек в столбце - опять вопрос - заполнить "чем" надо найденный диапазон? формулами? значениями? форматами?  
Но вы на верном пути, только Select и Selection лишние:  
 
Range("T9").AutoFill Destination:=Range("T9:T" & lngI), Type:=xlFillDefault
 
Да, всё верно.  
Подытожу и упрощу код анонима:  
 
Sub SuperSingleExample()  
Range("T9").AutoFill Destination:=Range("T9:T" & Cells(Rows.Count, 12).End(xlUp).Row), Type:=xlFillDefault  
End Sub
 
Все, с Вашей помощью я его сделал :-)  
Необходимо было, чтобы в определенных столбцах ячейки заполнялись формулами из 9-ой строки и не оставалось связей с предыдущих книг...  
ОГРОМНОЕ ВАМ СПАСИБО!  
Правда осталось еще 2 вопроса:  
1) Как экспортировать макрос на другой компьютер?  
2) Как сделать отдельную клавишу выполнения макроса прямо на листе?  
Больше меня волнует 2-ой вопрос.
 
1) в редакторе перетянуть модуль с кодом из одного проекта в другой.  
2) просто и красиво - ставите на лист фигуру из имеющихся или любой рисунок, клацаете ПКМ-> Assign Macro (или аналогично по-русски), выбираете свой макрос.
 
Извините за предыдущую анонимность, сверху был я  
1. Макрос записан в файле. Переносите файл - переносите макрос. Или имеется в виду перенос макроса в др.файл? Тогда в файле давите Alt+F11 - откроется редактор VBA, ищете слева вверху в иерархическом списке Module1 два раза по нему клац! - откроется окно с кодом, который в модуле содержится. Копируете текст макроса.    
В другом файле (возможно понадобиться сначала вставить модуль - в VBA редакторе insert - module) - вставляете текст макроса.  
2. п.меню Разработчик - вставить - элементы управления формы - кнопка  
Вывалиться окно - назначить макрос объекту. И назначаете кнопке ваш макрос.
 
Всем Огромное Спасибо!  
Сейчас буду пробовать.
Страницы: 1
Читают тему
Loading...