唐风帆 陈小鹏
摘 要:对于小微企业的库存管理来讲,往往面临大型定制化软件不灵活且费用较高, 而用简单的excel表格来记录却功能不足的情况。因此利用EXCEL VBA程序,量身定制一些小型的库存系统,具有一定的实用性。
关键词:EXCEL;进销存;小微企业;VBA
由于小微企业具有规模小、个性化程度高等特点,因此在仓库管理过程中,大型定制化的库存软件往往并不适用,且费用不菲。而利用EXCEL VBA编程功能,开发出适用小微企业,既灵活且高效的库存软件,具有一定的现实意义。本文用EXCEL VBA编程功能,为某小微企业的物料仓库,量身定制了一套库存系统。经该单位一年多的使用,取得了较好的应用效果。因此将该设计方案代码予以公开,给各位企业财务人员参考,并欢迎大家批评指正。
一、系统架构介绍
本系统最大的特点为:不需出入库单等一系列复杂的EXCEL表格,直接用一个物料清单加一个弹出窗口,就完成了物料的出入库核算工作。
如图1所示,物料清单表包括了该仓库所有物料名称。操作员只需在找到被操作物料,即可弹出一个操作窗口,其中可以录入出入库等信息。待信息录入完成后,在窗口中点击“确认输入”,就可以把录入的信息保持到专门的表格中(图2)进行统一保存。
二、系统的具体设计
1.弹出窗体设计
弹出窗体是整个系统的核心,所有库存操作都是在该窗体中实现。因此首先需要在VBA编辑器中插入一个窗体,并在窗体上安置各种控件。该弹出窗体的具体布局见图3,具体的控件类型和控件名称见表1。
2. 弹出窗体初始化程序设计
接下来为该窗体设计的设计初始化程序,其主要目的是为窗体上的控件赋予初始值,其中操作类型的初始值为“领用、入库、退货”; 领用人和使用地点的初始值,分别来自特定的工作表区;年月日的初始值默认取当天系统日期。具体代码如下:
Private Sub UserForm_Activate()
'对操作类型下拉框的数值设置
cmb操作类型.AddItem "领用"
cmb操作类型.AddItem "入库"
cmb操作类型.AddItem "退货"
'对物料明細文字框填充数据
txb明细.Text = ActiveSheet.Cells(Selection.Row, 1) & "-" & ActiveSheet.Cells(Selection.Row, 2)
'添加领用人的下拉框数据
For i = 2 To Worksheets("人物地点").Cells(Rows.Count, 1).End(xlUp).Row
cmb领用人.AddItem Worksheets("人物地点").Cells(i, 1)
Next i
'添加使用地点的下拉框数据
For i = 2 To Worksheets("人物地点").Cells(Rows.Count, 3).End(xlUp).Row
cmb使用地点.AddItem Worksheets("人物地点").Cells(i, 3)
Next i
'添加年月日的下拉框数据
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. 命令按钮代码设计
按照系统的设计逻辑,用户只需要在窗体上输入库存操作信息,然后点击“确认输入”,就可把输入的信息,导入到个名为“数据库”的EXCEL表进行统一保存。“确认输入”按钮具体代码如下:
Private Sub cmd确认输入_Click()
Dim x As Integer
x = Worksheets("数据库").Cells(Rows.Count, 1).End(xlUp).Row + 1 '找到最新空白行
Worksheets("数据库").Cells(x, 1) = cmb年.Value '导入年
Worksheets("数据库").Cells(x, 2) = cmb月.Value '导入月
Worksheets("数据库").Cells(x, 3) = cmb日.Value '导入日
Worksheets("数据库").Cells(x, 4) = cmb操作类型.Value '导入操作类型
Worksheets("数据库").Cells(x, 5) = Left(txb明细.Value, 5) '导入物料编码
Worksheets("数据库").Cells(x, 6) = Mid(txb明细.Value, 7, 20) '导入物料名称
Worksheets("数据库").Cells(x, 7) = txb数量.Value '导入数量
Worksheets("数据库").Cells(x, 8) = cmb领用人.Value '导入领用人
Worksheets("数据库").Cells(x, 9) = cmb使用地点.Value '导入使用地点
Worksheets("数据库").Cells(x, 10) = txb其他说明.Value '导入其他说明
Unload frm录入
End Sub
4. 窗体调用代码设计
窗体调用方式是该系统的最大的创新点,传统的库存系统都在操作窗口输入物料名称,而该系统是直接在物料表上点击弹出操作窗口,同时自动把物料名称等信息带出来,这样极大的方便了仓库人员的操作,具体代码如下:
Sub 调用窗体()
If Selection.Cells.Count > 1 Then ' 检查是否只选择了一个单元格
MsgBox "只能选择一个单元格", 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
三、系统总结
由于篇幅的限制,该文只阐述了库存系统的核心部分,后续库存报表的汇总和分析,没有进行说明。因为该系统采取的是物料清单加弹出窗口的方式,因此首先保证了所有的物料都是统一的编码;同时每一次窗口操作,最终都导入到数据库文件统一保存,又保证了所有的库存数据都是标准格式。在此基础上,后续进行数据透视表或图表加工,是极其简便的,因此该文就不作过多的诠释。该系统的不足之处在于,由于该单位的物料管理采取的是个别辨认法,因此如果是采取先进先出或者加权平均进行物料核算的单位,需要对代码进行一定程度的修改。
参考文献:
[1] 侯志才: 《基于EXCEL的进销存信息管理系统构建》,载于《财会月刊》2015年第25期,第71-72页
[2] 苏术锋: 《基于Excel VBA进销存信息系统开发》,载于《中国管理信息化》2011年第15期,第3-4页