~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
第二次執行程式時 , 情況比第一次執行簡單很多 , 因為不用像第一次執行時一樣考慮這個衡量那個 , 所以程式碼的編寫比較簡單 , 而且可以利以複製貼上來寫 , 嗯 , 只要輕輕修改一下就可以了 ~
首先 , 情況還是一樣 , 先要找到所有記錄的最後一行 , 所以程式碼必須有以下的幾句 :
==========================================
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 留言:
發佈留言