跳到主要内容

使用 Application 级别事件

如果希望在 Excel 中使用 Application 级别的事件过程,则需要在某个类模块中声明一个带事件驱动的 Application 类型对象。在 Excel 中,该类型对象可以在标准的类模块中声明,也可以在 Workbook、Worksheet 或 UserForm 等代码窗口中声明。

示例:修改新建工作簿的工作表的默认名称

新建工作簿的工作表的默认名称为“Sheet+索引号”的形式,本示例将其名称自动地更改为“果果云课堂+索引号”的形式。步骤如下:

添加声明

ThisWorkbook 代码窗口输入下面的语句,声明一个 xlApp 对象。

'------------------ ThisWorkbook ------------------
Private WithEvents xlApp As Application

选择事件过程

添加了声明后,在 ThisWorkbook 代码窗口的【对象】列表中可以看到刚才声明的 xlApp 对象已经出现在对象列表中,在对象列表中选择 xlApp 对象后,在代码窗口的【事件】列表中列出了该对象的事件,本示例由于是要修改新建工作簿的工作表的默认名称,这里选择 NewWorkbook 事件,选择好事件后,代码窗口自动输入事件的框架,我们只需添加代码即可,完整代码如下:

'------------------ ThisWorkbook ------------------
Private Sub xlApp_NewWorkbook(ByVal Wb As Workbook)
    Dim i As Integer
    For i = 1 To Wb.Sheets.Count
        Wb.Sheets(i).Name = "果果云课堂" & i
    Next
End Sub

xlApp_NewWorkbook 事件过程在新建工作簿时,将工作簿中所有的工作表的名称修改为“果果云课堂+索引号”的形式。

建立对象关联

在完成上面的操作之后,还必须建立对象关联。为了保证每次都能自动执行代码,可以将关联代码输入到工作簿的 Workbook_Open 事件中。

'------------------ ThisWorkbook ------------------
Private Sub Workbook_Open()
    Set xlApp = Application
End Sub

释放对象

最后在工作簿的 BeforeClose 事件中添加释放对象的代码。

'------------------ ThisWorkbook ------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set xlApp = Nothing
End Sub

保存工作簿

保存并关闭该工作簿后再重新打开示例文件(也可以在 VBE 窗口内,将光标放于 Workbook_Open 事件内,按 F5 键运行。),这时我们再新建一个工作簿,我们可以看到新工作簿中的工作表的默认名称已更改。

示例:禁止新建工作簿

将上述示例的 xlApp_NewWorkbook 事件代码更改为下列代码,其它代码不变,即可实现禁止新建工作簿的目的。

'------------------ ThisWorkbook ------------------
Private Sub xlApp_NewWorkbook(ByVal Wb As Workbook)
    Wb.Close False
End Sub

示例:禁止重命名工作表

更多的示例请参考:在 Excel 中重命名工作表事件

评论

您的电子邮件地址不会显示出来。*号为必填项。