Страницы: 1 2 След.
RSS
Добавление пустой строки в конце таблицы
 
Здравствуйте!
Подскажите, пожалуйста, нужен макрос чтобы добавлять пустую строку в конце таблице.
Но там загвоздка строка в таблице последняя, но не последняя на листе.
Изменено: paff - 03.11.2018 01:04:27
 
Нашел макросы
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 раз, а добавлял сколько угодно раз.
Изменено: paff - 02.11.2018 13:48:22
 
Запутался совсем.
Первый код удаляет строку таблицы, а ниже, где написано "Страница 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
Изменено: paff - 02.11.2018 13:48:08
 
как вариант.
Настройте сами колонку поиска и стартувую строку
Код
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
 
Спасибо!! Сейчас попробую. Но файл эксель выгружается из программы и всегда может быть разной "длины".
Изменено: paff - 02.11.2018 13:15:22
 
Цитата
paff написал:
Но файл эксель выгружается из программы и всегда может быть разной "длины".
ето учтено, стартовоя строка всегда одна и таже
 

Спасибо ! Получается! Сейчас пробую цифры разные вставлять в диапазон

Код
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

Потому что плохо в этом бум-бум!)
Изменено: paff - 02.11.2018 13:43:06
 
paff, зачем повторяете в сообщении код?
и приведите код в в нормальный вид тегом <....>
Изменено: ivanok_v2 - 02.11.2018 13:27:44
 
Выделил цветом, где меняю значения. Потому что не пойму сам что делаю и если не там меняю может вы подскажите, где нужно.
 
Цитата
paff написал:
т вы подскажите, где нужно.
на сообщении
Изменить->Выделить код-><...>->Сохранить
 
Поправил. Спасибо. Хоть что то получилось))
Изменено: paff - 02.11.2018 13:56:18
 
Подскажите, как добавить не последнюю строку, а предпоследнюю строку из этого кода??
Код
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

Изменено: paff - 02.11.2018 13:55:42
 
paff,
с каким кодом вы работаете, своим или моим?
Изменено: ivanok_v2 - 02.11.2018 13:56:24
 
я слишком туп для вашего кода((

Вот этот код мне подходит, но он копирует последнюю строку, а мне надо предпоследнюю строку копировать
Код
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

Изменено: paff - 02.11.2018 13:58:17
 
Код
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
Изменено: ivanok_v2 - 02.11.2018 14:10:11
 
Спасибо Вам!! Все работает!, но упирается в объединенную ячейку которую надо все таки удалить!! Млин
 
Все таки пытаюсь совместить Ваш код, с кодом который Вы мне отредактировали получается ерунда(
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
Изменено: paff - 02.11.2018 14:27:16
 
Цитата
paff написал:
но упирается в объединенную ячейку которую надо все таки удалить!! Млин
тогда используйте мой код,что дал вам выше
там все просто и понятно
 
Ваш я хочу использовать, но мое интеллектуальное развитие не может понять, что мне нужно вставить в те места, где вы сказали
 
Начало поиска у меня ячейка А3, а стартовая строка - я не пойму что это
 
Код
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
попробуйте так
Изменено: ivanok_v2 - 02.11.2018 14:35:21
 
Уже лучше!! Он добавляет строки, но самую последнюю (объединенную так и не удаляет((
 
Цитата
paff написал:
объединенную так и не удаляет
вы говорили про добавление, про удаление ни слова не было.
а зачам вам ее удалять?
 
АА кстати, Вы в сотый раз правы!!! Она съезжает вниз!! И ее можно не трогать!!

Тогда можно ли добавляет строки с форматом как в таблице??

туплю уже жестко((=
Изменено: paff - 02.11.2018 14:42:43
 
Цитата
paff написал:
Тогда можно ли добавляет строки с форматом как в таблице??
ну так так формат сохраняется.
или у вас по другому?
 
Добавляет пустые строки, без формата.

Хотя в коде понял что за это отвечает строчка CopyOrigin:=xlFormatFromLeftOrAbove
 
Цитата
paff написал:
lRow& = lastRow(3, 1)
замените на
Код
lRow& = lastRow(3, 1)-1
 
Теперь перед предпоследней строкой добавляет строчки , но с нужным форматом!! сейчас поиграюсь с этим -1
 
Если ставить -2, то вставляет строки перед двумя нижними строками
 
paff,
Вам нужно перенести значение на строку выше
Страницы: 1 2 След.
Читают тему
Наверх