我正在寻找一种优雅的解决方案来触发打开工作簿以及打开不同工作表的事件。我不需要为每个工作表单独操作:它们都触发相同的方法。
我知道我可以同时使用事件Workbook_Activate
/ Workbook_Open
, Workbook_SheetActivate
但我不知道这是否是“官方方式”。也许有一种方法可以通过一个事件来做到这一点。
我还想知道在我放置代码的地方是否与此事相关。我现在在“ThisWorkbook”中拥有所有代码,而不是在“模块”中......
这是我不久前开发的一些代码,以确保我的经理使用的报告始终根据一天中的时间打开到正确的选项卡。我将此代码存放在我的 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 自动签署表单输出并更新日期和时间。我希望这有帮助。
就像其他人提到的那样:没有单一的事件可以做到这一点。可能有解决方法,但在这种情况下,我更喜欢只使用 _Open 和 _SheetActive。感谢大家!