2013-10-19 43 views
0

我想要完成的事情非常简单。当用户选择一张纸时,我想要一个消息框出现。含义:我目前正在查看Sheet1,点击Sheet2选项卡,弹出一条消息,然后我可以做任何事情。我似乎无法找到移至其他工作表时触发的事件。当我选择工作表时会发生什么事件?

活动我已经试过:Workbook_SheetActivateWorksheet_Activate

Private Sub Workbook_SheetActivate(ByVal sh As Object) 
     MsgBox ("Example Message") 
End Sub 

或者

Private Sub Worksheet_Activate() 
     MsgBox ("Example Message") 
End Sub 

我做了一些谷歌上搜索和大多数事情都当单元格的值更改或小区选择的变化。

回答

1

这应该工作:

Private Sub Worksheet_Activate() 
    MsgBox "you never visit...you never call....you never write" 
End Sub 

但是:

  • 代码必须在工作表的代码区
  • 宏必须启用
  • 事件必须被启用
+0

谢谢先生!我有宏和事件启用,但我有一个单独的模块代码 –

1

这里是所有链接在Excel工作表中提供的事件:

http://dmcritchie.mvps.org/excel/event.htm

Private Sub Worksheet_Activate() 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  -- (additional examples) 
    Cancel = True 'turn off Edit mode when using “Edit directly in a cell” 
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 
    Cancel = True 'turn off Edit mode when using “Edit directly in a cell” 
Private Sub Worksheet_Calculate() 
Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False 'should be part of Change macro 
    Application.EnableEvents = True 'should be part of Change macro 
Private Sub Worksheet_Deactivate() 
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Worksheet_Activate为你工作?

+0

是的,这是正确的事件。我只是把它放在了错误的地方。感谢您提供这些信息! –

+0

非常好,很高兴有帮助! – jordanhill123

1

您需要在工作表中激活事件 - 也就是说,如果您将它放在工作表2中,它将仅在打开工作表时触发。 这工作在我的工作簿的工作表2。 Sub worksheet_activate() MsgBox“activated!” End Sub

2

无论何时在工作簿中更改工作表时,您都可以在“ThisWorkbook”模块中使用以下内容来启动消息。

Sub Workbook_SheetActivate(ByVal Sh As Object) 
    MsgBox Sh.Name & " activated!" 
End Sub 

这将解决这个问题,而无需添加Private Sub Worksheet_Activate()到每个工作表的代码模块。

相关问题