应用程序级事件适用于整个应用程序(本参考中的Excel)。但是激活应用程序事件并不像创建工作簿或工作表事件那样容易。但我向您保证,它也不是那么棘手。在本文中,我们将通过几个简单的步骤来学习如何在Excel VBA中创建和使用应用程序事件。

步骤1:在类模块中创建事件对象

要创建事件对象,我们需要使用类模块。

  • 插入`link:/ modules-class-modules-vba-vba-class-modules-and-to-to-to-to-them [class module]`。根据需要命名。我将其命名为MyAppEvents。

  • 使用关键字WithEvents定义应用程序类型的事件变量。

Private WithEvents myApp As Application
  • 在class_initialize()子例程中初始化此事件。

在左侧的下拉菜单中,选择课程。然后,在右上角的下拉列表中,选择“初始化”。

image

Private Sub Class_Initialize()

Set myApp = Application

End Sub
  • 现在定义您要使用的事件。从左上角的下拉列表中,选择事件对象。您可以在右上角的下拉菜单中使用所有可用的事件处理过程。选择该事件触发时所需的条件并定义要执行的操作。图像:https://www.office-skill.site/images/wp-content-uploads-2020-01-Capture-37.jpg [image,宽度= 540,高度= 208]

我使用SheetActivate事件。每当用户在任何打开的工作簿的工作表之间切换时,都会显示工作簿的名称和工作表用户已选择。

Private Sub myApp_SheetActivate(ByVal Sh As Object)

MsgBox ActiveWorkbook.Name & "-" & Sh.Name

End Sub

您可以在此处定义任意多个事件。

image

这些事件不会立即开始。这是第一步。

由于它是一个类模块,因此我们需要创建一个对象来激活事件。

现在,我们只需要从常规子例程开始这些事件。

步骤2:在普通模块中创建事件启动子例程

现在我们有一个事件类。我们只需要创建该类的对象并对其进行初始化。一旦运行此子例程,事件类中的所有已定义事件将开始工作。

image

  • 插入普通模块。

  • 定义您创建的类的变量。

Private AppE As MyAppEvents
  • 在子例程中对其进行初始化。您可以根据需要命名。

Private Sub StartEvents()

Set AppE = New MyAppEvents

End Sub

  • 使用F5键运行此代码。 (可选)如果要从工作表启动事件,则可以将此宏分配给工作表上的按钮。

完成了。现在,只要打开包含工作簿的代码,只要您切换工作表,就会出现一个消息框,其中包含工作簿和工作表的名称。

image

很难吗?我不这么认为。在下面的评论部分中告诉我您的想法。

开启和关闭VBA应用程序事件在常规模块中运行宏后,它将始终触发,直到关闭包含事件的工作簿。但您可能希望他们随意打开和关闭它们。有两种方法可以做到这一点。

无效事件对象将EnableEvents设置为False

1.无效事件对象

在单独的子例程中,将事件对象设置为Nothing

Private Sub StopEvents()

Set AppE = Nothing

End Sub

一旦运行此代码,事件将停止工作。您可以将其放在工作表上的按钮中以停止事件。现在,您将有两个按钮可以启动和停止这些特定事件。它只会停止由AppE对象创建的事件。

2.将EnableEvents设置为False

第二种方法是禁用事件。为了使所有事件均不可捕获,我们将Application类的EnableEvents属性设置为

错误。

Private Sub StopEvents()

Application.EnableEvents= False

End Sub

上面的代码将禁用所有事件。即使是默认的excel事件。在您再次启动它们之前,它们将不起作用。即使您运行StartEvents()子例程(如上),该事件也不起作用。要使所有事件再次起作用,您将不得不再次将EnableEvents属性设置为True。

因此,如果您希望事件在每次启动事件时都起作用,请在子代码中添加以下代码行。

Private Sub StartEvents()

Application.EnableEvents = True

Set AppE = New MyAppEvents

End Sub

image

好的,这就是您如何在excel中使用应用程序事件的方式。让我知道这是否足以说明问题,并在下面的评论部分中帮助您了解Excel VBA中的应用程序级事件。如果您要添加一些内容,也要写下来。您可以在下面的评论部分中询问与本文或与其他任何excel VBA相关的主题的问题。

下载以下工作文件:

image 48

相关文章:

Excel VBA中的事件 | Excel中有七种类型的事件。每个事件涉及不同的范围。应用程序事件在工作簿级别处理。在工作表级别上的工作簿。范围级别的工作表事件。

`link:/ events-in-vba-the-worksheet-events-in-excel-vba [Excel VBA中的工作表事件] ** |当您希望在指定事件发生时运行宏时,工作表事件非常有用工作表。

在Microsoft Excel中使用VBA的工作簿事件 ||工作簿事件适用于整个工作簿。由于所有工作表都是工作簿的一部分,因此这些事件也适用于工作表。

防止自动宏/ eventmacro在Microsoft Excel中使用VBA执行] * |为防止运行auto_open宏,请使用shift键。

在Microsoft Excel中使用VBA绘制对象事件 **图表是复杂的对象,您已附加了几个组件。为了制作图表事件,我们使用类模块。

热门文章:

`link:/ keyboard-formula-shortcuts-50-excel-shortcuts可提高您的生产率[50 Excel快捷方式可提高生产率]] |更快地完成任务。这50个快捷键将使您在Excel上的工作更加快捷。

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]|这是excel中最常用和最受欢迎的功能之一,用于从不同范围和工作表中查找值。

link:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]|使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

link:/ excel-formula-and-function-excel-sumif-function [如何在Excel中使用SUMIF函数]|这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。