Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

帮忙回答一VBA题

阴笑  发表于:2012-03-15 21:02:48  
复制

Private Sub Commandal1_Click

Fori=1to4

x=4

Forj=1to3

x=3

Fork=1to2

x=x+6

Nextk

Nextj

Nexti

MsgBox x

End Sub

输出结果是15

这是怎么算的,能详细解答一下吗?谢谢

 

Top
纵云梯 发表于:2012-03-16 00:46:23

VBA的执行顺序都是从外到里,最外层的程序首先执行,最内层的程序最后执行;

在你的例子上For i首先执行,然后For j次之,最后才执行For k。

三个For循环函数都有一个x变量被重复使用。

由于For i里的x=4被直接定值,无论For i=1,2,3里做过什么改变x永远等于4,直至最后一个For i=4时x还是等于4,但当在For i=4里x=4后程序还没完成,

因为做完x=4后还有做最后一次For j=1 to 3。

同理,由于最后一次For j=1 to 3里x直接等于3,所有最后一次For j=1 to 3中的for j=1,2是没有意义的因为x还是等于3;

直至for j=3时x=3,然后因为第一个for k=1时 x实际等于3+6即等于9,然后for k=2时,x=9+6即等于15。



总记录:1篇  页次:1/1 9 1 :