我有一个问题,如果我想做的事情是可能的。
我有一个工作簿和一个宏,可以在该工作簿中创建新的工作表。 但我需要这些工作表内部有一个事件(停用工作表)。
示例:我的宏创建了名为" Resources_1"," Resources_2"," Resources_3" (它可以在以后创建更多的工作表)。每个工作表都有一个事件Worksheet_Deactivate和一行代码。
也许你们中的任何一个人都知道如何做到这一点?如果有可能吗?
编辑:
正如rory建议的那样,我已经尝试制作了一个练习册级别的活动,但它并没有奏效。在停用任何工作表(除了其中4个)之外,我想隐藏它。
我的代码在' ThisWorkbook'模块:
Public wsEvent As Worksheet
Private Sub Worksheet_Activate()
If wsEvent.Name <> "General" And wsEvent.Name <> "Projects" <> wsEvent.Name <> "Resources" And wsEvent.Name <> "ResourcesProjects" Then
Set wsEvent = ActiveSheet
End If
End Sub
Private Sub Worksheet_Deactivate()
If wsEvent.Name <> "General" And wsEvent.Name <> "Projects" <> wsEvent.Name <> "Resources" And wsEvent.Name <> "ResourcesProjects" Then
wsEvent.Visible = xlSheetHidden
End If
End Sub
答案 0 :(得分:1)
我同意Rory和Doug的评论。虽然我倾向于Rory实际上是我经常使用的那个,但维护的代码更少。
来自http://www.cpearson.com/excel/vbe.aspx的这篇文章解释了如何实现您的需求,搜索关键词“创建事件过程”
我希望这会有所帮助:)
答案 1 :(得分:1)
ThisWorkbook
模块中您需要的只是:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Select Case LCase$(Sh.Name)
Case "general", "projects", "resources", "resourcesprojects"
' skip
Case Else
Sh.Visible = xlSheetHidden
End Select
End Sub