Чтобы убрать выделение ячеек и активировать ячейку, следующую за самой нижней из выделенных, можно воспользоваться следующим кодом. Мы можем использовать цикл для определения нижней границы выделенных ячеек, а затем активировать следующую ячейку, после удаляемых строк. Также мы будем использовать `Application.CutCopyMode = False`, чтобы убрать рамку выделения.
Ниже приведен измененный код вашего макроса, который выполняет эти задачи:
```vba
Sub Udalit_vse_stroki_s_videlennimi_yachejkami()
Dim rng As Range
Dim bottomCell As Range
' Включаем обработку ошибок для исключений в случае, если ничего не выделено
On Error GoTo ErrHandler
' Получаем выделенные ячейки
Set rng = Selection
' Находим нижнюю ячейку среди выделенных
Set bottomCell = rng.Cells(rng.Cells.Count)
' Удаляем строки с выделенными ячейками
rng.EntireRow.Delete
' Активируем следующую ячейку после самой нижней из выделенных
If Not bottomCell Is Nothing Then
ActiveSheet.Cells(bottomCell.Row, bottomCell.Column).Offset(1, 0).Activate
End If
' Убираем выделение
Application.CutCopyMode = False
Exit Sub
ErrHandler:
MsgBox "Нет выделенных ячеек или произошла ошибка."
End Sub
```
### Объяснение кода:
1. **Обработка ошибок:** Используется блок `On Error GoTo` для обработки ошибок, которые могут возникнуть, если ничего не выделено.
2. **Определение нижней ячейки:** Мы сохраняем новую переменную `bottomCell`, которая представляет собой последнюю ячейку в выделенном диапазоне.
3. **Удаление строк:** `rng.EntireRow.Delete` удаляет все строки, содержащие выделенные ячейки.
4. **Активация следующей ячейки:** После удаления строк мы активируем ячейку, находящуюся ниже той, что была самой нижней из первоначально выделенных.
5. **Убираем выделение:** `Application.CutCopyMode = False` используется для устранения рамки выделения.
Теперь, когда вы запустите этот макрос, он должен выполнять задачи, указанные вами, и при этом выглядеть аккуратно без выделения.