ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: aoe1981

[原创] 强势发布:再做VBA汉诺塔动画演示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-29 18:13 | 显示全部楼层
本帖已被收录到知识树中,索引项:递归
人生,总不能重来,就是命运

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 09:37 | 显示全部楼层
  发现了香川汉诺演示动画附件的一个秘密:
   360截图-2403835.jpg

  我只是将其复位过程代码做了一下小注释:

  1. Sub Reset()
  2.     n = Range("E1")
  3.     For i = 0 To 26
  4.         t = Chr(i \ 9 + 65) & "_" & (i Mod 9 + 1)
  5.         ActiveSheet.Shapes(t).Visible = True 'IIf(i < n, True, False)
  6.     Next
  7. End Sub
复制代码
  原来,这个演示最大可以做9个金片吧,虽然吧在复制粘贴大于9的数值时会由于找不到图形对象报错,但其有效性最大数值比我的8考虑得还要宽,呵呵,可谓“四两拨千斤”!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 09:41 | 显示全部楼层
本帖最后由 aoe1981 于 2014-11-30 14:28 编辑

香川演示附件中所谓金片的移动,其实是一种视觉上的假象,通过控制在三个塔上的圆图形对象的显示与隐藏替代性地实现了“移动”……

这个思路也是极好的,我可以事先在正视图中设好三根针,以及最多9*3=27个金片,然后用代码控制其显示与隐藏,不过,此种思路下,估计针得分截显示,否则,可以想到的是,当金片数少时,针的下面会空出许多,感觉此时金片似乎是飘在上面的……

呵呵,怪不得是那样简洁的代码……

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 09:51 | 显示全部楼层
目前不得其解的是:香川演示附件中按下ESC键后,到底对正在执行的代码产生了什么样的影响?为什么看不到这些相关的代码?到底是如何做到的呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 09:58 | 显示全部楼层
写了一小段测试代码:
  1. Sub ss()
  2. For i = 1 To 100
  3. Application.Wait Now() + TimeValue("00:00:01")
  4. j = j + i
  5. Next i
  6. Range("a1") = j
  7. End Sub
复制代码
猜测下:估计这个在代码执行过程中按下ESC改变代码运行时间的操作是针对wait的,如果是其他估计不行吧……

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 10:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
比如下面代码,按死了ESC,也是没有啥反应的:
  1. Sub ss()
  2. For i = 1 To 100
  3.     For k = 1 To 2000
  4.         DoEvents
  5.     Next k
  6.     j = j + i
  7. Next i
  8. Range("a1") = j
  9. End Sub
复制代码
看来,这个效果只能针对wait了,只是wait的缺点是不能达到毫秒级别的等待……

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 10:11 | 显示全部楼层
又回过头测试了下liulang0808的演示附件,我从一开始就非常喜欢他的直观形象,只是在我的电脑上,当金片数输入为5个及以上时,就会进入假死状态:“未响应”,于是中间的动态演示过程便看不到了,直到代码执行完后,出现最终结果……不知道大家可否遇到过类似的问题,也可能是我的电脑慢的缘故吧……

TA的精华主题

TA的得分主题

发表于 2014-11-30 11:06 | 显示全部楼层
三个都看了,赏心悦目,应该会对递归的理解有好处吧,还没认真去学习递归,信心不足,老感觉逾越不了,呵呵!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-30 11:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lm1221 发表于 2014-11-30 11:06
三个都看了,赏心悦目,应该会对递归的理解有好处吧,还没认真去学习递归,信心不足,老感觉逾越不了,呵呵 ...

我是被这个帖子领进门的,经典递归例子(简单的):一个是阶乘,一个是汉诺塔,搞明白这两个应该算是入门了……
http://club.excelhome.net/thread-217298-1-1.html

TA的精华主题

TA的得分主题

发表于 2014-11-30 11:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
兄弟给力啊,很好

点评

还是沾了您的好帖的光啊……  发表于 2014-11-30 12:30
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-12 05:07 , Processed in 0.045159 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表