VBA教程:不要控件、不要辅助列的纯VBA动态图表 2024-03-19 13:06:37 哈喽,大家好,提到动态图表大家的第一反应是什么呢?可能是辅助列 公式,可能是数据透视表 切片器,可能是辅助列 控件,今天的过儿教大家用纯VBA编程做出来动态的可视化图表。先跟过儿一睹为快,然后开讲: 是不是很神奇?伙伴们学会了这篇以后做动态图表就可以多一种方法,并且只要将本篇文章的代码拿去套用改几个参数就可以啦,一劳永逸。来看一下完整的代码Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim mychartobject As ChartObject, ws As Worksheet, row As LongSet ws = Sheet1row = Target.rowIf row < 11 And row > 2 ThenIf ws.ChartObjects.Count = 0 ThenSet mychartobject = ws.ChartObjects.Add(80, 240, 300, 200)ElseSet mychartobject = ws.ChartObjects(1)End IfWith mychartobject.Chart.ChartType = xlLine.SetSourceData Source:=Range(ws.Cells(row, 3), ws.Cells(row, 13)).HasTitle = True.ChartTitle.Text = ws.Cells(row, 2)End WithEnd IfEnd Sub代码解析:来跟我捋一下代码的思路,我们首先确定一个目标效果:“我们希望在鼠标点击数据的时候,可以自动生成鼠标点击的那一行的数据对应的图表,这是一个“选择即产生”的事件”。 所以我们应该将代码用在VBA的表“事件”中,所以需要在我们的数据源表也就是sheet1对应的编辑模块中进行操作。进入VBA编辑器选择sheet1模块,然后选择上面的selectionchange事件,也就是鼠标只要选择发生变化就会运行代码的意思。接下来我们需要在中间编辑过程代码。过程代码:第2行代码定义一个工作表对象,一个long对象,还有一个图表的对象,也就是Chartobject关于Chartobject对象:Chartobject对象代表工作表中的一个图表,一个工作表的任何一个图表就是一个Chartobject,所有这些图表在一起就是worksheet.Chartobjectsworksheet.Chartobjects的属性有 Chartobjects.Count Chartobjects.(K) Chartobjects.(Delete) 第3行sheet1赋值到ws这个变量中,第4行解释两个地方,第一,Target这个词上面出现过一次,在第一行事件语句中,意思就是我们用鼠标选择的单元格。那么Target.row就表示当前选择的行的行号。然后将当前行的行号赋值给到row这个变量中 第5行代码是锁定有效区域,我们希望鼠标只在选中第2到10行时才会生成图表 所以我们加了if判断第6行到第8行代码表示,如果当前工作表中的图表是0,也就是没有图表那么在该工作表中新增一个图表,该图表左边距离工作表最左边,最上面分别是80和240个像素。该图表宽300个像素,高200个像素 然后将此图表的对象赋值到mychartobject中。第9行代码将这张工作表的第一张图表也就是我们刚刚创建的这张图表赋予到mychartobject这个变量中 第11行到第16行代码,对这个图表进行一些属性的设置。其中:第11行代码设置mychartobject对象的chart属性(也是一个对象),使之显示该行数据趋势。mychartobject.Chart的各个子属性,才是用于设置图表的各种信息。 第12行设置图表类型是折线图。 xlLine就是折线图,其他常用的的图表类型有:饼图:xlPie;条形图:xlBarClustered;面积图:xlArea;散点图:xlXYScatter;柱形图:xlColumnClustered第13行设置图表关联的数据区域,行我们在上面已经有变量表示了就是row并且对row进行了判断,将其限定在3至10行 因此此句就将图表数据区域动态的变化成为我们鼠标选择的那一行(仅限鼠标点在数据区域时,数据区域外图表无反应)第14行到第15行分别是激活图表标题然后命名图表标题 到此我们的代码逻辑已经解释完毕大家快快试试吧,这段代码小伙伴们可以保存以备不时之需哦 赞 (0) 相关推荐 逆透视:二维表转一维表!你可能会用到! 你好,我是刘卓.欢迎来到我的公号,excel函数解析.逆透视是power query中的功能,非常的好用,可以将表头的信息转化到记录中,常用的就是将二维表转为一维表.今天就来分享下如何用函数做出逆透视 ... 多工作表一对多查询 如下图所示,有6个月的销售数据分别保存在不同的工作表中.现在的要求是将这6个月中销量大于等于10000的数据全部查询出来,并存放在[多表查询]这个工作表中.结果如动图所示. 像这种问题,用函数做就比较 ... 【新提醒】VBA之Listbox控件基础教程 2.3.Listbox如何显示"标题" 要是Listbox中的列很多,用户就很难搞清楚该列到底是什么数据,这时还得有必要加个标题.上面说了,使用了List属性,就没法使用标题了,只 ... Excel VBA窗体控件教程,单击事件超链接,图片预览案例完善 Excel VBA窗体控件教程,单击事件超链接,图片预览案例完善 不会VBA,你也可以玩这样的控件筛选——数据透视表切片器 哇,如此高大上的动态图表,是不是一定得用VBA才能实现呀?也许你会说我不会VBA啊.别怕,不用VBA,用Excel简单易用的数据透视表就可以实现,操作步骤如下: Step1:原始表格有产品名称.季度. ... VBA遍历函数、超链接与控件运用 这段时间看了点python方面的东西,据说是种比vba更容易上手的语言,于是下载了python然后鼓捣鼓捣,然而最大的困扰是不知道它能干什么?网抓什么?认知限制了想象力. 整理是种态度,当电脑桌面堆满 ... Excel VBA 7.46字典+数字+窗体控件,跨工作表实现COUNTIF的功能 一起学习,一起进步~~ 之前我们分享过一篇文章,就是通过字典+数组的方式来实现跨工作表求和的,在那一节的学习中,我们实现了count函数的跨工作表的一个求和的效果,后面有小伙伴表示,他碰到的场景不仅仅 ... 梦想CAD控件点击事件教程 下面演示使用MxDraw云图编辑模式,在图上点击一个文字对象,然后得到文字内容,弹出文件内容提示窗口. 1.修改后台程序,增加一个函数,得到一个点的文字对象 (1)使用VSCODE打开安装目录Bin\ ... VBA专题10-22:使用VBA操控Excel界面之重新利用内置控件以及监控内置控件 excelperfect 重新利用内置控件 通过使用command元素及其onAction属性,可以临时或永久地覆盖内置控件的功能. 例如,下面的示例XML代码重新利用了"剪切"和 ... VBA专题10-21:使用VBA操控Excel界面之禁用和启用控件、组和选项卡 excelperfect 内置控件 通过分别使用enabled属性和getEnabled属性,可以在设计时永久地或者在运行时动态地禁用(和启用)内置控件.被禁用的控件在功能区中显示的是灰色. 例如,下 ... VBA专题10-20:使用VBA操控Excel界面之隐藏和取消隐藏控件、组和选项卡 excelperfect 内置控件(不被允许) 不能够单独隐藏内置组中的内置控件.然而,可以隐藏内置组,因此会隐藏该组中的所有控件.可以单独禁用(和启用)组中的控件. 下表中的command元素的可用 ...