前幾天在論壇上看到一個求助貼,是關(guān)于“付款申請單”的,有點實際意義,我也曾想過要做一個類似的功能,不僅可以記錄付款明細(xì),還可以實現(xiàn)“申請、審核、審批”等一系統(tǒng)功能,甚至跟我的【財務(wù)管理系統(tǒng)】進行對接,實現(xiàn)根據(jù)付款申請自動生成憑證的功能......想得有點多了......。2、數(shù)據(jù),明細(xì)數(shù)據(jù)保存的地方:B3 單元格模糊、智能、聯(lián)想輸入的下拉菜單,數(shù)據(jù)來源于sheet數(shù)據(jù)表B列,要去重復(fù)值
如果查不到數(shù)據(jù)B3為空,B3、B4、F3可填寫數(shù)據(jù)
B3單元格查到數(shù)據(jù),B4、F3單元格自動填入數(shù)據(jù),數(shù)據(jù)來源于sheet數(shù)據(jù)表
我發(fā)現(xiàn)跟我們前面分享過的一個案例有相似之處:
入庫單:動態(tài)添加數(shù)據(jù)驗證、日期控件、ListBox下拉框選擇錄入、記錄集對象更新入庫明細(xì)表
區(qū)別在于表格的格式不同,基本的方法還是差不多的。
經(jīng)過分析,我發(fā)現(xiàn)他的表格需要稍微修改一下:
1、在“付款申請單”表中,需要增加一個字段:“付款單號”,作為區(qū)分不同記錄的唯一標(biāo)識;2、數(shù)據(jù)表中需要增加“付款單號“、“結(jié)算方式”等字段,在“付款申請單”表中有的數(shù)據(jù),我們都應(yīng)該存到“數(shù)據(jù)表”里。1、收款單位、收款賬號、開戶銀行等字段,都對應(yīng)一個單元格,通常我們會用Range(“B3”)、Range(“F3“)、Range(”B4“)等來表示、引用,這次我們來點新方法,我們把這些字段以及對應(yīng)的單元格放到一個類模塊clsRanges里,通過類模塊來引用,非常方便,不用再去看單元格的具體地址了,即便表格格式發(fā)生改變,我們只要在這個類模塊中修改一次就可以了:
Private ws As Worksheet
Private Sub Class_Initialize()
Set ws = ThisWorkbook.Worksheets("付款申請單")
End Sub
Public Property Get 日期() As Range
Set 日期 = ws.Range("B2")
End Property
Public Property Get 付款單號() As Range
Set 付款單號 = ws.Range("H2")
End Property
Public Property Get 收款單位() As Range
Set 收款單位 = ws.Range("B3")
End Property
......
在引用的時候,我們創(chuàng)建一個類模塊實例:
Public clsRG As New clsRanges
然后,如果我們要引用日期、收款單位等,我們輸入clsRG.,就可以直接選擇,非常方便,不容易出錯:
2、運用工作表的Selection Change事件:
(1)收款單位:我們插入一個TextBox、一個Listbox,當(dāng)點中該單元格時,顯示文本框、列表框;文本框可模糊搜索,提取“數(shù)據(jù)”表中的收款單位、收款賬號、開戶銀行。(2)結(jié)算方式、款項用途、內(nèi)容說明,我們添加數(shù)據(jù)驗證,把“數(shù)據(jù)”表中已有的記錄列出來供選擇,如果沒有符合的,可以手工輸入;(3)付款單號:添加數(shù)據(jù)驗證,把“數(shù)據(jù)”表中所有付款單號列出來供選擇;如果選擇了已有記錄,則把數(shù)據(jù)填入相應(yīng)單元格,可修改、打?。?/span>3、日期,我們把【日期控件】整合進來,通過點選輸入,方便快捷。
4、添加命令按鈕,執(zhí)行不同的功能: