2018年5月19日 星期六

使用VBA製作銷貨訂購單與儲存資料(EXCEL當資料庫)

使用VBA製作銷貨訂購單與儲存資料(EXCEL當資料庫)

預覽畫面:


本範例主要分享銷貨訂單的自動化EXCEL當成輸入介面
當然也可以利用VBA裡的表單來製作,難度會比較高些,
不過感覺會更專業些,但是無論哪種方式,
最主要是可以輔助輸入的效率與正確性
讓輸入資料不易出錯,
也無法隨意竄改,
所以需要最後配合保護工作表
除了四個區域(單號、客戶、商品、數量)可以修改外,
其他都不能修改,避免輸入資料正確性
另外下拉清單也可以自動帶出其他資料
這樣就可以加快輸入效率,
最後,可以再利用VBA程式
將所有資料存在銷貨明細一筆紀錄單號也自動加一之後,
又可以繼續輸入資料,達到類似進銷存系統的目的。


以下分享流程:
1.訂單日期
02_到貨日期
03_到貨日期(避開六日)
04_客戶
05_序號
06_商品
07_小計
08_保護工作表
09_增加訂單明細工作表
10_VBA程式畫面
Public Sub 新增資料()
   '1.判斷在哪一列
   If Sheets("銷貨明細").Range("A2") = "" Then
       r = 2
   Else
       r = Sheets("銷貨明細").Range("A1").End(xlDown).Row + 1
   End If
   '2.輸出資料
   '單號
   Sheets("銷貨明細").Cells(r, "A") = Range("B2")
   '訂單日期
   Sheets("銷貨明細").Cells(r, "B") = Range("D2")
   '到貨日期
   Sheets("銷貨明細").Cells(r, "C") = Range("G2")
   '客戶編號
   Sheets("銷貨明細").Cells(r, "D") = Range("B3")
   '客戶名稱
   Sheets("銷貨明細").Cells(r, "E") = Range("C3")
   '連絡電話
   Sheets("銷貨明細").Cells(r, "F") = Range("G3")
   '地址
   Sheets("銷貨明細").Cells(r, "G") = Range("B4")
   '銷貨總額
   Sheets("銷貨明細").Cells(r, "H") = Range("G4")
  
   '3.清空資料
   'Range("B2") = ""
   Range("B3") = ""
   Range("E2") = ""
   Range("B7:B16").ClearContents
   Range("F7:F16").ClearContents


   '4.單號加1
   Range("B2") = Range("B2")+ 1
End Sub


**如果編號為S000X

   Range("B2") = Left(Range("B2"), 1) & Format(Right(Range("B2"), 4) + 1, "0000")

教學影音(完整版在論壇):

教學影音完整版在論壇:
https://groups.google.com/forum/#!forum/scu_excel_vba2_86

課程特色:
EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,
但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,
剛好我有近20年的VB程式設計資料庫設計的經驗,
教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,
ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,
覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,
就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

上課用書是:
Excel函數&VBA其實很簡單
(http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)
Excel VBA 與資料庫整合大活用
(http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

完整教學影音DVD申請
http://goo.gl/ZlBZE

相關學習:
    函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數

    EXCEL太複雜工作還是交給VBA吧!範例班級成績查詢

    EXCEL太複雜工作還是交給VBA吧!範例班級成績查詢

    預覽畫面:


    關於下拉清單快速查詢班級資料是常見問題,
    但是要做到這樣的結果,
    如果用EXCEL內建函數
    需要用到函數分別有:
    IF(比對)、SAMLL(改範圍比對與排序)、INDEX(抓資料)、IFERROR(過濾錯誤)
    而且還需要用陣列來執行,
    光複雜度,就令人卻步
    每每講完這部分,再講VBA的解法,
    反而用VBA來處理顯得更加簡便
    所以,
    若有更複雜的工作,要提高工作效率,
    建議,還是用VBA為佳。

    如何用VBA來做:


    Public Sub 班級()

       '1.刪除舊資料
       Range("G5:J12").ClearContents
       '1.輸出的列數
       k = 5
       '2.迴圈判斷班級
       For i = 2 To 12
           If Cells(i, "A") = Range("H2") Then
               Cells(k, "G") = Cells(i, "B")
               Cells(k, "H") = Cells(i, "C")
               Cells(k, "I") = Cells(i, "D")
               Cells(k, "J") = Cells(i, "E")
               k = k + 1
           End If
       Next
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)

       If Target.Address = "$H$2" Then
           Call 班級
       End If
    End Sub

    補充用EXCEL內建函數:
    以下是用IF(比對)、SAMLL(改範圍比對與排序)、INDEX(抓資料)、IFERROR(過濾錯誤)

    =IF($A2=$H$2,ROW()-3,"N")

    {=SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW()-4)}

    **注意SMAIL的比對為範圍,所以需要將比對條件改為範圍,另返回的列數也要是範圍,並且一定要用陣列執行(CTRL+SHIFT+ENTER)



    {=INDEX($A$1:$E$12,SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW()-4),COLUMN()-5)}




    {=IFERROR(INDEX($B$1:$E$12,SMALL(IF($A$2:$A$12=$H$2,ROW($A$2:$A$12),"N"),ROW(A1)),COLUMN(A1)),"")}


    教學影音(完整版在論壇):

    教學影音完整版在論壇:
    https://groups.google.com/forum/#!forum/scu_excel_vba2_86

    課程特色:
    EXCEL函數 VBA程式設計資料庫與網路資料是分別屬於不同領域的知識,
    但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,
    剛好我有近20年的VB程式設計資料庫設計的經驗,
    教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,
    ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,
    覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,
    就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!

    上課用書是:
    Excel函數&VBA其實很簡單
    (http://www.books.com.tw/exep/prod/booksfile.php?item=0010457292)
    Excel VBA 與資料庫整合大活用
    (http://www.books.com.tw/exep/prod/booksfile.php?item=0010463634)

    完整教學影音DVD申請
    http://goo.gl/ZlBZE

    相關學習:
      函數東吳進修推廣部, EXCEL, EXCEL VBA 函數 程式設計 線上教學 excel vba 教學 excel vba指令教學 vba範例教學excel  excel vba教學視頻 函數教學 excel函數