Как в макросе указать последние строки, при их постоянном изменении их кол-ва.

Автор Роман_ВП, 03.03.2012, 01:29

« назад - далее »

Роман_ВП

Здравствуйте!
Записываю макрос на создание прайса из данных в взятых из программы.
Камнем преткновения стал момент растяжки формулы, на весь столбец(точнее сразу два столбца), и удаление двух последних строк, при том что количество строк все время меняется. А то получается только делением всей процедуры на три части.
Вот образно говоря середина действия которое не получается сделать из-за изменения кол-ва строк, приходится это делать вручную после первого макроса, а потом включать третий макрос.
ЦитироватьSub Макрос1()
'
' Макрос1 Макрос
'

'
   Selection.AutoFill Destination:=Range("E2:F19007"), Type:=xlFillDefault
   Range("E2:F19007").Select
   Rows("19007:19008").Select
   Selection.Delete Shift:=xlUp
   Range("A19010").Select
End Sub
Excel 2010

Если сильно запутал или не указал нужной инф-ции, готов исправляться )
Спасибо!

Wasilic

Цитата: Роман_ВП от 03.03.2012, 01:29
Если сильно запутал ....
Не то слово!  :) Одна вода и ничего конкретного.
Если это поможет, команда определяющая номер последней заполненной строки (в колонке "А"): -
NS = Range("A" & Rows.Count).End(xlUp).Row
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Роман_ВП

Цитата: Wasilic от 03.03.2012, 10:17
Цитата: Роман_ВП от 03.03.2012, 01:29
Если сильно запутал ....
Не то слово! 

Да-а-а :-\ , вчера хотелось  спать и хотелось задать вопрос, лучше бы поспал...

В файле(*во вложении) выделяю ячейки E2 и F2 и протягиваю (копирую)ячейки до самой нижней строки (в файле это ячейки E11 и F11). Затем удаляю две нижних строки (в файле это строка №10 и 11).
Получается такой макрос:
ЦитироватьSub Макрос18()
'
' Макрос18 Макрос
'

'
    Range("E2:F2").Select
    Selection.AutoFill Destination:=Range("E2:F12"), Type:=xlFillDefault
    Range("E2:F12").Select
    Rows("11:13").Select
    Range("A13").Activate
    Selection.Delete Shift:=xlUp
    Range("A17").Select
End Sub


Количество строк все время меняется. Как указать в макросе что протянуть копирование нужно не до E11 и F11, а до последней строки.
И удалить надо не 10 и 11 строку, а две последних.

Wasilic

Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

kuklp

Вариант(попаразитировал на макросе Wasilic:-)):
Sub Макрос18_1()
    NS = Range("A" & Rows.Count).End(xlUp).Row
    Range("E2:F" & NS - 2).Formula = Range("E2:F2").Formula
    Rows(NS - 1).Resize(2).Delete
End Sub

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Роман_ВП

Цитата: Wasilic от 03.03.2012, 17:26
Спасибо!
Теперь один макрос получился вместо 3.

Подскажите ещё такой момент.
Файл (во вложении).
В нем есть пустые строки в колонке "B", нужно их оставить без заливки, остальное закрасить заливкой(желтым цветом).

Фильтрую в колонке "B", кроме пусты ячеек, выделяю и заливаю цветом, убираю фильтр.
Получается так
ЦитироватьSub выделение_цветом()
'
' выделение_цветом Макрос
'

'
    ActiveSheet.Range("$A$1:$D$26").AutoFilter Field:=2, Criteria1:="<>"
    Range("A2:D25").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    ActiveSheet.Range("$A$1:$D$26").AutoFilter Field:=2
    Range("A1").Select
End Sub

Если количество строк увеличится, макрос сделает заливку только в строках с A1 по D26, как сделать чтобы это не зависела от кол-ва строк?

Wasilic

Второй раз Вы задаёте один и тот же вопрос.
Вы мой пример макроса смотрели?
KuklP, перед Вашим сообщением выложил пример макроса, тоже не видели?
Если не шевелить серым веществом, Вам и эта подсказка не поможет.
Sub выделение_цветом()
'
' выделение_цветом Макрос
'
'
   NS = Range("A" & Rows.Count).End(xlUp).Row

   ActiveSheet.Range("$A$1:$D" & NS).AutoFilter Field:=2, Criteria1:="<>"
   Range("A2:D" & NS).Select
   With Selection.Interior
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
       .Color = 65535
       .TintAndShade = 0
       .PatternTintAndShade = 0
   End With
   ActiveSheet.Range("$A$1:$D" & NS).AutoFilter Field:=2
   Range("A1").Select
End Sub


Тема закрыта!
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.