2008年11月20日星期四

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

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

~ 聲明事項 ~

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

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

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

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

Picture



好 ~ 先來看一下我的完整程式碼 :

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

Sub SecondTimeUse()

'選擇 SUMMARY 頁面的儲存格 B3 , 利用 ActiveCell.End(xlDown).Select 向下尋找最後一個記錄
'利用變量 LASTREC 記錄目標位置
Worksheets("Summary").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row

'重複變量 COUNTER 的值為 0
Counter = 0

'重複工作設定
Do

'選擇 SUMMARY 頁面的儲存格 I3 , 利用 ActiveCell.End(xlDown).Select 向下尋找最後一個記錄
'利用變量 LASTREC2 記錄目標位置
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
LastRec2 = ActiveCell.Row

'選擇 SUMMARY 頁面 A 的對應位置
Worksheets("Summary").Range("A" & LastRec2 + 1).Select

'設定 TEMPREC 的變量為 " 現在被選擇的儲存格所記錄的值
TempRec = ActiveCell.Value

'選擇 INVOICE 頁面 , 清空儲存格 A2 及 G6 到 G15 的值 ,
'變更 INVOICE 頁面儲存格 A2 的值為變量 TEMPREC 的值
Worksheets("Invoice").Select
Worksheets("Invoice").Range("A2").Value = ""
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

'設定變量 COUNTER 的值為變量 LastRec2 + 1
Counter = LastRec2 + 1

'利用變量 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

'如果變量 COUNTER 的值與變量 LASTREC 的值加 1 相等便停止運作 , 否則重複 DO 到 LOOP UNTIL 中間的所有步驟
Loop Until Counter = LastRec + 1

End Sub

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

又是這麼長嗎 … 過份 … 不管了 ~ 我們還有別的東西要設定 , 繼續吧 ~ ( 呵呵呵 ~ 感覺真的蠻帥的 ~ 哈哈 ~ )

OKOK ~ 現在的程式碼我測試過是可行的了 ~ 哈哈 ~ 別著急 ~ 程式並不完美哦 ~ 有一個檢查我沒加上去的 , 久違了的習題來了 ~ 嘩哈哈哈哈 ~

如果想這個程式出問題 , 是可以的 , 只要你在所有的記錄都處理完成後 , 再讓電腦跑多一次程式 , 你的電腦就會變得怪怪的了 ~ 不信可以試試看 ~ 如果你真的再讓電腦再跑一次這個程式 , 它就會打印了一張什麼都沒有的發票給你 ( 我剛剛做過實驗了 ~ 騙不了我的 ~ 哈哈 ~ )

好 ~ 習題來了 ~ 現在我要求你 , 把你學到的東西都試試運用看看 , 習題是 :

當程式執行前 , 檢查一次到底有沒有需要處理的記錄存在 , 如果沒有的話 , 就彈出一個訊息告訴使用者沒有記錄要處理 , 別亂按 !

嗯 , 這個題目很簡單吧 ~ 程式碼要放在那裡我都已經告訴你了 ~ 哈哈 ~ 對於編寫時所用到的東西嘛 ~ 就給你一點提示吧 , 當中包括了 … ACTIVECELL.END(XLDOWN) … 嗯 … 還有 … MSGBOX … 嗯 … 就這兩個吧 ~ 還要運用什麼 , 就要看你平時有沒有自己努力學習囉 ~

答案嘛 ~ 你貼出來我回你 ~ 不貼出來我就當你沒做過 ~ 不會給你答案的 ~ 嘿嘿嘿 ( 小聲點 … 我也要先做一個 , 否則真的有人回了 , 我沒答案怎麼辦 ~ 哈哈 ~ )

下一回 , 就到修正一下現在的 INVOICE 頁面的設定 ~

4 留言:

匿名 說...

Hi! 威廉先生

我又來了,真的很想快點看到你的[新系列]~~

以下是我的作法,不知你是否有其他的作法?
Private Sub ComBtnPrint_Click()

' 當程式執行前 , 檢查一次到底有沒有需要處理的記錄存在 ,
' 如果沒有的話 , 就彈出一個訊息告訴使用者沒有記錄要處理 , 別亂按 !
Worksheets("SUMMARY").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRecAll = ActiveCell.Row

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

If LastRecAll = LastRecPrinted Then
MsgBox "沒有記錄要處理"
Else
Worksheets("Summary").Range("I4").Select
If Worksheets("Summary").Range("I4").Value = "" Then
FirstUse.FirstTimeUse
Else
SecondUse.SecondTimeUse
End If
End If

End Sub

阿佩 2009/4/4

匿名 說...

重貼~有分段落的
.Private Sub ComBtnPrint_Click()
.
. ' 當程式執行前 , 檢查一次到底有沒有需要處理的記錄存在 ,
. ' 如果沒有的話 , 就彈出一個訊息告訴使用者沒有記錄要處理 , 別亂按 !
. Worksheets("SUMMARY").Select
. Worksheets("Summary").Range("B3").Select
. ActiveCell.End(xlDown).Select
. LastRecAll = ActiveCell.Row
.
. Worksheets("Summary").Range("I3").Select
. ActiveCell.End(xlDown).Select
. LastRecPrinted = ActiveCell.Row
.
. If LastRecAll = LastRecPrinted Then
. MsgBox "沒資料可列印"
. Else
. Worksheets("Summary").Range("I4").Select
.
. If Worksheets("Summary").Range("I4").Value = "" Then
. FirstUse.FirstTimeUse
. Else
. SecondUse.SecondTimeUse
. End If
. End If
.
.End Sub

匿名 說...

再貼一次
Private Sub ComBtnPrint_Click()
....' 當程式執行前 , 檢查一次到底有沒有需要處理的記錄存在 ,
....' 如果沒有的話 , 就彈出一個訊息告訴使用者沒有記錄要處理 , 別亂按 !
....Worksheets("SUMMARY").Select
....Worksheets("Summary").Range("B3").Select
....ActiveCell.End(xlDown).Select
....LastRecAll = ActiveCell.Row

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

....If LastRecAll = LastRecPrinted Then
........MsgBox "沒資料可列印"
....Else
........Worksheets("Summary").Range("I4").Select
........If Worksheets("Summary").Range("I4").Value = "" Then
............FirstUse.FirstTimeUse
........Else
............SecondUse.SecondTimeUse
........End If
....End If
End Sub

威廉先生 說...

Hi 阿佩~

哈哈~ 看來你比我更著迷於這個 EXCEL VBA 呢~ 哈哈~ 其實解決一個問題的方法是有很多的, 都沒所謂 , 只要做到我們想要的結果就好~ 不用太在意有多少個解決方法的 ^^ 當然囉~ 程式碼越少越好是必然的~

另外, 可能你看到我貼出來的文章中的程式碼, 都是一大堆一大堆的堆在一起的, 不過我還是建議你習慣用你的第三個貼子的那個模式 , 因為會比較容易看, 當然囉~ 我所指的不止是自己 , 還有其他人 ^^

最新回應

Loading...

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


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