钟摆动画图
本文通过制作一个动画图表,演示了一些基本的VBA技术,同时演示了VBA快速简化重复任务的能力。
如下图1所示,总共由16个钟摆组成。

图1
每个钟摆需要4个命名公式,这意味着16个钟摆需要64个命名公式,同时添加16个系列到图表中。
《写给儿童的中国历史》(全彩铜版14册)中国孩子历史启蒙首选书,连续六年当当童书榜历史类图书状元!加印30次,累销1800万本,读者好评760000+
作者:陈卫平著 步印童书 出品
命名公式
图中的每个钟摆都基于4个命名公式:
名称p1Len:=’1’!$B$9
长度存储在工作表中
名称p1o:=OMax*SIN(SQRT(g/p1Len)*t)
在时刻t时钟摆1当前角度位置
名称p1x:=p1Len*SIN(p1o)*{0;1}
在时刻t时钟摆1当前坐标的X位置
名称p1y:=-p1Len*COS(p1o)*{0;1}
在时刻t时钟摆1当前坐标的Y位置

图2
使用p2、p3等替换上文中的p1得到其他钟摆名称。
在示例工作簿的“Named Formulas”工作表上,显示了按上述规则命名的公式,可以使用简单的VBA程序装载这些命名公式。程序代码为:
SubLoad_Named_Ranges()
Dim c As Range
For Each c In Selection
ActiveWorkbook.Names.Add Name:=c.Text,RefersTo:=c.Offset(, 1).Text
Next
End Sub
首先选择工作表Named Formulas中的名称列区域,然后运行程序即可将命名公式装载到名称框。注意,在运行本程序前先清空名称框中含有字母“p”的名称。
写给儿童的中国地理(全14册)
作者:陈卫平、陈雨岚等 步印童书 出品
添加图表系列
下面,添加16个图表系列到图表中,1个钟摆1个系列。在示例工作簿的“Add Cht Series”工作表上使用公式编写了16个图表系列名称、X值和Y值。然后,使用简单的VBA程序将其装载到图表中。程序代码为:
SubAdd_Cht_Series()
Dim sNumb As Integer
Worksheets("1").ChartObjects("Chart 5").Activate
Dim c As Range
For Each c In Worksheets("Add ChtSeries").Range("B11:B12")
sNumb =ActiveChart.SeriesCollection.Count + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(sNumb).Name = c.Text
ActiveChart.SeriesCollection(sNumb).XValues= c.Offset(, 1).Text
ActiveChart.SeriesCollection(sNumb).Values = c.Offset(, 2).Text
Next
End Sub
小结
本示例展示如何使用一些简单的VBA代码并相互借鉴来简化2个常见且重复的任务。
在创建命名公式中,代码编写不到2分钟,在工作表中输入公式不到5分钟。如果在使用Excel的定义名称功能,不知道要用多少时间且能否保证正确。
因此,对于大量重复任务,转换一下思维方式,使用VBA来节省宝贵的时间和精力。