唐風(fēng)帆 陳小鵬

摘 要:對(duì)于小微企業(yè)的庫(kù)存管理來(lái)講,往往面臨大型定制化軟件不靈活且費(fèi)用較高, 而用簡(jiǎn)單的excel表格來(lái)記錄卻功能不足的情況。因此利用EXCEL ?VBA程序,量身定制一些小型的庫(kù)存系統(tǒng),具有一定的實(shí)用性。
關(guān)鍵詞:EXCEL;進(jìn)銷(xiāo)存;小微企業(yè);VBA
由于小微企業(yè)具有規(guī)模小、個(gè)性化程度高等特點(diǎn),因此在倉(cāng)庫(kù)管理過(guò)程中,大型定制化的庫(kù)存軟件往往并不適用,且費(fèi)用不菲。而利用EXCEL VBA編程功能,開(kāi)發(fā)出適用小微企業(yè),既靈活且高效的庫(kù)存軟件,具有一定的現(xiàn)實(shí)意義。本文用EXCEL VBA編程功能,為某小微企業(yè)的物料倉(cāng)庫(kù),量身定制了一套庫(kù)存系統(tǒng)。經(jīng)該單位一年多的使用,取得了較好的應(yīng)用效果。因此將該設(shè)計(jì)方案代碼予以公開(kāi),給各位企業(yè)財(cái)務(wù)人員參考,并歡迎大家批評(píng)指正。
一、系統(tǒng)架構(gòu)介紹
本系統(tǒng)最大的特點(diǎn)為:不需出入庫(kù)單等一系列復(fù)雜的EXCEL表格,直接用一個(gè)物料清單加一個(gè)彈出窗口,就完成了物料的出入庫(kù)核算工作。
如圖1所示,物料清單表包括了該倉(cāng)庫(kù)所有物料名稱。操作員只需在找到被操作物料,即可彈出一個(gè)操作窗口,其中可以錄入出入庫(kù)等信息。待信息錄入完成后,在窗口中點(diǎn)擊“確認(rèn)輸入”,就可以把錄入的信息保持到專(zhuān)門(mén)的表格中(圖2)進(jìn)行統(tǒng)一保存。
二、系統(tǒng)的具體設(shè)計(jì)
1.彈出窗體設(shè)計(jì)
彈出窗體是整個(gè)系統(tǒng)的核心,所有庫(kù)存操作都是在該窗體中實(shí)現(xiàn)。因此首先需要在VBA編輯器中插入一個(gè)窗體,并在窗體上安置各種控件。該彈出窗體的具體布局見(jiàn)圖3,具體的控件類(lèi)型和控件名稱見(jiàn)表1。
2. 彈出窗體初始化程序設(shè)計(jì)
接下來(lái)為該窗體設(shè)計(jì)的設(shè)計(jì)初始化程序,其主要目的是為窗體上的控件賦予初始值,其中操作類(lèi)型的初始值為“領(lǐng)用、入庫(kù)、退貨”; 領(lǐng)用人和使用地點(diǎn)的初始值,分別來(lái)自特定的工作表區(qū);年月日的初始值默認(rèn)取當(dāng)天系統(tǒng)日期。具體代碼如下:
Private Sub UserForm_Activate()
'對(duì)操作類(lèi)型下拉框的數(shù)值設(shè)置
cmb操作類(lèi)型.AddItem "領(lǐng)用"
cmb操作類(lèi)型.AddItem "入庫(kù)"
cmb操作類(lèi)型.AddItem "退貨"
'對(duì)物料明細(xì)文字框填充數(shù)據(jù)
txb明細(xì).Text = ActiveSheet.Cells(Selection.Row, 1) & "-" & ActiveSheet.Cells(Selection.Row, 2)
'添加領(lǐng)用人的下拉框數(shù)據(jù)
For i = 2 To Worksheets("人物地點(diǎn)").Cells(Rows.Count, 1).End(xlUp).Row
cmb領(lǐng)用人.AddItem Worksheets("人物地點(diǎn)").Cells(i, 1)
Next i
'添加使用地點(diǎn)的下拉框數(shù)據(jù)
For i = 2 To Worksheets("人物地點(diǎn)").Cells(Rows.Count, 3).End(xlUp).Row
cmb使用地點(diǎn).AddItem Worksheets("人物地點(diǎn)").Cells(i, 3)
Next i
'添加年月日的下拉框數(shù)據(jù)
For i = 2016 To 2030
cmb年.AddItem i
Next i
For i = 1 To 12
cmb月.AddItem i
Next i
For i = 1 To 31
cmb日.AddItem i
Next i
cmb年.Value = Year(Date)
cmb月.Value = Month(Date)
cmb日.Value = Day(Date)
End Sub
3. 命令按鈕代碼設(shè)計(jì)
按照系統(tǒng)的設(shè)計(jì)邏輯,用戶只需要在窗體上輸入庫(kù)存操作信息,然后點(diǎn)擊“確認(rèn)輸入”,就可把輸入的信息,導(dǎo)入到個(gè)名為“數(shù)據(jù)庫(kù)”的EXCEL表進(jìn)行統(tǒng)一保存。“確認(rèn)輸入”按鈕具體代碼如下:
Private Sub cmd確認(rèn)輸入_Click()
Dim x As Integer
x = Worksheets("數(shù)據(jù)庫(kù)").Cells(Rows.Count, 1).End(xlUp).Row + 1 ?'找到最新空白行
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 1) = cmb年.Value ? '導(dǎo)入年
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 2) = cmb月.Value ? '導(dǎo)入月
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 3) = cmb日.Value ? '導(dǎo)入日
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 4) = cmb操作類(lèi)型.Value ? '導(dǎo)入操作類(lèi)型
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 5) = Left(txb明細(xì).Value, 5) '導(dǎo)入物料編碼
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 6) = Mid(txb明細(xì).Value, 7, 20) '導(dǎo)入物料名稱
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 7) = txb數(shù)量.Value ? ? '導(dǎo)入數(shù)量
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 8) = cmb領(lǐng)用人.Value ? ? '導(dǎo)入領(lǐng)用人
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 9) = cmb使用地點(diǎn).Value ? ? '導(dǎo)入使用地點(diǎn)
Worksheets("數(shù)據(jù)庫(kù)").Cells(x, 10) = txb其他說(shuō)明.Value ? ? '導(dǎo)入其他說(shuō)明
Unload frm錄入
End Sub
4. 窗體調(diào)用代碼設(shè)計(jì)
窗體調(diào)用方式是該系統(tǒng)的最大的創(chuàng)新點(diǎn),傳統(tǒng)的庫(kù)存系統(tǒng)都在操作窗口輸入物料名稱,而該系統(tǒng)是直接在物料表上點(diǎn)擊彈出操作窗口,同時(shí)自動(dòng)把物料名稱等信息帶出來(lái),這樣極大的方便了倉(cāng)庫(kù)人員的操作,具體代碼如下:
Sub 調(diào)用窗體()
If Selection.Cells.Count > 1 Then ? ? ' 檢查是否只選擇了一個(gè)單元格
MsgBox "只能選擇一個(gè)單元格", vbCritical, "警告"
Exit Sub
End If
Dim x As Integer ? ? ? ? ? ? ? ? ? ? ?'檢查是否選擇了有效行
x = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If Selection.Row = 1 Or Selection.Row > x Then
MsgBox "選擇有效行", vbCritical, "警告"
Exit Sub
End If
frm錄入.Show ? '顯示窗體
End Sub
三、系統(tǒng)總結(jié)
由于篇幅的限制,該文只闡述了庫(kù)存系統(tǒng)的核心部分,后續(xù)庫(kù)存報(bào)表的匯總和分析,沒(méi)有進(jìn)行說(shuō)明。因?yàn)樵撓到y(tǒng)采取的是物料清單加彈出窗口的方式,因此首先保證了所有的物料都是統(tǒng)一的編碼;同時(shí)每一次窗口操作,最終都導(dǎo)入到數(shù)據(jù)庫(kù)文件統(tǒng)一保存,又保證了所有的庫(kù)存數(shù)據(jù)都是標(biāo)準(zhǔn)格式。在此基礎(chǔ)上,后續(xù)進(jìn)行數(shù)據(jù)透視表或圖表加工,是極其簡(jiǎn)便的,因此該文就不作過(guò)多的詮釋。該系統(tǒng)的不足之處在于,由于該單位的物料管理采取的是個(gè)別辨認(rèn)法,因此如果是采取先進(jìn)先出或者加權(quán)平均進(jìn)行物料核算的單位,需要對(duì)代碼進(jìn)行一定程度的修改。
參考文獻(xiàn):
[1] 侯志才: 《基于EXCEL的進(jìn)銷(xiāo)存信息管理系統(tǒng)構(gòu)建》,載于《財(cái)會(huì)月刊》2015年第25期,第71-72頁(yè)
[2] 蘇術(shù)鋒: 《基于Excel VBA進(jìn)銷(xiāo)存信息系統(tǒng)開(kāi)發(fā)》,載于《中國(guó)管理信息化》2011年第15期,第3-4頁(yè)