打开工作簿时运行宏

时间:2018-11-29 17:54:30

标签: excel vba

我已经做了搜索。最相关的建议宏名称为“ 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  

2 个答案:

答案 0 :(得分:4)

在Visual Basic编辑器(VBE)中,打开 Project Explorer (Ctrl + R),然后双击ThisWorkbook模块(或右键单击它并选择“查看代码”):

ThisWorkbook in the VBE's Project Explorer

这将显示ThisWorkbook模块的代码隐藏ThisWorkbook代表托管VBA项目的工作簿;这是一种特殊的模块类型,它继承了Excel.Workbook类的所有成员,这些成员可以表示任何 Excel工作簿。

在代码窗格的顶部,您会注意到两个下拉列表:

code pane

从左侧的下拉菜单中选择Workbook; VBE会自动为Open事件生成一个事件处理程序过程:

Workbook_Open() procedure created

请注意,右侧的下拉菜单现在显示Open-如果单击该下拉列表,则会发现它列出了Workbook可以处理的每个事件;选择一个将自动生成具有正确签名/原型的方法。

现在获取您的代码并将其放入该事件处理程序过程中,保存-这样您就设置好了!下次在启用宏的情况下打开工作簿时,该事件处理程序将被调用,您的宏将运行。

玩得开心!学习永远不会太晚!

答案 1 :(得分:1)

除了Mathieu的答案,还有另一种在打开工作簿时运行代码的方式:您可以在标准模块中创建Auto_Open过程。 警告!可以在下一版本的Office中删除此功能,但是它仍然有效!

在标准模块中:

Sub Auto_Open()
    ' Your code
End Sub

以相同的方式,您可以使用Auto_Close过程而不是BeforeClose事件处理程序。