特别是图表工作表中)非常简单。但是,在嵌入式图表上使用事件时,并不是那么简单。但我向您保证,嵌入图表的事件并不难激活。它非常类似于link:/ vba中的事件如何创建应用程序级别的事件,excel-vba中的[创建应用程序事件]“。因此,现在就开始吧。

因此,有两个步骤可以激活嵌入式图表事件。首先是创建图表事件类并定义事件。其次是创建该事件类的对象。而已。

步骤1:创建图表事件类并定义事件

class module。根据需要命名。我将其命名为ChartClass。

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

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

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

Private Sub Class_Initialize()

Set CEvents = ActiveSheet.ChartObjects(1).Chart

End Sub

在这里,我们使用在工作表上创建的第一个图表来初始化CEvents图表。 1是活动工作表上图表对象的索引号。

  • 现在定义您要使用的事件。从左上角的下拉列表中,选择CEvent对象。您可以在右上角的下拉菜单中使用所有可用的事件处理过程。选择所需的内容并定义该事件触发时要执行的操作。

为了演示其用法,我选择了CEvents_Activate事件。我将尝试向用户显示在msg框中激活了图表事件。

Private Sub CEvents_Activate()

MsgBox "The chart Events are working"

End Sub

我们的工作到此完成。您可以在此处从图表类型的可用事件中创建任意数量的事件。但是这些事件还无法进行,因为它只是一堂课。我们需要在任何普通模块或对象模块的子类中创建此类的对象。然后运行该子。

之后,我们的活动将开始进行。

image

步骤2:在模块中创建Chart类对象。

  • 插入普通模块。

  • 声明您之前创建的类的变量。

Dim mychart As ChartClass
  • 创建一个子类,并使用ChartClass类的对象初始化变量。

Sub activateChartEvent()

Set mychart = New ChartClass

End Sub

image

使用F5运行此子程序。在运行此代码时,图表事件将在当前活动工作表上的第一张图表上处于活动状态,因为我们使用此行来初始化图表eventSet CEvents = ActiveSheet.ChartObjects(1).Chart。*这样就完成了。现在,如果您单击当前活动工作表上的第一个图表,它将显示消息“图表事件正在运行”。

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

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

1.无效事件对象

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

Private Sub StopEvents()

Set Mychart= Nothing

End Sub

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

2.将EnableEvents设置为False

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

Private Sub StopEvents()

Application.EnableEvents= False

End Sub

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

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

Private Sub StartEvents()

Application.EnableEvents = True

Set mychart = New ChartClass

End Sub

image

好的,这就是您如何在excel中使用嵌入式图表事件的方式。

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

下载以下工作文件:

image 48

相关文章:

`link:/ events-in-vba-the-events-in-excel-vba [Excel VBA中的事件] || * Excel中有七种事件。每个事件涉及不同的范围。应用程序事件在工作簿级别处理。在工作表级别上的工作簿。范围级别的工作表事件。

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

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

`link:/ events-in-vba-prevent-a-automacroeventmacro-executes-using-vba-in-microsoft-excel [防止使用automacro / 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函数]|这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。