union all动态表_Excel VBA——动态显示图表

本文讲述将柱形图和折线图做成动态图表的方法。所谓动态是指鼠标点到哪个单元格,就显示活动单元格所在列或行的图表,其中折线图可以让数据点依次显示,使得整个图表不再死板,像变 了一样!在开始之前,需要先介绍VBA中的一个概念:事件

事件

VBA中的事件可以理解为一种触发开关,某些对象有对应的事件开关,一旦对象识别了事件动作,就会自动执行事件过程中的程序。比如,一旦打开某个工作簿,就怎么样,一旦工作表中单元格被更改,就怎么样,等等,都是一个事件。要写关于某个对象的事件过程,就必须打开该对象所在模块,并打开该模块的代码窗口进行程序编写。只有将事件过程写在对应的模块中,程序才能自动触发。在代码窗口的 列表框和  列表框中选择相应的对象和事件名称,完成选择后,代码窗口会自动生成事件过程的头部代码。当然,熟练后这两行代码也可以自己直接编写,但必须要保证和自动生成的完全一致。533278329acf3f43c634310cd367830f.png

图1  列表框

202674eec8b99315abd9599a68c012f4.png图2 列表框

示例数据源

表1 示例数据源

5a777695ad21430dc4ad2fc8a52728cc.png

动态柱形图

根据表1的示例数据源创建一个簇状柱形图表,在图表中动态显示活动单元格所在列的设计方案数据。代码分享
Option ExplicitPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)        '工作表单元选择改变触发的事件过程    Application.ScreenUpdating = False    Application.DisplayAlerts = False    Dim chtchart As ChartObject    Dim rngrange As Range, lngc As Long    Dim sourange As Range    Dim sngleft As Single, sngtop As Single    sngleft = Range("G5").Left    sngtop = Range("G5").Top       On Error Resume Next    Set rngrange = Application.Intersect(ActiveCell, Range("B1:F5"))        '判断活动单元格与数据区域是否有交集    If Not rngrange Is Nothing Then     '如果有交集,执行以下程序        lngc = ActiveCell.Column        '提取活动单元格所在列号        Set sourange = Application.Union(Range("A2:A5"), Range(Cells(2, lngc), Cells(5, lngc)))     '通过Union合并画图区域数据        ChartObjects.Delete     '删除已有图表        Set chtchart = ChartObjects.Add(sngleft, sngtop, 400, 250)      '新建图表        With chtchart.Chart            .SetSourceData Source:=sourange, PlotBy:=xlColumns            .ChartType = xlColumnClustered            .ApplyDataLabels            .HasTitle = True            .HasLegend = False            .ChartTitle.Text = Cells(1, lngc)            With .Axes(xlValue, xlPrimary)                .HasTitle = True                .AxisTitle.Text = "流量/L·min-1"                .AxisTitle.Font.Size = 12            End With        End With    End If    Set rngrange = Nothing    Set sourange = Nothing    Set chtchart = Nothing    Application.ScreenUpdating = True    Application.DisplayAlerts = TrueEnd Sub

运行效果

029d26403a4f11803be4de09c2d64ad2.gif

图3 动态柱形图

动态折线图

将折线图上的每个数据点动态显示出来,可以更加直观地感受数据的变化趋势。

代码分享

Option ExplicitPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)    Dim chtchart As ChartObject    Dim rngrange As Range, lngrow As Long    Dim sourange As Range    Dim sngleft As Single, sngtop As Single    Dim i As Integer    sngleft = Range("G5").Left    sngtop = Range("G5").Top        On Error Resume Next    ChartObjects.Delete    Set rngrange = Application.Intersect(ActiveCell, Range("A2:F5"))    If Not rngrange Is Nothing Then        lngrow = ActiveCell.Row        Set chtchart = ChartObjects.Add(sngleft, sngtop, 400, 250)        Set sourange = Application.Union(Range("B1:F1"), Range("B" & lngrow, "F" & lngrow))        With chtchart.Chart            .SetSourceData Source:=sourange, PlotBy:=xlRows            .ChartType = xlLine            .ApplyDataLabels            .HasTitle = True            .HasLegend = False            .ChartTitle.Text = Cells(lngrow, 1)            With .SeriesCollection(1)                .MarkerStyle = xlMarkerStyleCircle                .MarkerSize = 8            End With            With .Axes(xlValue, xlPrimary)                .HasTitle = True                .AxisTitle.Text = "流量/L·min-1"                .AxisTitle.Font.Size = 12            End With        End With        For i = 1 To 5            chtchart.Chart.SeriesCollection(1).Values = Range("B" & lngrow).Resize(1, i)            delay 0.5        Next    End If    Set rngrange = Nothing    Set sourange = Nothing    Set chtchart = NothingEnd Sub'delay过程定义Sub delay(t As Single)    Dim t1 As Single    t1 = Timer    Do        DoEvents    Loop While Timer - t1 < tEnd Sub

