for循环基本格式(VBA的循环语句)
如果说if让VBA的世界丰富多彩,那for则让VBA动力十足,只需寥寥几个参数for语句就可以按你的意愿持续执行下去……甚至可以到永远(死循环)……而且for最擅长重复动作的执行,这让对重复事件倍感枯燥毫无成就感的我们看到了希望:被老师罚抄写英文“Excel”10000次的工作,终于可以交给VBA的for了!
for连同它的两个表兄弟do、while被归类为VBA的循环语句,从上手度及功能性两方面来看for稍胜一筹,所以for是它们的代名词,新手可以考虑由for入手学循环。
for的用法很简单:for后变量使用to连接起始及结束值、Step指定单次“步长”,语句结束使用Next 后跟循环变量即可:
上例虽没有输出10000次“Excel”,但却实现了1到10000的数字累加(结果为50005000)。值得一提的是:for的步长默认为1,故此例的“Step 1”可以省略(注:Step步长可以为负数);语句最后的循环变量i也是可以省略的。
到此,事情已经变得很简单了,如果要计算1到10000的奇数和,直接将Step后的1改为2即可。至于偶数和,变动稍大:除了step变为2,i的循环起始值也需变为第一个偶数2,结果输出25005000。
如果你想遍历一个集合或数组但又不知其元素个数,这时for的另一个变体就非常有用了,格式为:for each…in…next。此模式有点“不计代价”的感觉,不论你有多少元素,我蒙着头数就是,不数完不罢休!
我设计了一个有8张工作表的工作簿(名称S1到S8),其中有几张工作表是隐藏的(S3、S5和S6):
用这个for的变体就可以找到所有工作表(含隐藏表)并输出表名!
for的最大优点是循环变量的初始化及限制在循环的开始就已经描述清楚,我们只需专心编写循环体的内容;do和while则需在循环体中兼顾进行循环变量的初始化以及步进设计,初学者容易漏掉这些动作使程序“走火入魔”进入死循环。
所以,还是先学好for吧,do和while随后就到……