~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
大家好嗎 ~ 這一回要開始寫程式囉 ~~~
如果大家有想過上一次我給你的提示 , 那這一章在開始之前 , 你應該也嘗試過自己動手做了 ~
最初學習的時候 , 我有給你說過 , 其實電腦也很笨的 , 你不叫它做 , 它就什麼也不做 , 你要它做 , 它就什麼也會做 , 只是你要先告訴它怎樣做 . 所以 , 我們第一件要做的事情 , 就是要利用程式碼 , 告訴電腦要怎樣做 .
第一 , 上次我們增加了 " 已打印 " 和 " 打印日期 " 這兩個東西 , 這兩個東西的資料 , 理論上來說是電腦加上去的 , 看的也只是電腦 , 不是使用者 .
( Pic4_1 )
按照上一回所說的條件 , 和之前的準備功夫 , 第一件要做好的事 , 就是要告訴電腦 , 條件在那裡 .
看一看上面的圖 , " 已打印 " 和 " 打印日期 " 分別是 "H" 和 "I" , 條件的位置已經知道了 , 之後我們來想一想上次給的提示 : 如果 xxx 成立 , 就進行 xxx , 否則就進行 xxx . 英文是 if ~ then ~ else . 也就是說 : 如果 " 已打印 " 的值出現 "Y" , " 打印日期 " 有記錄 , 那就不用打印 . 兩個都沒有記錄的話就要打印 .
條件有了 , 尋找的方法都有了 , 那麼 , 現在就開始動手把 VBA 程式做出來吧 ~
在懶人計劃 1 的時候 , 大家應該明白到如何讓電腦分辨出條件是否成立吧 , 今次 , 我們的第一個任務 , 就是教電腦怎樣才是條件成立 . 上面有說過 , 今次的衡量條件是 , 只要記錄 " 已打印 " 和 " 打印日期 " 都沒有資料 , 就給我把文件打印出來 . 就是這麼簡單 , 如果我們要告訴電腦 , 請你記得一件事情 : 電腦是很笨的 !
對 , 就是要你抓住它的手 , 一步一步的教它向前走 . 有沒有發覺 , 你用幾千塊買了一台高頻低能回來 ?? 哈 ~ 當然 , 程式完成後 , 它就不是高頻低能 , 而是終於有點實用價值 ~
好吧 ~ 廢話又太多了 ~ 來 , 開始吧 ~
確定條件成立的方法 :
if Worksheets("Summary").Range("H??").value ="Y" and worksheets("Summary").Range("I??").value <>""
簡單地解釋一下這句是什麼東西 , 如果 SUMMARY 頁面的 H?? 的值是 Y 和 SUMMARY 頁面的 I?? 不是空白 .
開始明白了吧 ~ 配合一下之前說過的 , IF 之後是 THEN 之後是 ELSE ( IF ~ THEN ~ ELSE ~ ) , 這次 , 我們只需要用到 IF ~ THEN ~ 就可以了 . 不過 , 由於條件多於一個 , 所以 , 中間多了一個 AND , 目的就是要告訴電腦 , 要多條件成立的情況下才做 .
等等 ! 上面說的是不是有問題 ?? H 是記錄 " 是否已打印 " , I 是記錄 " 打印日期 " , 那麼 , 上面的程式碼不就是廢話了嗎 ?
呵呵呵 ~ 當然囉 ~ 我可不會便宜你的 ~ 你要懶嘛 ~ 就要自己學會技術哦 ~ 哈哈哈哈哈 ~
習題 !!!!
上面的是例子 , 你要做的 , 就是寫一句當 " 已打印 " 沒有記錄 , " 打印日期 " 又沒有記錄的程式碼 . ( 只要你細心地想一下就會想到了 , 其實是很簡單的 XD )
下一回 , 我們就跟上次的懶人計劃 1 一樣 , 不廢話 ( 又是小一點吧 ~ 哈哈 ~ ) , 直接來寫程式 , 然後 , 就再一次把你每天都在重複中步驟一次過消滅 ~ 讚美吧 ~~~~~~~~
哈 ~~~ 利路亞 ~~~ 哈 ~~~ 利路亞 ~~~ 哈利路亞 ~~~ 哈利路亞 ~~~ 哈利 ~~~~ 路亞 ~~~
2 留言:
請問我有兩個檔案,一個是"主檔",記錄資料如下:
編號 名稱 庫存 銷售量
001 AAA 50
002 BBB 100
003 CCC 90
004 DDD 80
005 EEE 70
另外一個"銷售檔"記錄資料如下:
編號 消售量
001 5
003 10
004 15
請問要如何做可以將"銷售檔"的[銷售量]資料自動套入"主檔"同編號內的[銷售量]欄呢?期盼版主能解惑,感激不盡!
ps.資料筆數約1千多筆
您可以參考一下
說明:
◎ 巨集 寫在 主檔.xlsm
◎ 銷售檔.xlsx ----> 過帳前 ---> 把 每個編號 的 銷售量 彙總 (一個編號 只有 一個銷售量)
----> 每個月都新增一張工作表,
工作表名稱:2009_09 ---> 表示2009年9月份銷售量彙總
◎ 開啟 主檔.xlsm 及 銷售檔.xlsx
◎ 在 A2 及 B2 輸入工作表名稱
◎ 按過帳的 button (已經指定" 銷售數量與主檔合併"巨集)
Dim s As Integer
Dim m As Integer
Dim totalRec_s As Integer ' 總列數-銷售檔
Dim totalRec_m As Integer ' 總列數-主檔
Dim WorkSheetName As String ' 工作表名稱
Dim WorkSheetNameA As String ' 工作表名稱
Dim productNo_s As Integer ' 銷售檔的編號
Dim productNo_m As Integer ' 主檔的編號
Dim salseAmount As Integer ' 銷售檔的銷售數量
Sub 銷售數量與主檔合併()
'
' 銷售數量與主檔合併
'
' 把[主檔.xlsx 的 "銷售檔過帳"工作表 的 "B2"儲存格]作用儲存格
' 把"B2"儲存格的內容放到WorkSheetName變數中
' 把"A2"儲存格的內容放到WorkSheetNameA變數中
Windows("主檔.xlsm").Activate
Sheets("銷售檔過帳").Select
WorkSheetName = Range("B2").Text
WorkSheetNameA = Range("A2").Text
' 選取 "2009"工作表 的 "D1"儲存格
Sheets(WorkSheetNameA).Select
' 清除D欄內容, 才不會與新的內容混在一起
Columns("D:D").Select
Selection.ClearContents
' 把 WorkSheetName變數內容+"_銷售量" 放到 "D1"儲存格, 作為欄位名稱
Range("D1") = WorkSheetName + "_銷售量"
' 找出 "主檔.xlsx" 的總筆數-->totalRec_m
Range("A1").Select
ActiveCell.End(xlDown).Select
totalRec_m = ActiveCell.Row
排序_A ("D" & totalRec_m)
'========================================
' 找出 "銷售檔.xlsx" 的總筆數-->totalRec_s
Windows("銷售檔.xlsx").Activate
Sheets(WorkSheetName).Select
Range("A1").Select
ActiveCell.End(xlDown).Select
totalRec_s = ActiveCell.Row
Range("A1").Select
排序_A ("B" & totalRec_s)
'========================================
' 比對產品編號,
' 沒有檢查 銷售檔 的 編號---->是否在 主檔的範圍內,
' 沒有檢查 銷售檔 的 銷售量---->是否超過主檔的庫存數量
For s = 2 To totalRec_s
' 把銷售檔的編號 放到 productNo_s
Windows("銷售檔.xlsx").Activate
Sheets(WorkSheetName).Select
Range("A" & s).Select
productNo_s = Range("A" & s).Text
salseAmount = Range("B" & s).Text
For m = 2 To totalRec_m
' 把主檔的編號 放到 productNo_m
Windows("主檔.xlsm").Activate
Sheets(WorkSheetNameA).Select
Range("A" & m).Select
productNo_m = Range("A" & m).Text
' 如果 編號 相等, 就把 銷售量 放入 主檔的D欄
If productNo_s = productNo_m Then
Windows("主檔.xlsm").Activate
Sheets(WorkSheetNameA).Select
Range("D" & m) = salseAmount
End If
Next
Next
Range("A1").Select
End Sub
'========================================
'========================================
Sub 排序_A(pos) ' pos=最後一個儲存格
' 排序A欄 Macro
Dim s As String
s = "A2:" & pos
Range(s).Select
Range("A2").Activate
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke, DataOption1:=xlSortNormal
End Sub
==============
我是阿佩,如需檔案,請留下E-mail,我會寄給你的.我用的版本是office 2007, 如果要存成office 20033 要跟我說.
祝工作順利
發佈留言