运行效果

bd629afbdd3beb23eaf6448e513f65b6.gif

图4 动态折线图

总结

本文分享了制作动态柱形图和动态折线图的方法。尽管看起来貌似高大上,其实只是在作图程序的基础上加入了数据区域的判断和更新,以及增加了一个延时函数来控制数据点依次显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xnio java_java基础篇---新I/O技术(NIO)

在JDK1.4以前&#xff0c;I/O输入输出处理&#xff0c;我们把它称为旧I/O处理&#xff0c;在JDK1.4开始&#xff0c;java提供了一系列改进的输入/输出新特性&#xff0c;这些功能被称为新I/O(NEW I/O)&#xff0c;新添了许多用于处理输入/输出的类&#xff0c;这些类都被放在ja…

picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片

前提&#xff1a;图片必须是.jpg或.bmp格式的图片。(一)将保存在电脑桌面上的图片显示在EasyX窗体中&#xff0c;图片路径为&#xff1a;C:甥敳獲Administrator.USER-20190823VFDesktop锤头镰刀旗.jpg。(二)程序代码&#xff1a;#include#includeint main(){initgraph(500,300)…

estemplate 导入MySQL_[数据库]es~通过ElasticsearchTemplate进行聚合操作

[数据库]es~通过ElasticsearchTemplate进行聚合操作02020-08-24 17:00:38聚合操作&#xff0c;我们可以对数据进行分组的求和&#xff0c;求数&#xff0c;最大值&#xff0c;最小值&#xff0c;或者其它的自定义的统计功能&#xff0c;es对聚合有着不错的支持&#xff0c;需要…

iis mysql版本切换_MySQL+PHP配置 Windows系统IIS版(转)

1、下载MySQL下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.1.html->Windows (x86, 32-bit), MSI Installer Essentials - Recommended(不包含文档)->No thanks, just start my download.(无需登录注册 直接下载)PHP下载地址&#xff1a;www.php.net->…

ping网关丢包_网络/摄像机丢包的原因分析

引文不少人在使用网络和监控摄像系统的时候都有遇到过数据丢包的情况&#xff0c;数据丢包的原因是多种多样的&#xff0c;以下就为大家介绍一下网络数据丢包的原因及摄像机丢包的原因。原因分析摄像机丢包的原因1&#xff1a;路由错误网络路径错误也会导致数据包不能到达目的主…

plantuml语法_PlantUML实践 | 思维导图

❝思维导图又叫心智导图&#xff0c;用于表达发散性思维的图形工具。❞语法使用一些运算符(如&#xff1a;&#xff0c;-&#xff0c;*)来决定图形方向。相同运算符数量则在同一级。运算符数量越多&#xff0c;层级越深。支持内置前缀图标标记&#xff0c;如旗帜图标。示例star…

prometheus连续查询_Prometheus 不完全避坑指南

原文发表于 我的个人博客&#xff0c;同步发表到我的知乎专栏 Prometheus 是一个开源监控系统&#xff0c;它本身已经成为了云原生中指标监控的事实标准&#xff0c;几乎所有 k8s 的核心组件以及其它云原生系统都以 Prometheus 的指标格式输出自己的运行时监控信息。我在工作中…

服务器是什么系统_服务器自愈路由系统、单线以及BGP多线的区别是什么?

你是否了解服务器自愈路由系统呢&#xff1f;你是否了解服务器单线路呢&#xff1f;你是否了解服务器BGP多线路呢&#xff1f;你是否知道它们之间有什么区别呢&#xff1f;本文主要分为两大块来讲&#xff1a;1.分别简单的介绍下服务器的自愈路由系统、服务器单线路和服务器BGP…

java api管理工具_一个能快速写出实体类的Api文档管理工具

今天各种MVC框架满天飞&#xff0c;大大降低了编码的难度&#xff0c;写实体类就没有办法回避的一件事了&#xff0c;花大把的时间去做一些重复而且繁琐的工作&#xff0c;实在不是一个优秀程序员的作风&#xff0c;所以多次查找和尝试后&#xff0c;找到一个工具类网站——Api…

