2

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

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

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

4

2 回答 2

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

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

于 2012-11-23T20:37:44.790 回答
0

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

于 2012-12-01T01:10:55.213 回答