Если вы хотите избежать удаления строк из Parking
Рабочего листа, в случае Workbook_SheetActivate
вы должны указать что-то вроде этого:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Parking" Then
'CODE TO BLOCK DELETING ROWS
Else
'CODE TO ALLOW DELETING ROWS
End If
End Sub
Sh
- это Рабочий лист, который вы активируете при переходе с1 лист к другому, поэтому при активации Parking
код будет блокировать удаление строк.Если это не PArking
, тогда это позволит удалить строки.
ОБНОВЛЕНИЕ: Этот код необходимо ввести в редакторе VBA в ThisWorkbook
Object.
![enter image description here](https://i.stack.imgur.com/PmgYN.jpg)
Как только donde, вам не нужно передавать параметр, он будет работать сам по себе.События инициируются, когда происходит конкретное действие, и пользователю не нужно передавать параметр (они получают его мгновенно).В этом случае событие срабатывает, когда пользователь переключается с одного рабочего листа на другой, а этот параметр является целевым рабочим листом (он хранится в параметре Sh
), но вам не нужно вызывать его с помощью строк кода.Он сработает сам по себе.
Подробнее об этом событии можно прочитать здесь:
Событие Workbook.SheetActivate
Если вы хотите узнать больше о других событиях, отметьте:
События Excel VBA
ВАЖНО : Если у вас есть код в любом событии, это событие будет готово к срабатыванию в в любое время .В этом случае, если любой другой макрос из вас активирует лист Parking
, он будет запущен.
Кроме того, как и другие пользователи опубликовали, ваши коды просто запрещают удалять строки из панели команд, но, вероятно, пользователи могутпо-прежнему удаляйте строки с помощью щелчка правой кнопкой мыши или сочетаний клавиш или других макросов.
Если вы действительно хотите защитить этот лист от любого удаления, лучшим вариантом, действительно, является ответ @MathieuGuindon, защищающий лист.Этот путь будет более безопасным.