本期目标:制作一个简单的出入库登记表。 根据唯一字段条码,来登记入库数量,出库数量,自动计算库存数量。
效果图:
简单的出入库流水表
目标:手工输入条码和名称,输入入库或出库数量后,自动计算本期仓库余数,自动输入填写日期。
这个需要用到WorkSheet的Change事件。进入VBA界面。
我们的表格在Sheet1,单击选中
选中WorkSheet的Change事件后,会自动生成程序收尾
看代码:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column 4 And Target.Column 5 Then Exit Sub If Target.Row < 2 Then Exit Sub r = Target.Row arr = Range("a1:e" & r).Value For i = r To 2 Step -1 If arr(r, 2) = arr(i, 2) Then jin = jin + arr(i, 4) chu = chu + arr(i, 5) End If Next i Range("f" & r).Value = jin - chu Range("a" & r).Value = Now()End Sub
程序功能:从输入行开始合计与本行条码一样的总进货数减去总出货数,然后填写到余数列,并写入日期。
为了减少误操作,我们可以设计一个限制区域,光标移到日期列(第一列)和余数列(第6列)时,让光标自动移开。这在WorkSheet的SelectionChange事件里实现,前面步骤与选择Change事件一样,我们直接上代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then Target.Offset(0, 1).Select Exit Sub End If If Target.Column = 6 Then Target.Offset(0, -1).Select Exit Sub End IfEnd Sub
最终效果
这个功能用公式也能实现,只是数据量稍微一大,会造成打开文件是卡顿,用VBA其实是把集中的计算分开了。
想解决哪方面的问题,请给我留言。下期我想把这个表格做个下拉菜单,让输入简便化一些。