Джону необходимо убедиться, что определенные действия были выполнены (добавлена ​​информация и т. Д.), Прежде чем пользователь покинет рабочий лист. Он задается вопросом, есть ли какое-то макро-событие, такое как WorksheetBeforeDeactivate.

На самом деле для этой цели можно использовать два события. Вы можете использовать событие SheetDeactivate в модуле ThisWorkbook для запуска действий всякий раз, когда пользователь покидает какой-либо рабочий лист в книге:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

MsgBox Prompt:="You just left sheet:" & Sh.Name End Sub

Если вы хотите запускать действия только тогда, когда они покидают конкретный рабочий лист, вы можете использовать событие Deactivate в объекте WorkSheet:

Private Sub Worksheet_Deactivate()

' sheet specific code goes here End Sub

Однако вы должны знать, что в любом случае рабочий лист, к которому пользователь выбирает перейти, будет активным рабочим листом после завершения события. Если вы хотите заставить пользователя оставаться на рабочем листе, вам нужно специально вернуть его обратно на рабочий лист следующим образом:

Private Sub Worksheet_Deactivate()

' sheet specific code goes here     Sheets("Sheet1").Select End Sub

При этом, конечно, предполагается, что имя листа, на котором должен оставаться пользователь, — Sheet1.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (7730) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Triggering_an_Event_when_a_Worksheet_is_Deactivated [Запуск события при деактивации рабочего листа].