Добрый день Уважаемые Форумчане! Благодаря нашему форуму, нашел макрос автоматической вставки строк. Хотел бы использовать его для своего работы, но немного дополнить его. К примеру, имеется список с договорами, где с помощью макроса вставляется пустая строка в конце каждого договора. Подскажите пожалуйста, как подправить макрос, так чтобы автоматически вставляемые строки между договорами еще и окрашивались в определенный цвет.
Добрый день Уважаемые Форумчане! Благодаря нашему форуму, нашел макрос автоматической вставки строк. Хотел бы использовать его для своего работы, но немного дополнить его. К примеру, имеется список с договорами, где с помощью макроса вставляется пустая строка в конце каждого договора. Подскажите пожалуйста, как подправить макрос, так чтобы автоматически вставляемые строки между договорами еще и окрашивались в определенный цвет.Digital
Я добавил переменную "row" - это вставленная строка.
[vba]
Код
Sub Автоматическая_вставка_пустых_строк()
Dim A(), lr As Long, i As Long Dim row As Range
Application.ScreenUpdating = False
'Определяем последнюю строку с данными по столбцу "A". 'Макрос сделает действие аналогичное тому, 'как в Excel сделать активной последнюю ячейку 'в столбце "A" и нажать сочетание 'клавиш "Ctrl + стрелка вверх". lr = Cells(Rows.Count, "A").End(xlUp).row A() = Range("A1:A" & lr).Value
For i = UBound(A, 1) To 2 Step -1 If A(i, 1) <> A(i - 1, 1) Then Rows(i).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow Set row = Rows(i) row.Columns("A:E").Interior.Color = 12379352 End If Next i
Application.ScreenUpdating = True
End Sub
[/vba]
Я добавил переменную "row" - это вставленная строка.
[vba]
Код
Sub Автоматическая_вставка_пустых_строк()
Dim A(), lr As Long, i As Long Dim row As Range
Application.ScreenUpdating = False
'Определяем последнюю строку с данными по столбцу "A". 'Макрос сделает действие аналогичное тому, 'как в Excel сделать активной последнюю ячейку 'в столбце "A" и нажать сочетание 'клавиш "Ctrl + стрелка вверх". lr = Cells(Rows.Count, "A").End(xlUp).row A() = Range("A1:A" & lr).Value
For i = UBound(A, 1) To 2 Step -1 If A(i, 1) <> A(i - 1, 1) Then Rows(i).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow Set row = Rows(i) row.Columns("A:E").Interior.Color = 12379352 End If Next i
Sub Автоматическая_вставка_пустых_строк() Dim lr As Long, i As Long Dim row As Range lr = Cells(Rows.Count, 1).End(xlUp).row For i = lr To 2 Step -1 If Cells(i, 1) <> Cells(i - 1, 1) Then Rows(i).Insert Rows(i).Columns("A:E").Interior.Color = 12379352 End If Next i End Sub
[/vba]
Тоже делает свое дело, но может, в этом варианте могут быть потом какие - то ошибки, это так? Подскажите, пожалуйста, если не трудно.
И еще вопрос, извините, что их много... не понимаю
[vba]
Код
Sub Автddddматическая_вставка_пустых_строк() Dim lr As Long, i As Long Dim row As Range lr = Cells(Rows.Count, 1).End(xlUp).row For i = lr To 2 Step -1 If Cells(i, 1) <> Cells(i - 1, 1) Then With Rows(i) .Insert .Columns("A:E").Interior.Color = 12379352 End With End If Next i End Sub
[/vba]
с оператором With код начинает чудить... строчки закрашивает уже не пустые, а почему?
Заранее спасибо.
Здравствуйте, только не подумайте, что я выпендриваюсь, я себя дубом ощущаю в этом мире экселистов
У меня вопрос к автору кода и ко всем тоже Можете ли подсказать, зачем вот это:
1. [vba]
Код
A() = Range("A1:A" & lr).Value
[/vba]
2 А зачем Ubound, ведь есть lr?
3 Для чего вот эта вещь, без нее тоже работает [vba]
Sub Автоматическая_вставка_пустых_строк() Dim lr As Long, i As Long Dim row As Range lr = Cells(Rows.Count, 1).End(xlUp).row For i = lr To 2 Step -1 If Cells(i, 1) <> Cells(i - 1, 1) Then Rows(i).Insert Rows(i).Columns("A:E").Interior.Color = 12379352 End If Next i End Sub
[/vba]
Тоже делает свое дело, но может, в этом варианте могут быть потом какие - то ошибки, это так? Подскажите, пожалуйста, если не трудно.
И еще вопрос, извините, что их много... не понимаю
[vba]
Код
Sub Автddddматическая_вставка_пустых_строк() Dim lr As Long, i As Long Dim row As Range lr = Cells(Rows.Count, 1).End(xlUp).row For i = lr To 2 Step -1 If Cells(i, 1) <> Cells(i - 1, 1) Then With Rows(i) .Insert .Columns("A:E").Interior.Color = 12379352 End With End If Next i End Sub
[/vba]
с оператором With код начинает чудить... строчки закрашивает уже не пустые, а почему?
ant6729, 1. - данные копируются в массив, т.к. с массивом макрос быстрее работает. Копировать в массив актуально, если много данных. 2. Переменная "lr" может быть использована где-нибудь в другом месте еще раз, поэтому надежнее использовать UBound. Для данной задачи достаточно использовать "lr". 3. Вставку строки делал не я а другой человек и автор темы взял код в интернете. Возможно в той задаче это было нужно. В этой задаче это получается, что не нужно. 4. Да, можно не использовать переменную Row. В данном случае и так удобно Rows(i). Просто мне показалось, что так будет удобнее, но сейчас я посмотрел и увидел, что и без Row нормально. 5. With в данном случае дает неправильный результат, т.к. оба действия делаются с одной строкой. При использовании With указывается, с какой строкой работать, и макрос делает все действия с этой строкой, а не с новой.
ant6729, 1. - данные копируются в массив, т.к. с массивом макрос быстрее работает. Копировать в массив актуально, если много данных. 2. Переменная "lr" может быть использована где-нибудь в другом месте еще раз, поэтому надежнее использовать UBound. Для данной задачи достаточно использовать "lr". 3. Вставку строки делал не я а другой человек и автор темы взял код в интернете. Возможно в той задаче это было нужно. В этой задаче это получается, что не нужно. 4. Да, можно не использовать переменную Row. В данном случае и так удобно Rows(i). Просто мне показалось, что так будет удобнее, но сейчас я посмотрел и увидел, что и без Row нормально. 5. With в данном случае дает неправильный результат, т.к. оба действия делаются с одной строкой. При использовании With указывается, с какой строкой работать, и макрос делает все действия с этой строкой, а не с новой.Karataev
Добрый день ant6729! Если честно, я не смогу ответить на ваши вопросы, так как не владею такими знаниями А макрос я взял с нашего форума, с одной схожей темы .
Добрый день ant6729! Если честно, я не смогу ответить на ваши вопросы, так как не владею такими знаниями А макрос я взял с нашего форума, с одной схожей темы .Digital