[Excel]-Excel巨集-迴圈Do while...Loop-01
想在Excel中,做一個可重複執行的巨集。目的如下;如下圖1,在cell A1中設定100,在cell A2中設定1,希望做一個指令(巨集),當執行此一巨集時,cell A2將從1變為2、再變為3,一直增加數值,直到等於我們所設定的數值,即100。這樣重複性的功能最適合用巨集來執行了,以下就來練習一下如何用一個迴圈巨集來達成這樣的需求。自己在學習當中,希望大家一同進步,若有錯誤及任何意見,請不吝指教。有些參考網路教學,會盡量標明參考網站,若有侵犯著作請告知。
第一步:另存檔案成“Excel啟用巨集的活頁簿”。若要執行巨集,必須將Excel另存成可執行具的的檔案格式,如圖2所示,選擇另存檔案→Excel啟用巨集的活頁簿。
圖2 |
再從存檔類型中,選擇“Excel啟用巨集的活頁簿”,如下圖3。
圖3 |
第二步:存檔完後,便進入正題了。先在cell A1中輸入100,這是希望要記數的數值。cell B1中輸入set。cell A2中輸入1,這是記數的初始值。cell B2中輸入count。如下圖4。
圖4 |
第三步:插入三個快取圖案,並分別輸入“Start”,“Stop”,“Reset”。這三個按鈕將代表不同的功能,也就是說會有三個不同的巨集要編寫。
圖5 |
第四步:建立巨集。點選檢視中的巨集,便會出現如圖6的對話框,
圖6 |
接著在巨集名稱中輸入“Start”,並按下建立,這表示按下綠色的Start按鈕便會執行此一巨集程式。
圖7 |
按下建立後,便會出現編輯巨集的程式編輯框,將來的程式編寫便是在這一編輯框內編寫。
圖8 |
第五步:規畫程式流程。在巨集編寫之前,先想一下我們需要的動作流程,
1.判斷cell A2小於cell A1
2.cell A2小於cell A1→cell A2加1→再跳回的1步
3. cell A2不小於cell A1→停止程式
這三步就是程式運作的主要原理,用圖形表示程式的流程,如下圖9。
圖9 |
第六步:編寫程式。依下圖編寫程式,我現在先示範Do
While...Loop的用法。
1.
Sub Start ()與End Sub之間的東西就是這巨集的內容,也就是說一個巨集的開始一定是Sub XXX (),結尾一定是End Sub。XXX就是巨集名稱。
2.
Dim i As Integer及Dim j As
Integer:定義i及j為整數
3. i
= Cells(1, 1).Value:定義cell A1的值 = i,這樣可以簡化程式的寫法,即要用到cell A1的時候,只要輸入i就可以了。
4.
j= Cells(2, 1).Value:定義cell A2的值 = j。
5. Do While...Loop的用法或基本框架如下:
Do While 條件
迴圈內容
Loop
Do While j <= i 迴圈開始條件:j <= i
j = j + 1 迴圈內容:每執行一次迴圈,j的值就增加1,
直到j的值小於或等於i的值
Loop 迴圈結束
Loop 迴圈結束
圖10 |
第七步:單步執行程式。程式初步寫好,先用單步執行來確認程式是否可正常動作。在偵錯選項中選擇逐行,或是直接按F8也可以。
圖11 |
按第一次F8,可以看到程式中第一航變成黃色了,這表示現在正在執行這一行。如下圖12。
圖12 |
按第二次F8,
圖13 |
按第三次F8,
圖14 |
按第四次F8,
圖15 |
按第五次F8,
圖16 |
按第六次F8,
圖17 |
按第七次F8,
圖18 |
按第八次F8,
圖19 |
按第九次F8,
圖20 |
此時,將滑鼠游標移到下圖21的紅色圓圈處,最左邊的j上面,會出現一個“j = 3”,這就是現在j的值,即cell A2的值。
圖21 |
接著再按下多次F8,並將滑鼠游標移到下圖22的紅色圓圈處,最左邊的j上面,會出現一個“j=26”,這就是現在j的值,即cell A2的值。但奇怪的是在Excel頁面上的Cell A2仍然顯示1。這表示程式可能有些問題。
圖22 |
圖23 |
第八步:程式修改。想一下為何實際上cell A2的值不會變化?因為迴圈中j的值有一值累加,但是每累加一次就必須將j的值再帶入cell A2,這樣才會顯示在Excel中。所以流程圖及程式修改如下。
圖24 |
程式修改部分:將 j = Cells(2,
1).Value由迴圈外部移到迴圈內部。
再次單步執行,驗證程式。按了多次F8,會發現j的值只會在1跟2之間變化,如下圖25及圖26。
圖25 |
圖26 |
第九步:程式修改。將 j = Cells(2,
1).Value改成Cells(2, 1).Value = j。如此一來 Cell A2的值可以正常的累加到100了。在回到Excel中直接用滑鼠點選綠色的“Start”,就會看到Cell A2的值從1一值增加到100。
圖27 |
圖28 |
沒有留言:
張貼留言