~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
真的沒騙排版哦 ~ 哈哈 ~ ( 多騙一句不礙事吧 ~ 哈哈哈 ~ 閃 ~~~~~ )
現在開始再說一下 , 餘下的記錄要處理的地方吧 ~ 其實只不過又是那一些什麼地方又加些什麼 “ Y ” 字作記號 , 什麼什麼又加這個減那個的 , 所以這一編就不如直接把整個第一次執行程式時的模組貼出來吧 ~
==========================================
Sub FirstTimeUse()
'設定第一個記錄位置為 4
FirstRec = 4
'選擇 SUMMARY 頁面的儲存格 B3 , 利用 ActiveCell.End(xlDown).Select 向下尋找最後一個記錄
'利用變量 LASTREC 記錄目標位置
Worksheets("Summary").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row
'選擇 INVOICE 頁面 , 清空儲存格 G6 到 G15 的值 , 把儲存格 A2 的值更改為 1
Worksheets("Invoice").Select
Worksheets("Invoice").Range("A2").Select
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = 1
'列印 1 次
ActiveSheet.PrintOut from:=1, To:=1, copies:=1
'利用變量 CHECKAREA 設定重複工作次數由 6 到 15
'儲存格位置利用 CHECKAREA 變數的值自動變更
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
'選擇 INVOICE 頁面的儲存格 G16 , 利用 ActiveCell.End(xlUp).Select 向上尋找最後一個記錄
Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row
'利用變量 REF2TTL 計算 每一個 REF # 中所包含的 REF 2# 的數量
Ref2TTL = LastShowing - 5
'選擇 SUMMARY 頁面
Worksheets("Summary").Select
'設定變量 COUNTER 的值為 4
Counter = 4
'利用變量 LOOPCOUNT 設定重複工作次數由 1 到 變量 REF2TTL 的值
For LoopCount = 1 To Ref2TTL
'變更 SUMMARY 頁面 I 及 J 適當儲存格的值
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
Counter = Counter + 1
Next LoopCount
'重複工作設定
Do
'選擇 SUMMARY 頁面 A 行的對應位置
Worksheets("Summary").Range("A" & Counter).Select
'利用變量 TEMPREC 記錄現時所選擇的儲存格所記錄的值
TempRec = ActiveCell.Value
'選擇 INVOICE 頁面 , 清空儲存格 G6 到 G15 的值 ,
'變更 INVOICE 頁面儲存格 A2 的值為變量 TEMPREC 的值
Worksheets("Invoice").Select
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = TempRec
'列印 1 次
ActiveSheet.PrintOut from:=1, To:=1, copies:=1
'利用變量 CHECKAREA 設定重複工作次數由 6 到 15
'儲存格位置利用 CHECKAREA 變數的值自動變更
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
'選擇 INVOICE 頁面的儲存格 G16 , 利用 ActiveCell.End(xlUp).Select 向上尋找最後一個記錄
Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row
'利用變量 REF2TTL 計算 每一個 REF # 中所包含的 REF 2# 的數量
Ref2TTL = LastShowing - 5
'選擇 SUMMARY 頁面
Worksheets("Summary").Select
'利用變量 LOOPCOUNT 設定重複工作次數由 1 到 變量 REF2TTL 的值
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
Counter = Counter + 1
Next LoopCount
'選擇 SUMMARY 頁面儲存格 I3 , 利用 ActiveCell.End(xlDown).Select 向下尋找最後一個記錄
'變更變量 FIRSTREC 的值為 I 行最後一個記錄的位置
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
FirstRec = ActiveCell.Row
'如果變量 FIRSTREC 的值與變量 LASTREC 的值相等便停止運作 , 否則重複 DO 到 LOOP UNTIL 中間的所有步驟
Loop Until FirstRec = LastRec
End Sub
==========================================
嘩 ~ 會不會長了點 …
好吧 ~ 不管了 ~ 繼續寫 , 因為下一編要開始講解一下 , 程式在第二次執行時的模組編寫問題 ~ 嗯 … 繼續 ~
如果你有細心地留意 , 其實在後半段的程式碼大部份都只是上半段的複製品 , 只不過是方在一個 DO ~ LOOP UNTIL ~ 的中間罷了 , 裡面的東西就不作詳細解釋了 , 留給你慢慢地細心地去想一下程式的運作原理 .
現在先講解一下關於 DO ~ LOOP UNTIL ~ 這個東西 , DO ~ LOOP UNTIL ~ 顧名思義就是 “ 做 … ( 某一段程式碼 ) … 直到 … ( 條件成立 ) … ” , 這東西很有用的 , 記得多點練習這個 ~
另外值得特別注意的是 LOOP UNTIL 的條件設定 , FirstRec = LastRec 中的 LastRec 就是在程式最初時 , 在 SUMMARY 頁面的行 B 找出來的最後一個數據 , 那 FirstRec 的值是什麼呢 ? FirstRec 這個變量的值 , 在程式開始時已經設定為 4 了~
==========================================
'設定第一個記錄位置為 4
FirstRec = 4
==========================================
然後 , 在程式執行到結尾的時候 ( 即 LOOP UNTIL 語句之前 ) , 我要求電腦去做一件事來把變量 FirstRec 的值更新一下 ( 嗯 … 好像沒跟你講過變量FirstRec 是代表著什麼吧 ~ 就是要處理的第一個記錄的位置了 ~ 之前設定為 4 是因為第一個記錄是 SUMMARY 頁面的第 4 列 ~ )
==========================================
'選擇 SUMMARY 頁面儲存格 I3 , 利用 ActiveCell.End(xlDown).Select 向下尋找最後一個記錄
'變更變量 FIRSTREC 的值為 I 行最後一個記錄的位置
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
FirstRec = ActiveCell.Row
==========================================
執行完這幾句程式碼之後 , 變量 FirstRec 的值就順利變更了 ~ 當變量FirstRec 的值與變量 LastRec 的值相同 , 就可以完成工作 , 嗯 , 這句不用解釋了吧 ~
好 ~ 這一回就先到這裡 , 下一回就開始編寫 “ 程式在第二次執行時的程式碼 ”
記得跟我打個招呼哦 ~ 否則我只是在自言自語的話 , 我可能會把心一橫 , 就把這個站關了 ~ 哈哈 ~
1 留言:
謝謝威廉老師,你的『白話文』真的讓初次接觸VBA的我很快就上手了。
不過,我想陸續就會有一堆疑問開始跑出來了,到時在麻煩你指教一下囉
發佈留言