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

我做了一些谷歌搜索,大多数事情都是关于单元格值何时更改或单元格选择更改。

4

4 回答 4

2

每当您更改工作簿中的工作表时,您可以在“ThisWorkbook”模块中使用以下内容来触发消息。

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

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

于 2013-10-20T00:53:54.477 回答
2

这应该有效:

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

然而:

  • 代码必须在工作表代码区域
  • 必须启用宏
  • 必须启用事件
于 2013-10-19T22:57:24.357 回答
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适合你吗?

于 2013-10-19T22:58:37.557 回答
1

您需要在正在激活的工作表中拥有该事件 - 也就是说,如果您将它放在工作表 2 中,它只会在该工作表打开时触发。这在我的工作簿的第 2 页中有效。Sub worksheet_activate() MsgBox "已激活!" 结束子

于 2013-10-19T23:09:41.087 回答