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…

python函数返回none_Python 函数默认返回None的原因

Python 函数默认返回None是什么原因&#xff1f;定义的函数没有返回值&#xff0c;Python 解释器就会强行地默认给注入一段返回逻辑&#xff01;实际上 Python 中有很多行为都是隐性的。Python 有一项默认的做法&#xff0c;很多编程语言都没有&#xff0c;所有函数都会有一个返…

简易计算器 java_用Java做一个简易计算器,要用到哪些知识?

分析问题关键词&#xff1a;Java、计算器深夜无聊&#xff0c;暂且一答。计算器分两个步骤&#xff1a;计算 器篇一 「器」在编程中&#xff0c;我们可以把「器」理解为「GUI(图形界面)」&#xff0c;Java 语言描绘的图形界面有很多种类&#xff0c;比如 awt、swing、javaFX 等…

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;路由错误网络路径错误也会导致数据包不能到达目的主…

java aes 填充_Java中的Aes解密 – 填充问题

我更改了一些代码行,以保证大文件的加密.现在我遇到了问题,解密不起作用.我收到以下错误消息/异常&#xff1a;Error encrypting/decrypting fileat Algorithmus.Encryptor.doCrypto(Encryptor.java:71)at Algorithmus.Encryptor.decrypt(Encryptor.java:39)at GUI.MainWindow$…

plantuml语法_PlantUML实践 | 思维导图

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

Java常用API例子_Java常用API及Math类

一、API的概述API——Application Programing Interface:应用程序编程接口&#xff0c;是java提供的一些预定义的函数&#xff1b;目的&#xff1a;基于API实现程序的快速编写&#xff0c;只需了解其作用&#xff0c;不用关注源代码。学习API的方法&#xff1a;先了解API的概况…

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

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

java猜字母讲解_java_猜字母游戏

java猜字母游戏猜字母游戏&#xff1a;用户指定游戏难度(5、7、9)&#xff0c;程序生成随机不重复字母。用户猜错&#xff0c;提示用户对的字母数量和对的位置数量。import java.util.Scanner;public class GuessWord {public static void main(String[] args) {Scanner scanne…

list java removeif_java – removeIf()方法.从List中删除所有元素

我有一个用户列表,我想从我的列表中删除id为其实我这样做&#xff1a;[...]int pid1 1;int pid2 2;int pid3 3;Predicate personPredicate1 p-> p.getPid() pid1;Predicate personPredicate2 p-> p.getPid() pid2;Predicate personPredicate3 p-> p.getPid() …

服务器是什么系统_服务器自愈路由系统、单线以及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流…

java rest风格传参_SpringMVC的REST风格的四种请求方式总结

一、 在HTTP 协议里面&#xff0c;四个表示操作方式的动词&#xff1a;GET、POST、PUT、DELETE。它们分别对应四种基本操作&#xff1a;1、GET 获 取资源2、POST 新建资源3、PUT 更新资源4、DELETE 删除资源二、REST&#xff1a;即 Representational State Transfer。(资源)表…

java语言编写进制转换_Java 3种方法实现进制转换

由其他进制转换为十进制比较简单&#xff0c;下面着重谈一谈十进制如何化为其他进制。1.使用Java带有的方法Integer&#xff0c;最简单粗暴了&#xff0c;代码如下//使用java提供的方法//但仅局限于比较常用的二进制、八进制、十六进制public static String trans1(int num, in…

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

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