Я хотел бы предложить использовать «Workbook Sheet SelectionChange Event» вместо «Workbook_SheetActivate». Потому что в конечном итоге вам нужно выбрать ячейку, чтобы выделить строку.
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) If Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = False Cells.Interior.ColorIndex = 0 With Target .EntireRow.Interior.ColorIndex = 19 End With Application.ScreenUpdating = True End Sub
Как это работает: выберите ячейку, строка будет выделена. Перейдите на другой лист, и когда вы вернетесь к листу, вы обнаружите, что строка выделена.
Чтобы удалить цвет заливки из строки, вы можете использовать этот код,
ActiveCell.Interior.ColorIndex = xlNone