ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > 动画1:创建一个简单的加速、减速、匀速运动动画

动画1:创建一个简单的加速、减速、匀速运动动画

作者:绿色风 分类: 时间:2022-08-17 浏览:173
楼主
amulee
Excel也能做动画,其实只要运用一些简单的代码就行。
比如附件中的例子。
加速、匀速和减速运动.rar

我们事先创建一个散点图,其坐标在A单元格。我们来看一下加速运动的公式,A的数值就是点的坐标,也就代表点行进的路程。公式如下:
  1. V2 = V1 + 0.01 * AC
  2. [A1] = [A1] + (V2 + V1) * T / 2
其中V1为初速度,V2为末速度,T为时间,AC为加速度(加速度可以为正数--加速运动,负数--减速运动,0--匀速运动)。
通过上述赋值的反复执行就可以得到一个点运动的动画。代码如下(将点的横坐标最大设为28):
  1. Do While [A1] <= 28
  2.     V2 = V1 + T * AC
  3.     [A1] = [A1] +
  4. (V2 + V1) * T / 2
  5.     V1 = V2
  6.     DoEvents
  7. Loop
然后我们只要能够计算T这样的时间间隔就行了。Excel其实提供了很多的方法来计时,下面介绍三种方法计时。
1、API 函数的Sleep函数
Sleep函数的语法很简单,只要
  1. Sleep 毫秒数
2、Timer
VBA内置的Timer函数,记录了从午夜开始到现在经过的秒数。
我们通过以下代码的循环可以得到0.01秒的时间间隔。
  1. t = Timer
  2. Do While Timer - t < 0.01
  3. Loop
3、Application.Wait
Excel VBA所提供的Wait方法允许程序暂停运行,直到一特定时间才可继续执行。
比如下面代码就让程序暂停0.01秒后再运行
  1. Application.Wait (Now + 1 / 8640000)
综合上述代码,我们可以创建一个的过程,可以让点进行加速、减速、匀速运动。
  1. Sub MoveSleep()
  2.     Dim V1, V2, AC
  3.     [A1] = 0
  4.     V1 = 5
  5.     AC = 0 '匀速运动
  6. '    AC = 0.4 '加速运动
  7. '    AC = -0.4 '减速运动
  8.     Do While [A1] <= 28
  9.         V2 = V1 + 0.01 * AC
  10.         [A1] = [A1] + (V2 + V1) * 0.01 / 2
  11.         V1 = V2
  12.         Sleep 0.01
  13.         DoEvents
  14.     Loop
  15. End Sub
具体请参考附件的代码。
2楼
zhyou
期待着提供更多的教程
加油

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap