大家好,今天,我们接着进行出入库报表的制作。昨天的我们做好了表格的基础框架的搭建。

这里和大家明确一个事情,在进行功能的实现的时候,如果有一些基础性的东西,EK不会和之前的文章中,会很清晰地和大家分析,公式是如何如何实现,VBA中代码为什么会这么写?因为EK想的是,尽量多实现功能,提高表格的重用性。如果大家希望知道如何实现,大家可以在评论区告诉EK,EK会尽可能地帮助大家理解,再次,谢谢大家。

今天准备实现入库单据的录入,和出库单据的录入。

打开昨天的EXCEL文件【VBA制作出入库报表】,点击【单据操作】表。

1、首先,咱们实现一个仓库和库位的二级联动。选中【单据操作】表中的仓库标题下的“F4:F15” 单元格,点击"数据"标签卡中的"数据验证","允许"中选择"序列"。来源选择【现有库存】中的B1:E1单元格,最后点击确定。

2、选中【现有库位】中的B1:E21 单元格,然后在“公式”选项卡中,选择“根据所选内容创建”,选择“首行”,点击“确定”。

3、选中【单据操作】中的G4单元格,点击"数据"标签卡中的"数据验证","允许"中选择"序列"。来源写入公式=INDIRECT($F4),点击“确定”。整个操作完成,制作及效果图如图1.

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(1)

图1 二级联动制作及效果图

4、选中【单据操作】中的A2单元格,点击"数据"标签卡中的"数据验证","允许"中选择"序列"。来源写入"入库单,出库单",注意这里是英文输入法下的逗号。点击确定。

5、选中C3,D3,E3,F3,H3,B4.分别写入公式:

C3=LEFT($A$2,2)& "时间"

D3=LEFT($A$2,2)& "单号"

E3=LEFT($A$2,2)& "数量"

F3=LEFT($A$2,2)& "仓库"

H3=LEFT($A$2,2)& "类型"

B4=IF(A4="","",VLOOKUP(A4,基础信息!A:B,2,0))

将B4单元格往下填充至B15.处理完毕。来看一下效果图

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(2)

图2 出入库单效果图

6、选中【现有库位】中的H1:I5 单元格,然后在“公式”选项卡中,选择“根据所选内容创建”,选择“首行”,点击“确定”。选中【单据操作】中的H4单元格,点击"数据"标签卡中的"数据验证","允许"中选择"序列"。来源写入公式=INDIRECT($H$3),点击“确定”。整个操作完成,制作及效果图如图3.

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(3)

图3 出入库类型制作

7、从第7步开始,我们要使用VBA代码了。首先,点击“开发工具”选项卡中,点击“查看代码”,右键左上角当前工作表->插入->模块。在模块里,我们可以开发代码。操作步骤如图3.

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(4)

图4 打开VBE窗口

8、在模块1 中先来写一个过程:

Sub 添加表单()

hcz = Sheets("单据操作").Cells(Sheets("单据操作").Rows.Count, 1).End(xlUp).Row '【单据操作】第1列最后一行行号

If Sheets("单据操作").Range("A2").Value = "" Then '判断【单据操作】中“A2”单元格内容是否为空,如为空退出程序

MsgBox "单据名称错误,请重新填写!"

Exit Sub

ElseIf hcz <= 3 Then '判断【单据操作】中“A4:A15”单元格内容是否为空,如为空退出程序

MsgBox "单据中没有数据,请重新填写!"

Exit Sub

End If

For i = 4 To hcz '对A4:A & hcz 之间的单元格有空值的判断,如有空退出程序

If Sheets("单据操作").Range("a" & i).Value = "" Then

MsgBox "A" & i & "单元格为空,请填入连续的数据!"

Exit Sub

End If

Next

hrq = Sheets("入库流水账").Cells(Sheets("入库流水账").Rows.Count, 1).End(xlUp).Row '【入库流水账】第1列最后一行行号

hcq = Sheets("出库流水账").Cells(Sheets("出库流水账").Rows.Count, 1).End(xlUp).Row '【出库流水账】第1列最后一行行号

'判断【单据操作】中“A2”单元格内容,如果为“入库单”则将数据写入【入库流水账】中,如果为“出库单”则写入【出库流水账】中

If Sheets("单据操作").Range("A2").Value = "入库单" Then

Sheets("单据操作").Rows("4:" & hcz).Select

Selection.Copy

Sheets("入库流水账").Activate

Sheets("入库流水账").Select

Sheets("入库流水账").Range("A2").Select

ActiveSheet.Paste

MsgBox "入库单添加完毕!"

ElseIf Sheets("单据操作").Range("A" & hrq 1).Value = "出库单" Then

Sheets("单据操作").Rows("4:" & hcz).Select

Selection.Copy

Sheets("出库流水账").Activate

Sheets("出库流水账").Select

Sheets("出库流水账").Range("A" & hcq 1).Select

ActiveSheet.Paste

MsgBox "出库单添加完毕!"

End If

Sheets("单据操作").Activate

Sheets("单据操作").Range("A4:A15,C4:H15") = ""

End Sub

为了方便大家,直接复制出来了。以上为代码。如图5

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(5)

9、在【单据操作】中添加一个按钮,指定宏为“添加表单”,如图6:

仓库出入库统计表自动生成图(从零开始制作仓库出入库报表)(6)

图9 控件添加以及出入库添加演示图

到这里,我们今天所希望完成的表单功能,出入库添加已经完成。明天我们接着来完善表单的其他功能。如果,有不懂的地方,可以在评论区告诉EK。如果想获得文中的文件,可以关注私信EK。

最后,感谢小伙伴们的观看,我是EK。如果上述内容能够帮助到你们,希望你们能点赞,关注,评论,转发,你们不清楚的地方我会尽力为大家解答,谢谢大家的支持。我会给大家带来更多关于EXCEL的小技巧。

,