首页 > 解决方案 > 我是否必须创建一个类来处理应用程序级事件?

问题描述

这篇关于“将事件与应用程序对象一起使用”的文章指出:

在您可以对Application对象使用事件之前,您必须创建一个类模块并声明一个带有事件的Application类型的对象。

ThisWorkbooks 模块的工作簿中,我有以下代码

Option Explicit

Private WithEvents App As Excel.Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_SomeEvent()
    'This event fires without problems
End Sub

据我测试,代码没有问题。然而,上面提到的文章让我想到:

我知道ThisWorkbook是一个类模块,与工作表模块相同,但我真的可以将它们用于此目的吗?
在不创建新的类模块时我有什么要记住的,或者我必须创建一个类模块的文章是错误的?

标签: excelvbaevent-handling

解决方案


完全可以让 ThisWorkbook 模块处理应用程序事件。

如果有的话,你需要记住的是它违反了单一责任原则。处理应用程序事件不是工作簿的责任。创建一个专门的类来处理特定目的的应用程序事件可能有助于保持架构的整洁。

但是,从功能本身的角度来看,没有问题。


推荐阅读