本期目标:制作一个简单的出入库登记表。 根据唯一字段条码,来登记入库数量,出库数量,自动计算库存数量。
效果图:
简单的出入库流水表
目标:手工输入条码和名称,输入入库或出库数量后,自动计算本期仓库余数,自动输入填写日期。
这个需要用到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 If
End Sub
最终效果
这个功能用公式也能实现,只是数据量稍微一大,会造成打开文件是卡顿,用VBA其实是把集中的计算分开了。
想解决哪方面的问题,请给我留言。下期我想把这个表格做个下拉菜单,让输入简便化一些。