錢永江
[摘? ? 要] 企業(yè)在實(shí)際經(jīng)營過程中,對(duì)于價(jià)值較高的重要資產(chǎn)必須加強(qiáng)監(jiān)管。企業(yè)一般通過購入管理軟件(OA)作為管理工具實(shí)現(xiàn)監(jiān)管目標(biāo)。但外購軟件往往與企業(yè)實(shí)際期望存在較大出入,而且存在二次開發(fā)費(fèi)用及日常維護(hù)費(fèi)用較高的現(xiàn)實(shí)問題。文章應(yīng)用Excel VBA語言,開發(fā)一款與企業(yè)實(shí)際契合度較高、人機(jī)交互的資產(chǎn)管理臺(tái)賬,不但能最大限度地節(jié)約公司經(jīng)費(fèi),而且能滿足公司日常管理需要,實(shí)時(shí)更新管理功能。
[關(guān)鍵詞] 資產(chǎn)集中管理;臺(tái)賬;VBA;EXCEL函數(shù)
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 15. 035
[中圖分類號(hào)] F234? ? [文獻(xiàn)標(biāo)識(shí)碼]? A? ? ? [文章編號(hào)]? 1673 - 0194(2020)15- 0080- 03
0? ? ? 前? ? 言
集團(tuán)公司財(cái)務(wù)人員在日常工作中,需要經(jīng)常登記一些集團(tuán)OA或財(cái)務(wù)系統(tǒng)無法記載的信息,比如登記集團(tuán)公司下的定期存單的臺(tái)賬(所屬子公司、存單號(hào)、存入信息、到期日、支取信息等),集團(tuán)公司租賃房產(chǎn)的租賃臺(tái)賬,集團(tuán)公司下貸款信息臺(tái)賬等。在這些極具個(gè)性化的資產(chǎn)(負(fù)債)管理活動(dòng)中,如直接應(yīng)用軟件開發(fā)服務(wù)商提供管理軟件,不僅不夠經(jīng)濟(jì),而且后續(xù)提升改良頻繁。如僅用Excel登記,其修改的隨意性較大且無過程痕跡,安全性不佳。筆者在實(shí)際工作中,通過編制VBA程序,定制相關(guān)資產(chǎn)的管理臺(tái)賬。既提高財(cái)務(wù)人員的資產(chǎn)(負(fù)債)管理能力,又能以最經(jīng)濟(jì)的方式提高辦公效率。
通常在Office-Excel的工作簿里自帶VBA工作環(huán)境,本文以Excel 2007版本為基礎(chǔ),通過舉例介紹集團(tuán)金融資產(chǎn)集中管理臺(tái)賬的部分控件及代碼,實(shí)現(xiàn)相關(guān)信息的保存、查詢、修改與打印功能。
1? ? ? 金融資產(chǎn)集中管理臺(tái)賬設(shè)計(jì)思路與功能要求
1.1? ?設(shè)計(jì)思路
一般需要通過輔助臺(tái)賬登記相關(guān)信息的金融資產(chǎn)包括定期存單、承兌匯票等。本文僅以定期存單為例,介紹構(gòu)建此類金融資產(chǎn)管理臺(tái)賬的思路、所需的功能控件及其代碼。
構(gòu)建思路:通過新增(支?。{單的方式實(shí)現(xiàn)對(duì)金融資產(chǎn)的管理,一個(gè)系統(tǒng)編號(hào)對(duì)應(yīng)一份定期存單,實(shí)現(xiàn)對(duì)存單的存取、查詢管理及打印功能。系統(tǒng)編號(hào)具有唯一性,以計(jì)算機(jī)系統(tǒng)日期(8位)+(C 或Z)+后綴序號(hào)形式編碼。其中C表示存入,Z表示支取。1.2? ?金融資產(chǎn)管理臺(tái)賬的功能要求
具備金融資產(chǎn)信息錄入、存儲(chǔ)、修改、查詢、提取等功能;實(shí)現(xiàn)查詢信息的匯總功能;查詢過程中,具備基本的人機(jī)交互功能;實(shí)現(xiàn)查詢表單的打印功能。
在同一工作簿下建立兩個(gè)工作表:一個(gè)前臺(tái)工作表用于登記、修改及查詢功能;另一個(gè)后臺(tái)工作表用于存放數(shù)據(jù)(為避免隨意修改本后臺(tái)數(shù)據(jù),本表宜深度隱藏,visible=2)。
輸入的簡易界面如圖1所示。
查詢具有某一共性信息的報(bào)表界面如圖2所示。
2? ? ? 主要功能控件的代碼
2.1? ?“新增”功能控件代碼
新增功能控件主要是實(shí)現(xiàn)所錄入的金融資產(chǎn)信息的存儲(chǔ)功能,代碼如下:
Private Sub CommandButton1_Click()
Dim j%, i%, x%
j = Sheet1.[a65536].End(xlUp).Row
x = Sheet3.[a65536].End(xlUp).Row
Sheet1.[c2] = "存入存單登記!"
If MsgBox("確定保存?", vbOKCancel) = 1 Then
For i = 4 To j
If Left(Sheet3.Cells(x, 2).Value, 8) = Format(Now, "yyyymmdd") Then
Sheet1.Cells(i, 7) = Left(Sheet3.Cells(x, 2).Value, 8) & "C" & Format(Right(Sheet3.Cells(x, 2).Value, 2) + 1, "00")
Else
Sheet1.Cells(i, 7) = Format(Now, "yyyymmdd") & "C01"
End If
For k = 1 To 6
Sheet3.Cells(x + 1, 1) = Sheet1.[B2]
Sheet3.Cells(x + 1, 2) = Sheet1.Cells(i, 7)
Sheet3.Cells(x + 1, k + 2) = Sheet1.Cells(i, k)
Next k
x = x + 1
Next i
Sheet1.Cells(j + 1, 1) = "合計(jì):"
Sheet1.Cells(j + 1, 3) = WorksheetFunction.Sum(Sheet1.Range("c4:c" & j))
If MsgBox("已保存" & j - 3 & "條記錄!" & Chr(13) & "是否新增新的記錄?", vbOKCancel) = 1 Then
Sheet1.Range("b2:f2,A4:g" & j + 1).ClearContents