从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

大家好,今天是从零开始制作【出入库报表】第三课,上一课我们实现了出入库流水的增加功能 。今天,我们来接着实现新的功能 。有了出入库流水以后,我们就会涉及查找库位和和数量 。首先为大家演示一下,完成以后的效果图 。

从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图1 库位信息查询效果图
那我们是如何制作的呢?
这里,EK说一下思路 。
1、查看库位信息主要涉及:“产品名称(QAD)”,“库位”、“库存数量”等方面 。
2、这里我们通过“产品名称”来做标识 。
3、逻辑关系:产品-库存数量= 【产品-入库数量】-【产品-出库数量】、产品-库位-库存数量= 【产品-库位-入库数量】-【产品-库位-出库数量】
4、理清逻辑关系 。一步一步,进行功能实现 。


下面,我们来实现查询库存库位信息
1、我们先给【入库流水账】和【出库流水账】中添加一下演示数据 。如图2和图3.


从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图2 入库流水账演示数据


从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图3 出库流水账演示数据


3、在【库存跟踪表】中E2的公式为:E2=SUMIF(入库流水账!$A:$A,$A6,入库流水账!$E:$E)-SUMIF(出库流水账!$A:$A,$A6,出库流水账!E:E) 。往下填充至最后一行 。操作如下:
从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图4 公式效果图


4、打开VBE窗口,这里有两种方法 。第一种,快捷键【ALT】 【F11】 。第二种,点击[开发工具]选项卡中的[查看代码] 。
5、在模块1中创建两个过程:
过程1 代码如下:
Sub 生成库位信息()
Dim ArrRK, ArrCK, ArrGZ, arrg, ArrFZ(), hrq, hcq, hgz
hrq = Sheets("入库流水账").Cells(Sheets("入库流水账").Rows.Count, 1).End(xlUp).Row '【入库流水账】第1列最后一行行号
hcq = Sheets("出库流水账").Cells(Sheets("出库流水账").Rows.Count, 1).End(xlUp).Row '【出库流水账】第1列最后一行行号
hgz = Sheets("库存跟踪表").Cells(Sheets("库存跟踪表").Rows.Count, 1).End(xlUp).Row '【库存跟踪表】第1列最后一行行号
Sheets("库存跟踪表").Range("f6:m" & hgz) = "" '清楚库存跟踪表的库位库存区域
'将入库流水中的数据赋值给数组
ArrRK = Sheets("入库流水账").Range("a2:g" & hrq)
ArrCK = Sheets("出库流水账").Range("a2:g" & hcq)
ArrGZ = Sheets("库存跟踪表").Range("f6:m" & hgz)
arrg = Sheets("库存跟踪表").Range("a6:m" & hgz)
Set d = CreateObject("scripting.dictionary") '创建字典
'将库位、库存数量赋值给ArrFZ数组
For i = 1 To UBound(ArrRK)
If Not d.exists(ArrRK(i, 1) & "-" & ArrRK(i, 7)) Then
n = n1
d(ArrRK(i, 1) & "-" & ArrRK(i, 7)) = n
ReDim Preserve ArrFZ(1 To 3, 1 To n)
ArrFZ(1, n) = ArrRK(i, 1)
ArrFZ(2, n) = ArrRK(i, 7)
ArrFZ(3, n) = ArrRK(i, 5)
Else
m = d(ArrRK(i, 1) & "-" & ArrRK(i, 7))
ArrFZ(3, m) = ArrFZ(3, m)ArrRK(i, 5)
End If
Next
For j = 1 To UBound(ArrCK)
If Not d.exists(ArrCK(j, 1) & "-" & ArrCK(j, 7)) Then
MsgBox "库位生成错误!错误信息:" & vbNewLine & "QAD:" & ArrCK(j, 1) & vbNewLine & "行号:" & j1 & vbNewLine & "库位号:" & ArrCK(j, 7)
Exit Sub
Else
m = d(ArrCK(j, 1) & "-" & ArrCK(j, 7))
ArrFZ(3, m) = ArrFZ(3, m) - ArrCK(j, 5)
End If
Next
For j = 1 To UBound(ArrFZ(), 2)
If ArrFZ(3, j) <> 0 Then
For i = 1 To UBound(arrg)
If ArrFZ(1, j) = arrg(i, 1) Then
If arrg(i, 6) = "" Then
arrg(i, 6) = ArrFZ(2, j)
ArrGZ(i, 1) = ArrFZ(2, j)
ArrGZ(i, 2) = ArrFZ(3, j)
ElseIf arrg(i, 8) = "" Then
arrg(i, 8) = ArrFZ(2, j)
ArrGZ(i, 3) = ArrFZ(2, j)
ArrGZ(i, 4) = ArrFZ(3, j)
ElseIf arrg(i, 10) = "" Then
arrg(i, 10) = ArrFZ(2, j)
ArrGZ(i, 5) = ArrFZ(2, j)
ArrGZ(i, 6) = ArrFZ(3, j)
ElseIf arrg(i, 11) = "" Then
arrg(i, 11) = ArrFZ(2, j)
ArrGZ(i, 7) = ArrFZ(2, j)
ArrGZ(i, 8) = ArrFZ(3, j)
Else
MsgBox "超出库位范围!请合理安排库位"
End If
End If
Next
End If
Next
Sheets("库存跟踪表").Range("f6").Resize(UBound(ArrGZ), UBound(ArrGZ, 2)) = ArrGZ
'释放数组内存
Erase ArrRK
Erase ArrCK
Erase arrg
Erase ArrFZ
MsgBox "数据生成完毕"
End Sub
【从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件】过程2 代码如下
Sub 清空库位信息()
hgz = Sheets("库存跟踪表").Cells(Sheets("库存跟踪表").Rows.Count, 1).End(xlUp).Row '【库存跟踪表】第1列最后一行行号
Sheets("库存跟踪表").Range("f6:m" & hgz) = ""
End Sub
以上代码,已经经过测试,可以完成库位库存的生成 。
从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图5 过程信息代码
6、 在【库存跟踪表】中添加两个按钮,名称分别为,“生成库位信息”,“清空库位信息” 。按钮分别指定宏为过程1-生成库位信息和过程2 -清空库位信息 。
操作步骤如下:
从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图6 插入控件
这里 , 我们就完成了,我们的库位和库存信息的生成与清空功能 。
我们来看一下效果 。
从零开始制作仓库出入库报表-从零开始制作仓库出入库报表的软件

图7 效果图
到这里,我们今天所希望完成的表单功能,库位库存查询已经完成 。明天我们接着来完善表单的其他功能 。如果,有不懂的地方,可以在评论区告诉EK 。如果想获得文中的文件,可以关注私信EK 。
最后,感谢小伙伴们的观看,我是EK 。如果上述内容能够帮助到你们,希望你们能点赞,关注 , 评论,转发 , 你们不清楚的地方我会尽力为大家解答,谢谢大家的支持 。我会给大家带来更多关于EXCEL的小技巧 。

相关经验推荐