Страницы: 1
RSS
Добавление/удаление строк в таблице скриптом, Скрипт VBA для добавления и удаления последних строк в умной таблице
 
Добрый день!

Снова нужна Ваша помощь в VBA )

Набросал скрипт добавления новой строки в таблице и удаления последней.
Скрипт работает исправно, за исключением одного момента: при удалении последней строки, удаляется и строка итогов умной таблицы.
Как сделать, чтобы удаление строк не затрагивало строку итогов?

Заранее спасибо!
 
Здравствуйте.
Код
Sub dell_row()
    Dim l
    l = Range("A2").End(xlDown).Row
    Rows(l - 1 & ":" & l - 1).Delete
End Sub

так?
Кому решение нужно - тот пример и рисует.
 
так у вас только строка итогов и удаляется. попробуйте так:
Код
l = Range("A2").End(xlDown).Row - 1

хотя, я бы вообще вот так сделал:

Код
Sub dell_row()
Dim lo As ListObject
Set lo = Range("A1").ListObject
lo.ListRows(lo.ListRows.Count).Delete
End Sub

Изменено: webley - 11.10.2017 15:30:24
 
Пытливый, webley, спасибо Вам большое. Оба варианта отлично справляются с задачей.
 
Ребят, можно еще вопросик?

Добавил для процедуры Sub dell_row() условие, для подтверждения удаления последней строки:
Код
Sub dell_row()
    If MsgBox("Вы действительно хотите удалить строчку?", vbYesNo + vbQuestion) = vbYes Then
    ActiveWindow.ScrollColumn = 1
    Dim lo As ListObject
    Set lo = Range("A1").ListObject
    lo.ListRows(lo.ListRows.Count).Delete
    End If
End Sub

Подскажите, как сделать, чтобы в случае, если в ячейке колонки "B" последней строки пусто, то макрос выполнялся бы без подтверждения?

 
Код
Sub dell_row()
    Dim lo As ListObject
    Dim Answ
    Set lo = Range("A1").ListObject
    If lo.DataBodyRange.Cells(lo.ListRows.Count, 2) = "" Then
        Answ = vbYes
    Else
        Answ = MsgBox("Вы действительно хотите удалить строчку?", vbYesNo + vbQuestion)
    End If
    If Answ = vbYes Then lo.ListRows(lo.ListRows.Count).Delete
    'ActiveWindow.ScrollColumn = 1'непонятно зачем
End Sub
 
webley, премного благодарен. Все работает как надо!

Цитата
webley написал:
'ActiveWindow.ScrollColumn = 1'непонятно зачем
Таблица широкая, сделал, чтобы лист сразу прокручивался влево к первой колонке
 
А чем вас не устраивает?
Код
Range("a1").Activate
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, таблица большая, как по горизантали, так и по вертикали, с закрепленными областями на пересечении А1.

Поэтому
Код
Range("a1").Activate

не подходит, а

Код
ActiveWindow.ScrollColumn = 1

именно скроллит лист к первому столбцу не прокручивая страницу по вертикали.
Страницы: 1
Наверх