2015年9月5日 星期六

[Excel]-Excel巨集-迴圈for...next-01

[Excel]-Excel巨集-迴圈for...next-01

Excel巨集語法中,迴圈的控制有很多種,上次是使用Do While的迴圈,為了可以更靈活及孰悉的應用迴圈的寫法,這次我將示範for next的迴圈。
這次也將沿用上次的例子,當按下圖1箭頭處的綠色“Start”按鈕,則cell A2將每次累加1,直到cell A2等於所設定的數值100,如圖2
圖1

0000-1

圖2

0000-2


第一步:修改程式。先打開上次的例子,依照下圖3將程式修改成圖4的程式。
1.Do While j <= i改成 For j = 1 To i
2. Loop 改成 Next j

圖3

0000-3

圖4

0001-1


For…Next是不是看起來也很直覺,
For j = 1 To i”是不是可以翻譯成“當j等於1i之間”則執行迴圈。
Next j”則可以翻譯成當迴圈執行完後,就做“下一個j”。

第二步:單步執行程式,驗證程式。
按第1F8,程式開始


0002


按第2F8


0003


按第3F8


0004


按第4F8,此時可以將滑鼠游標移到“j = j +1”這行程式碼的前面,則會出現一個小方塊,這樣我們就可以觀察現在j的值是多少。此時j=1,因為我們從“For j = 1 To i”這行就已經將j的初始值定為1


0005


按第5F8,“j = j +1”這行變成黃色,但其實程式正要執行這行程式,當再按一次F8時,程式移到下一行“Next j”,這才表示程式已做完“j = j + 1”,此時小方塊中的j值才會發生變化。


0006


按第6F8,“Next j”這行變成黃色,表示程式已完成上一行“j = j +1”,此時小方塊中的j值變化成2,並即將執行“Next j”。


0007


按第7F8,“Cells(2, 1).Value = j”這行變成黃色,表示程式已完成上一行“Next j”,此時可看出小方塊中的j值已變化成3

0008


按第7F8


0009


按第8F8


0010


按第9F8


0011


按第10F8

0012


按第11F8


0013


按第12F8

0014


按第13F8

0015


按第14F8

0016


按第15F8,各位是否發現奇怪的現象,j的值是從1,每次累加1,但是觀察Cell A2的值卻是13579‧‧‧,每次累加2的變化。因為“Next j”本身就已經具有每次加1的特性了,我在迴圈中又再加了“j = j + 1”這行程式,所以等於每做一次迴圈,每次增加不是1,而是每次增加2


0017


第三步:修改程式,如圖。將“j = j + 1”這行刪除,並將“For j = 1 To i”改成“For j = 0 To i”,j的初始值才會是0,這樣j才會從0一直記數到100


0018


0019






參考資料:


1 則留言:

  1. 我有迴圈巨集 想請教 釋手有高手 可以加我 LINE melon681204 幫幫我

    回覆刪除