嵌入式图表事件在Excel中使用VBA
特别是图表工作表中)非常简单。但是,在嵌入式图表上使用事件时,并不是那么简单。但我向您保证,嵌入图表的事件并不难激活。它非常类似于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
我们的工作到此完成。您可以在此处从图表类型的可用事件中创建任意数量的事件。但是这些事件还无法进行,因为它只是一堂课。我们需要在任何普通模块或对象模块的子类中创建此类的对象。然后运行该子。
之后,我们的活动将开始进行。
步骤2:在模块中创建Chart类对象。
-
插入普通模块。
-
声明您之前创建的类的变量。
Dim mychart As ChartClass
-
创建一个子类,并使用ChartClass类的对象初始化变量。
Sub activateChartEvent() Set mychart = New ChartClass End Sub
使用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
每次打开工作簿时启动“ Custome Chart”事件如果您正在为最终用户开发工具,则可能希望事件自动运行。在这种情况下,您可以将事件启动器与Workbook_open()事件一起放在`link:/ events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbook object]`中,而不是普通模块。一旦打开包含事件的工作簿,这将使事件对象初始化。
好的,这就是您如何在excel中使用嵌入式图表事件的方式。
让我知道这是否足够说明,并帮助您了解Excel VBA中的应用程序级事件。在下面的评论部分写下您的想法。如果您要添加一些内容,也要写下来。您可以在下面的评论部分中询问与本文或任何其他与excel VBA相关的其他主题的问题。
下载以下工作文件:
相关文章:
`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函数]
|这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。