Excel VBA:检测工作表切换:选择另一个工作表时

时间:2018-11-30 07:59:40

标签: excel vba excel-vba

假设我有一个包含两个工作表的工作簿:Sheet1Sheet2。我希望用户从Sheet2回到Sheet1时出现一条消息。

我不确定如何处理它-到目前为止,我只干预了Worksheet_Change子程序,但是该问题似乎无法解决该子程序内部的问题。现在,我只能考虑设置一些全局变量

 Dim previousWorksheet As Variant
 Set previousWorksheet = ActiveSheet.Name

然后检查哪个表是活动表:

If previousWorksheet = "Sheet2" And ActiveSheet.Name = "Sheet1" Then
   MsgBox("DETECTED")

End If

但是我不知道什么会触发该代码。

完成它的最好方法是什么?

2 个答案:

答案 0 :(得分:0)

这对我有用(在ThisWorkbook模块内部):

Option Explicit

Dim previousWorksheet As String


Private Sub Workbook_open()
    previousWorksheet = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    MsgBox ("changed")

    If ActiveSheet.Name = "Sheet1" And previousWorksheet = "Sheet2" Then
        MsgBox ("the switch")

    End If

    previousWorksheet = ActiveSheet.Name

End Sub

答案 1 :(得分:0)

  

假设我有一个包含两个工作表的工作簿:Sheet1和Sheet2

然后获取消息

  

当用户从Sheet2返回Sheet1时

您可以直接去:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Sheet1" Then MsgBox "The switch"
End Sub