我想要完成的事情相当简单。当用户选择工作表时,我希望显示一个消息框。含义:我正在查看Sheet1,我点击Sheet2选项卡,然后弹出一条消息,然后才能执行任何操作。我似乎无法找到移动到另一张纸时发生的事件。
我尝试过的事件:Workbook_SheetActivate
和Worksheet_Activate
Private Sub Workbook_SheetActivate(ByVal sh As Object)
MsgBox ("Example Message")
End Sub
或者
Private Sub Worksheet_Activate()
MsgBox ("Example Message")
End Sub
我已经完成了一些谷歌搜索,大多数情况都与细胞值变化或细胞选择发生变化有关。
答案 0 :(得分:2)
这应该有效:
Private Sub Worksheet_Activate()
MsgBox "you never visit...you never call....you never write"
End Sub
然而:
答案 1 :(得分:2)
您可以在“ThisWorkbook”模块中使用以下内容,以便在更改工作簿中的工作表时触发消息。
Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name & " activated!"
End Sub
这样就可以解决问题,而无需在每个工作表的代码模块中添加Private Sub Worksheet_Activate()
。
答案 2 :(得分: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
不适合你?
答案 3 :(得分:1)
您需要在工作表中激活该事件 - 也就是说,如果您将其设置为工作表2,则只有在打开该工作表时才会触发该事件。 这在我的工作簿的第2页中有效。 Sub worksheet_activate() MsgBox“激活了!” 结束子