创建一个新工作表并自动将事件插入其中

时间:2015-11-27 14:46:00

标签: vba excel-vba events excel

我有一个问题,如果我想做的事情是可能的。

我有一个工作簿和一个宏,可以在该工作簿中创建新的工作表。 但我需要这些工作表内部有一个事件(停用工作表)。

示例:我的宏创建了名为" 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

2 个答案:

答案 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