Здравствуйте! Подскажите, пожалуйста, нужен макрос чтобы добавлять пустую строку в конце таблице. Но там загвоздка строка в таблице последняя, но не последняя на листе.
Нашел макросы 1. который удаляет последнюю строчку
Код
Sub Удаляет_и_добавляет()
Dim r As Range
Set r = [a1].CurrentRegion
r.Rows(r.Rows.Count).Delete
End Sub
2 который добавляет последнюю строку
Код
Sub Копировать_последнюю_строку()
Dim LastRow&, LastCol&
With ActiveSheet
LastRow = .UsedRange.Rows.Count + .UsedRange.Row - 1
LastCol = .UsedRange.Columns.Count + .UsedRange.Column - 1
Range(.Cells(LastRow, 1), .Cells(LastRow, LastCol)).Copy Destination:=.Cells(LastRow + 1, 1)
End With
End Sub
Подскажите пожалуйста, как их объединить и чтобы удалял 1 раз, а добавлял сколько угодно раз.
Запутался совсем. Первый код удаляет строку таблицы, а ниже, где написано "Страница 1/2" не трогает.
Тут меня осенило, что эта и есть та строка куда мне надо добавить строки и я вместо delete "написал" вставить и получился такой код, но он не работает:
Код
Sub Удаляет_и_добавляет()
Dim r As Range
Set r = [a1].CurrentRegion
r.Rows(r.Rows.Count).Copy Destination:=.Cells(LastRow + 1, 1)
End Sub
как вариант. Настройте сами колонку поиска и стартувую строку
Код
Public Sub addRow()
Dim lRow&
lRow& = lastRow(1, 2)
Rows(lRow& & ":" & lRow&).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Private Function lastRow(ByVal startRow&, findColumn&) As Long
For lastRow = startRow& To 1000000
If Cells(lastRow&, findColumn&) = "" Then Exit For
Next
End Function
Спасибо ! Получается! Сейчас пробую цифры разные вставлять в диапазон
Код
Public Sub addRow() Dim lRow&
lRow& = lastRow(1, 2)
Rows(lRow& & ":" & lRow&).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Private Function lastRow(ByVal startRow&, findColumn&) As Long
For lastRow = startRow& To 1000000
If Cells(lastRow&, findColumn&) = "" Then Exit For
Next
End Function
Подскажите, как добавить не последнюю строку, а предпоследнюю строку из этого кода??
Код
Sub Копировать_последнюю_строку()
Dim LastRow&, LastCol&
With ActiveSheet
LastRow = .UsedRange.Rows.Count + .UsedRange.Row - 1
LastCol = .UsedRange.Columns.Count + .UsedRange.Column - 1
Range(.Cells(LastRow, 1), .Cells(LastRow, LastCol)).Copy Destination:=.Cells(LastRow + 1, 1)
End With
End Sub
Вот этот код мне подходит, но он копирует последнюю строку, а мне надо предпоследнюю строку копировать
Код
Sub Копировать_последнюю_строку()
Dim LastRow&, LastCol&
With ActiveSheet
LastRow = .UsedRange.Rows.Count + .UsedRange.Row - 1
LastCol = .UsedRange.Columns.Count + .UsedRange.Column - 1
Range(.Cells(LastRow, 1), .Cells(LastRow, LastCol)).Copy Destination:=.Cells(LastRow + 1, 1)
End With
End Sub
Sub Копировать_последнюю_строку()
Dim LastRow&, LastCol&
With ActiveSheet
LastRow = .UsedRange.Rows.Count + .UsedRange.Row - 2
LastCol = .UsedRange.Columns.Count + .UsedRange.Column - 1
Range(.Cells(LastRow, 1), .Cells(LastRow, LastCol)).Copy Destination:=.Cells(LastRow + 1, 1)
End With
End Sub
Все таки пытаюсь совместить Ваш код, с кодом который Вы мне отредактировали получается ерунда( Private Function красным светится
Код
Public Sub addRow()
Dim lRow&
lRow& = lastRow(1, 2)
Rows(lRow& & ":" & lRow&).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Private Function
Dim lastRow&, LastCol&
With ActiveSheet
lastRow = .UsedRange.Rows.Count + .UsedRange.Row - 2
LastCol = .UsedRange.Columns.Count + .UsedRange.Column - 1
Range(.Cells(lastRow, 1), .Cells(lastRow, LastCol)).Copy Destination:=.Cells(lastRow + 1, 1)
End With
End Function
Public Sub addRow()
Dim lRow&
lRow& = lastRow(3, 1)
Rows(lRow& & ":" & lRow&).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Private Function lastRow(ByVal startRow&, findColumn&) As Long
For lastRow = startRow& To 1000000
If Cells(lastRow&, findColumn&) = "" Then Exit For
Next
End Function