04.27 "VBA“与”函数"的一次完美邂逅

往往大家做动态图表时,都会想到函数Index和Offset函数来做,没有错,但是你实现之后,每次要用鼠标去点一下,动态图表才会变一下,这个地方我们就用VBA来弥补函数的不足

我现在用一个实例来讲解一下

第一步:在B14单元格输入1

解释:目的是为了做VBA里的变量的临时值,现在是空的,所以先输入一个值代替,便于大家理解

第二步:在B15单元格输入公式

1. ="动态图表"&"("&INDEX($A$1:$L$1,1,$B$14)&")"

复制代码

解释:作为图表的标题,Index第一个参数是一年的十二个月,第二参数是B14,是变量,由VBA代码运行时决定, Range("B14").Value2 = i第三步:在B16单元格输入函数,向下填充公式

1.

2. =INDEX($A$2:$L$12,ROW(A1),$B$14)

复制代码

解释:index函数是这个动态图表的核心,图表数据的变化主要由Index函数的第三参数决定,因为第三参数一改变,整个区域都会发生变化,当第三参数是是1时,显示一月份的数据,当第三参数是2时,显示二月份的数据第四步:作图和美化图表,作出来如下图

第五步:Alt+F11打开VBE编辑器,插入菜单,插入模块,把代码贴到模块里

Dim i As Integer '定义i为模块级别的变量,不能定义为过程级别的变量,因为过程级别变量当过程结束时,变量作用周期也就结束了[code=vb]Sub 时长()Range("B14").Value = i '给单元格B14赋值为变量ii = i + 1 '累加iIf i > 12 Then '如果i大于12,那么i的值又从1开始i = 1End IfApplication.OnTime Now + TimeValue("00:00:01"), "时长" 'Ontime事件,每隔1秒又把过程转到"时长"过程,这样起到了循环的作用End SubSub 停止()On Error Resume Next '防止程序出错Application.OnTime Now + TimeValue("00:00:01"), "时长", , False '结事OnTime事件"时长"End Sub[/code]第六步:把"时长"过程指定给"开始按扭",把"停止"过程指定给"停止按钮" 解释:Offce按钮(2007版的),EXCEL选项,常规,勾起显示"开发工具"选项卡然后,开发工具,控件组,插入,表单控件,命令按扭,在工作里画一个,单元右键,指定宏。


分享到:


相關文章: