我已经做了搜索。最相关的建议宏名称为“ workbook_open” 但是我仍然必须手动调用该模块。这是我编写的代码。 (欢迎提出任何其他建议,因为这是我的第一个vba脚本-73岁)
Sub Workbook_Open()
Dim lastRow As Long 'last row with data
Dim thisDate As Double 'start timestamp
thisDate = Now()
With Sheets("Pressure Log")
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row 'populate next row with date/time
Range("B" & lastRow).Offset(1) = Format(thisDate, "dddd")
Range("B" & lastRow).Offset(1, 1) = Format(thisDate, "mm/dd/yyyy")
Range("B" & lastRow).Offset(1, 2) = Format(thisDate, "hh:mm AM/PM")
Range("B" & lastRow).Offset(1, 3).Select 'position for user data
End With
End Sub
答案 0 :(得分:4)
在Visual Basic编辑器(VBE)中,打开 Project Explorer (Ctrl + R),然后双击ThisWorkbook
模块(或右键单击它并选择“查看代码”):
这将显示ThisWorkbook
模块的代码隐藏。 ThisWorkbook
代表托管VBA项目的工作簿;这是一种特殊的模块类型,它继承了Excel.Workbook
类的所有成员,这些成员可以表示任何 Excel工作簿。
在代码窗格的顶部,您会注意到两个下拉列表:
从左侧的下拉菜单中选择Workbook
; VBE会自动为Open
事件生成一个事件处理程序过程:
请注意,右侧的下拉菜单现在显示Open
-如果单击该下拉列表,则会发现它列出了Workbook
可以处理的每个事件;选择一个将自动生成具有正确签名/原型的方法。
现在获取您的代码并将其放入该事件处理程序过程中,保存-这样您就设置好了!下次在启用宏的情况下打开工作簿时,该事件处理程序将被调用,您的宏将运行。
玩得开心!学习永远不会太晚!
答案 1 :(得分:1)
除了Mathieu的答案,还有另一种在打开工作簿时运行代码的方式:您可以在标准模块中创建Auto_Open
过程。 警告!可以在下一版本的Office中删除此功能,但是它仍然有效!
在标准模块中:
Sub Auto_Open()
' Your code
End Sub
以相同的方式,您可以使用Auto_Close
过程而不是BeforeClose
事件处理程序。