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隨後就到……