我正在寻找一个优雅的解决方案来触发打开工作簿的事件以及打开不同的工作表。我不需要为每个工作表单独操作:它们都触发相同的方法。
我知道我可以同时使用事件Workbook_Activate
/ Workbook_Open
和Workbook_SheetActivate
,但我不知道这是否是“官方方式”。也许有一种方法可以用一个事件做到这一点。
我还想知道在我放置代码的地方是否相关。我现在将所有代码都放在“ThisWorkbook”中,而不是“模块”......
答案 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。谢谢大家!