2008年11月20日星期四

懶人計劃 3 – 自動製作文件的二次進化 PART 06 – 是一樣還是不同 1

| |
~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~

~ 聲明事項 ~

如各位想把以下本文章轉貼 , 請記得要注明出處.

本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.

由於圖片製作需時, 所以更新會比較慢.

存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.

Picture



第二次執行程式時 , 情況比第一次執行簡單很多 , 因為不用像第一次執行時一樣考慮這個衡量那個 , 所以程式碼的編寫比較簡單 , 而且可以利以複製貼上來寫 , 嗯 , 只要輕輕修改一下就可以了 ~

首先 , 情況還是一樣 , 先要找到所有記錄的最後一行 , 所以程式碼必須有以下的幾句 :

==========================================

Worksheets("Summary").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row

==========================================

用意一樣 , 方式一樣 , 純粹的 COPY 和 PASTE ~ 哈哈 ~ ( 懶人素質發揮得淋漓盡致嘛 ~ 哈哈 ~ ) , 嗯 , 然後再增加一個變量 COUNTER , 把 COUNTER 的值設定為 0 , 為什麼是 0 嘛 ~ 等一下再說 ~

==========================================

Counter = 0

==========================================

今次比之前做第一次執行的程式不同的地方是 , 今次並不需要先告訴電腦怎樣的執行一次 , 直接要它重複操作方式就可以了 ~

首先 , 我們要確定那些資料是已經有的 , 所以 , 要加入以下的程式碼 :

==========================================

Do

Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
LastRec2 = ActiveCell.Row

==========================================

當電腦在 SUMMARY 頁面的儲存格 I3 向下找 , 找到最後一個記錄的位置後 , 就把數值儲放於變量 LastRec2 內 , 注意 , 這個是 2 , LastRec2 , 不是 LastRec !!

之後就跟之前做的一樣 , 要電腦去把合適的位置中的數據找出來 , 最後一個已處理的記錄再加 1 就是我們要的位置 , 所以加入以下的程式碼 , 就可以找到對應位置中記錄了的 REF # 的號碼 :

==========================================

Worksheets("Summary").Range("A" & LastRec2 + 1).Select

==========================================

不用解釋了吧 ~ LastRec2 + 1 的位置就是要處理的記錄的位置 ~ 很簡單嘛 ~ 之後又再一次用之前的方法 , 利用變量 TempRec 來記錄找出來的值 ~

==========================================

TempRec = ActiveCell.Value

==========================================

再之後又是跟之前的一樣 , 這裡加些什麼 , 那裡又加些什麼的 , 全部複製過來就好 ~

==========================================

Worksheets("Invoice").Select
Worksheets("Invoice").Range("A2").Value = ""
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = TempRec

ActiveSheet.PrintOut from:=1, To:=1, copies:=1

For CheckArea = 6 To 15
If Worksheets("Invoice").Range("C" & CheckArea).Value <> "" And Worksheets("Invoice").Range("D" & CheckArea).Value <> "" And Worksheets("Invoice").Range("E" & CheckArea).Value <> "" And Worksheets("Invoice").Range("F" & CheckArea).Value <> "" Then Worksheets("Invoice").Range("G" & CheckArea).Value = "Y"
Next CheckArea

Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row

Ref2TTL = LastShowing - 5

Worksheets("Summary").Select

Counter = LastRec2 + 1

For LoopCount = 1 To Ref2TTL

Worksheets("Summary").Range("I" & Counter).Value = "Y"
Worksheets("Summary").Range("J" & Counter).Formula = "=today()"
Worksheets("Summary").Range("J" & Counter).Value = Worksheets("Summary").Range("J" & Counter).Value

Counter = Counter + 1

Next LoopCount

Loop Until Counter = LastRec + 1

==========================================

這裡跟之前所不同的地方是 , 今次 DO ~ LOOP UNTIL ~ 所完成並停止程式的條件跟之前的不同 , 是要變量 COUNTER 的值跟變量 LASTREC 的值加 1 相等才可以停止 ~ 如果你還未知道為什麼條件會這樣設定 , 不要緊的 , 慢慢地想清楚 , 之前在尋找最後一個記錄的位置時 , 我們利用了變量 LASTREC 來記錄這個位置 , 然後 , 當程式開始運作後 , 程式在每一次完成增加資料到 SUMMARY 頁面的 “ 已打印 ” 和 “ 打印日期 ” 後 , 都會把 COUNTER 的值更改成 COUNTER 的值加 1 .

如果程式開始時 , 變量 LASTREC 的值是 10 , 當程式完成這個記錄的處理 , 並在 “ 已打印 ” 和 “ 打印日期 ” 的位置加上資料後 , 變量 COUNTER 的值就會變成 COUNTER 的值加 1 , 如果當時變量 COUNTER 的值是 10 , 那麼完成這個處理後 , 變量 COUNTER 的值就會是 11 不是 10 , 如果按照我們之前做的第一次執行程式的停止條件來設定 , 那麼 , 不管是 10 年後或者是 100 年後甚至更遠 , 變量 COUNTER 所記錄的值都只會是越來越大 , 變量 LASTREC 的又只會停留在 10 , 兩個數值根本沒可能相同 , 結果就是 , 程式只會不停地執行而不會停止 .

好了 , 現在來說明一下 , 為什麼之前在設定變量 COUNTER 時 , COUNTER 的值要設定為 0 , 如果你有細心地想一想 , 你應該會明白到 , 這個變量 COUNTER 的值不可能跟之前 “ 第一次執行 ” 時的設定一樣 , 因為我們根本不知道變量 COUNTER 應該是什麼 , 所以設定為 0 就可以了 ~

如果你有程式編寫的經驗 , 可能你又已經發現 , Counter = 0 這句程式碼基本上是沒什麼意思的 , 因為 Counter = LastRec2 + 1 這句程式碼才是重點 , 不過 , 在於我的個人立場和習慣 , Counter = 0 這句程式碼可以讓我在看程式碼的時候 , 會更加清楚所有變量的變化 , 對程式的執行速度又沒有影響 , 所以就加了這樣的一句了 .

嗯 … 又太長了 … 下一編繼續 ~

0 留言:

最新回應

Loading...

有事啟奏‧無事閒聊 ~ 哈 ~


米高積遜全復刻 哈利波特 Michael Jackson 妙麗 金曲獎 MJ 迈克尔杰克逊其实没有死!美国CBC电台已证实 哈利波特 hongkong168 蓮花河畔景苑 盧廣仲 鄧麗欣 不想放手New! 陳珊妮 方大同 巨乳排球 痞子英雄 23 東風 蕭閎仁 米高積遜全復刻 上海 倒塌 南王姐妹花 周杰倫 變形金剛2下載 michael jackson 去世 天文台 米高積遜 花拉科茜 天圖佈局 浪卡 耳廓狐 神探俏嬌娃 韶关旭日玩具厂 譚曉風 严妍 僧老少閒 地下天文台 金泰浩 百老匯 巨乳排球 陳振聰 柯柏文 aika 麥可傑克森