標題:
[分享]
銷售管理完成版
[打印本頁]
作者:
yagami12th
時間:
2012-1-3 10:29
標題:
分享(初學) 前幾天看書寫的銷售管理小程式
剛學vba不久,找了一些書來練習,其中一個範例,蠻實用的東西,雖然很簡單,裡面有打詳細的註解,應該很清楚。
檔案如下:
[attach]9010[/attach]
作者:
brabus
時間:
2012-11-15 14:57
銷售資料的顧客欄
他是可下拉變動的
是否該選完後固定
否則會不會被人動到
就找不回來了
作者:
kai6929
時間:
2012-11-19 10:05
標題:
銷售管理完成版
各位大師
分享不錯的巨集設計,純交流各位瞧瞧[attach]13194[/attach]
作者:
c_c_lai
時間:
2012-11-19 11:55
回復
1#
kai6929
Private Sub myComboBox_Change()
Call 製作請款書(myForm.myComboBox.Text)
End Sub
複製代碼
如果修改成.... ,視覺感受會比較佳!
Private Sub myComboBox_Change()
myForm.Hide
Call 製作請款書(myForm.myComboBox.Text)
End Sub
複製代碼
作者:
GBKEE
時間:
2012-11-19 16:47
回復
1#
kai6929
不錯的分享,但同 一顧客選第二次時,在新增工作表的命名會錯誤
純參考;表單的程式碼
Private Sub myComboBox_Change()
' Call 製作請款書(myComboBox.Text)
製作請款書 '(myComboBox.Text)
End Sub
Private Sub UserForm_Initialize()
'myForm.myComboBox.List = Array("A公司", "B建設公司", "C電器公司", "D不動產公司") '
'下列程式碼 可根據 "銷售資料" B欄的顧客 建立 myComboBox 的 List
With Sheets("銷售資料")
.Range("B3", .[B3].End(xlDown)).AdvancedFilter xlFilterCopy, , .Cells(1, Columns.Count), True
'AdvancedFilter 進階篩選 不重複的顧客名單到.Cells(1, Columns.Count)最後一欄
With .Range(.Cells(2, Columns.Count), .Cells(2, Columns.Count).End(xlDown)) '第2列到最後有資料的列
myComboBox.List = .Value
.EntireColumn.Clear
End With
End With
End Sub
Private Sub 製作請款書()
Application.ScreenUpdating = False
With Sheets("銷售資料")
.Range("A3").AutoFilter 2, myComboBox '自動篩選 B欄 myComboBox(顧客)
.Columns(2).Hidden = True '隱藏B欄
.Range("A3").CurrentRegion.Copy '複製篩選出的 日期,商品,單價,數量,金額
.AutoFilterMode = False
With Sheets("請款書雛形")
.Range("A6") = myComboBox
.Range("A11").CurrentRegion = "" '清除舊有資料
.Range("A11").PasteSpecial xlPasteValuesAndNumberFormats '貼上 值及公式
End With
Application.CutCopyMode = False '取消複製的虛線
.Columns(2).Hidden = False '取消隱藏B欄
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-11-20 07:35
本帖最後由 c_c_lai 於 2012-11-20 07:38 編輯
回復
3#
GBKEE
回復
1#
kai6929
的確是個蠻不錯的範例分享,尤其是 AdvancedFilter 進階篩選的實務應用,
其細膩地處理與表達均十分精湛,謹此感謝 GBKEE 的線上指導。
目前,我將 #3 的程式略為修改成:如果清單 (ComboBox) 內工作表業已存在,
則再次將它開啟,否則將工作表「請款書雛形」複製到所有工作表的最後。
如此,才不致因重覆開啟而導致的錯誤中斷執行 (GBKEE 的語法是直接寫入到「請款書雛形」)。
(#1 的原本用意,可能是想保留原始母表,而於選單時再另行新增「請款書」)
Private Sub 製作請款書()
Dim cts As Integer, existed As Boolean
Application.ScreenUpdating = False
existed = False
For cts = 3 To Worksheets.Count
If Sheets(cts).Name = myComboBox Then existed = True: Exit For
Next cts
' 將工作表「請款書雛形」複製到所有工作表的最後
If existed = False Then Worksheets("請款書雛形").Copy After:=Worksheets(Worksheets.Count): cts = Worksheets.Count
With Sheets("銷售資料")
.Range("A3").AutoFilter 2, myComboBox ' 自動篩選 B 欄 myComboBox(顧客)
.Columns(2).Hidden = True ' 隱藏B欄
.Range("A3").CurrentRegion.Copy ' 複製篩選出的 日期,商品,單價,數量,金額
.AutoFilterMode = False
With Worksheets(cts)
.Name = myComboBox ' 設定工作表名稱
.Range("A6") = myComboBox
.Range("A11").CurrentRegion = "" ' 清除舊有資料
.Range("A11").PasteSpecial xlPasteValuesAndNumberFormats ' 貼上 值及公式
End With
Application.CutCopyMode = False ' 取消複製的虛線
.Columns(2).Hidden = False ' 取消隱藏B欄
End With
Application.ScreenUpdating = True
End Sub
複製代碼
[attach]13200[/attach]
作者:
GBKEE
時間:
2012-11-26 16:28
回復
22#
c_c_lai
工作表[銷售資料][請款書雛形]如有移動到第2工作表以後會有錯誤發生
建議修改如下:
Private Sub 製作請款書()
Dim cts As Integer, existed As Boolean
Application.ScreenUpdating = False
existed = False
For cts = 1 To Worksheets.Count
If Sheets(cts).Name = myComboBox Then existed = True: Exit For
Next cts
' 將工作表「請款書雛形」複製到所有工作表的最後
If existed = False Then
Worksheets("請款書雛形").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = myComboBox
End If
With Sheets("銷售資料")
.Range("A3").AutoFilter 2, myComboBox ' 自動篩選 B 欄 myComboBox(顧客)
.Columns(2).Hidden = True ' 隱藏B欄
.Range("A3").CurrentRegion.Copy ' 複製篩選出的 日期,商品,單價,數量,金額
.AutoFilterMode = False
With Worksheets(myComboBox.Value)
' .Name = myComboBox ' 設定工作表名稱
.Range("A6") = myComboBox
.Range("A11").CurrentRegion = "" ' 清除舊有資料
.Range("A11").PasteSpecial xlPasteValuesAndNumberFormats ' 貼上 值及公式
End With
Application.CutCopyMode = False ' 取消複製的虛線
.Columns(2).Hidden = False ' 取消隱藏B欄
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-11-26 20:32
回復
25#
GBKEE
我已經將 Code 如您的語法修正了,我覺得用 myComboBox.Value 來取代 cts 會更貼切,謝謝您指導!
' 將工作表「請款書雛形」複製到所有工作表的最後
If existed = False Then Worksheets("請款書雛形").Copy After:= Worksheets
Worksheets.Count): [color=Red]ActiveSheet.Name = myComboBox[/color]
With Sheets("銷售資料")
.Range("A3").AutoFilter 2, myComboBox ' 自動篩選B欄myComboBox(顧客)
.Columns(2).Hidden = True ' 隱藏B欄
.Range("A3").CurrentRegion.Copy ' 複製篩選出的日期,商品,單價,數量,金額
.AutoFilterMode = False
With Worksheets([color=Red]myComboBox.Value[/color])
[color=Red] ' .Name = myComboBox [/color] ' 設定工作表名稱
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)