▼
下午在浏览论坛的时候,刚好看到秋叶老师的一个图表教程,风格是半圆型饼图,用VBA控制。
查看了一下后台的VBA代码,有点小复杂,不过勉强能看懂,自己试了一把,确实可行。
Sub 动起来()
Dim i As Integer, t As Long
For i = 1 To 78
i = i + 1
Range("b4") = i & "%"
t = GetTickCount
Do
If GetTickCount - t > 5 Then Exit Do
DoEvents
Loop
Next
End Sub
然后就想分享给大家,不过鉴于代码太长大家可能接受不了,所以自己稍微改造了一下,使用了随机函数+VBA自动刷新的组合功能,效果勉强看得过去!
这是原图数据结构:
图表是一个较小的饼图和一个较大的圆环图组合而成。饼图内的指针是由E5单元格的数值0.01模拟。
具体的做法参见之前的一篇推送《绩效管理工具:仪表盘风格图表》(或回复061查看)。
GIF图动态效果如下图所示。
右侧的数据控制图表中较小的饼图,左侧的数据控制图表中外层的圆环图。
而所有数据中B4单元格中的数据由VBA控制:
Sub 动起来()
Dim i As Integer, t As Long
For i = 1 To 78
i = i + 1
Range("b4") = i & "%"
t = GetTickCount
Do
If GetTickCount - t > 5 Then Exit Do
DoEvents
Loop
Next
End Sub
B4单元格数据范围1%~80%,B5单元格、E4单元格、E6单元格都由B4单元格控制。
圆环图与饼图的第一扇区都起始于270%。
下面跟大家介绍自己改造过的半圆型动态仪表。
数据结构图表都与以上介绍过的相同,维一不同的是控制单元格的方法:
这个图表B15单元格是有RAND()函数控制(rand函数可以随机生成0~1之间的小数)
这里主要介绍一下怎么制作自动更新的图表数据标签和自动刷新的VBA代码。
大家可以看到在动态GIF图表中点击刷新之后,随着B15单元格随机变动,其中数据同步变动,最终带动图表变动,而且图表顶部的数据表也同步变动。
数据标签更新的是B15的数据,插入文本框,将鼠标移入文本框,然后在编辑框种输入“=B15”,然后再修改文本框的框线颜色、背景颜色。
另一方面,rand函数需要使用F9键刷新,才能更新数据,但是小魔方比较懒,不想每次都去按F9,所以直接写了一个自动刷新的VBA语句。
Sub 刷新()
Calculate
End Sub
看吧实在是太简单了。
sub()
……
End Sub
这是VBA的固定语句,就相当于见面打招呼都会说:“你好,再见”一样。
起作用的只有中间那句:calculate ,大概就是从新计算的意思吧。
然后从开发工具中插入一个按钮,打开VBA编辑器,复制以上代码:
然后把按钮制定到刚才新建的宏。
然后点击刷新按钮,就可以看到效果了。