打开工作簿和工作表的事件

时间:2012-11-12 23:21:26

标签: excel vba excel-vba

我正在寻找一个优雅的解决方案来触发打开工作簿的事件以及打开不同的工作表。我不需要为每个工作表单独操作:它们都触发相同的方法。

我知道我可以同时使用事件Workbook_Activate / Workbook_OpenWorkbook_SheetActivate,但我不知道这是否是“官方方式”。也许有一种方法可以用一个事件做到这一点。

我还想知道在我放置代码的地方是否相关。我现在将所有代码都放在“ThisWorkbook”中,而不是“模块”......

2 个答案:

答案 0 :(得分:1)

这是我前一段时间开发的一些代码,用于确保我的经理使用的报告始终根据时间打开到正确的选项卡。我将此代码存放在我的VBA的“ThisWorkbook”模块中。

Sub Workbook_Open()

'   Set The Office
Dim begin As String
Dim myNum As String
Dim myNum1 As String
Dim TheDate As String

'   Set Date
    TheDate = Format(DateTime.Now(), "mm-dd-yy")
    Sheets("MORNING").Range("H3").Value = TheDate
    Sheets("AFTERNOON").Range("G3").Value = TheDate
    'Sheets("EVENING").Range("G3").Value = TheDate

'   Select Sheet Based on Time of Day
    If Time >= 0.1 And Time < 0.5 Then
    Sheets("MORNING").Select
    Range("A53").Value = "Report completed by:"
    Range("C53").Value = Application.UserName
    Range("I53").Value = Date & " " & Time
    Range("B27").Select
    Call Populate 'Your next code
        ElseIf Time >= 0.5 And Time < 0.75 Then
        Sheets("AFTERNOON").Select
        Range("A54").Value = "Report completed by:"
        Range("C54").Value = Application.UserName
        Range("I54").Value = Date & " " & Time
        Range("C28").Select
        Call Populate 'Your next code

    End If

End Sub

请注意,我还添加了代码,使用userid自动签署表单输出并更新日期和时间。我希望这会有所帮助。

答案 1 :(得分:0)

就像其他人提到的那样:没有一件事可以做到这一点。可能有解决方法,但我更喜欢在这种情况下使用_Open和_SheetActive。谢谢大家!