John需要确保在用户离开工作表之前已经执行了某些操作(添加了信息,等等)。他想知道是否存在某种宏事件,例如WorksheetBeforeDeactivate。

实际上,您可以使用两个事件来实现此目的。每当用户将任何工作表留在工作簿中时,都可以使用ThisWorkbook模块中的SheetDeactivate事件来触发操作:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

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

如果只想在动作离开特定工作表时才触发它们,则可以在WorkSheet对象中使用Deactivate事件:

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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(7730)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: