~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
好 ~ 先來看一下我的完整程式碼 :
==========================================
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 呢~ 哈哈~ 其實解決一個問題的方法是有很多的, 都沒所謂 , 只要做到我們想要的結果就好~ 不用太在意有多少個解決方法的 ^^ 當然囉~ 程式碼越少越好是必然的~
另外, 可能你看到我貼出來的文章中的程式碼, 都是一大堆一大堆的堆在一起的, 不過我還是建議你習慣用你的第三個貼子的那個模式 , 因為會比較容易看, 當然囉~ 我所指的不止是自己 , 還有其他人 ^^
發佈留言