recyclerview 分组_Android使用RecyclerView实现跨列分组

效果图&#xff1a;需求分析&#xff1a;如上图所示&#xff0c;这是一个展示年级及学期的界面。年级分为三组高中、初中和小学。因学期太多若按一个一个控件的写既繁琐又不够优雅&#xff0c;所以我采用 RecyclerView配合分组来实现效果。注意&#xff1a;我这边是使用一个 Re…

rtmp服务器_nginx+windwos 搭建 rtmp 流媒体服务器

喜欢就关注我们吧&#xff01;“ 写此篇文章属于笔者在开发项目中&#xff0c;对项目开发架构的一种选型&#xff0c;目前正在探索阿里云的视频直播服务和nginx自行搭建流媒体服务器&#xff0c;希望能选择最优的一种方案&#xff0c;进行开发。”以下是使用nginx自行搭建rtmp流…

r语言聚类分析_图说层次聚类分析原理和R语言实现

1、引言“物以类聚、人以群分”。但我们面对一群人或者一堆物的时候&#xff0c;我们都希望将他们分分类&#xff0c;分类之后&#xff0c;我们才能更加有针对性地采取措施&#xff0c;从而提高工作效率。如&#xff0c;我们将消费者分成若干类&#xff0c;有的是土豪、有的是工…

java web 导出word_JavaWeb Project使用FreeMaker导出Word文件

基本思路1. 导入freemaker2.3.jar2. 需要导出的Word模板3. 在Word内填入值的标签4. Word另存为xml(2003版本)5. Coding6. 导出Word文件具体操作1. Intellij IDEA > FIle > Project Structure > Libraries > ""(左下角) > OK导入Freemaker Jar2. Word模…

sql 除以_使用SQL分析游戏运营情况

数据来源&#xff1a;http://www.dcjingsai.com/common/cmpt/%E6%B8%B8%E6%88%8F%E7%8E%A9%E5%AE%B6%E4%BB%98%E8%B4%B9%E9%87%91%E9%A2%9D%E9%A2%84%E6%B5%8B%E5%A4%A7%E8%B5%9B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html游戏介绍&#xff1a;《野蛮时代》是一款SLG游戏。在…

好看的php验证码,一漂亮的PHP图片验证码实例

一、显示效果二、代码如下代码如下:/** Author fy*/$imgwidth 100; //图片宽度$imgheight 40; //图片高度$codelen 4; //验证码长度$fontsize 20; //字体大小$charset abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789;$font Fonts/segoesc.ttf;$imimagecreatetruecolor…

检测到目标服务器启用了trace方法_深度学习检测小目标常用方法

引言在深度学习目标检测中&#xff0c;特别是人脸检测中&#xff0c;小目标、小人脸的检测由于分辨率低&#xff0c;图片模糊&#xff0c;信息少&#xff0c;噪音多&#xff0c;所以一直是一个实际且常见的困难问题。不过在这几年的发展中&#xff0c;也涌现了一些提高小目标检…

php自定义能过滤器,过滤器与自定义过滤器的介绍

angularjs中的过滤器为了实现对于表达式结果的筛选、过滤、格式化&#xff0c;达到更好的表现效果。过滤器的语法&#xff1a;支持多重过滤和传参{{expression | 过滤器名称 : ‘参数’ | 过滤器名称2&#xff1a;‘参数’ }}方式&#xff1a;| -》 管道常用的过滤器&#xff1…

大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...

壹猫眼Top100电影数据分析概述从这一节开始&#xff0c;我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目。在这些实际的项目案例中&#xff0c;我们将会看到一个完整的数据分析流程&#xff1a;数据清理——数据分析——数据可视化(即数据解释)。最…

matlab广泛用于什么,目前,Matlab已成为世界上最受欢迎的科学和工程计算软件工具....

目前&#xff0c;Matlab已成为世界上最受欢迎的用于科学和工程计算的软件工具. 它是一种新型的计算机高级编程语言&#xff0c;具有广阔的应用前景. 有人将其称为“第四代”计算机语言. 就影响而言&#xff0c;仍然没有其他计算软件可与Matlab匹敌. Matlab简介Matlab于1984年发…

必须使用列别名命名此表达式_lambda表达式

一般的&#xff0c;如果一个类定义了函数调用运算符&#xff0c;则我们可以像使用函数一样使用这个类&#xff0c;例如&#xff1a;一个类A定义了函数调用运算符&#xff0c;我们就可以使用A()这样的形式调用对象&#xff0c;实际上调用了类的调用运算符函数。如果一个类定义了…