大家好!前面三节,我们仓库出入库报表实现了出入库增加,库位库存自动生成。这一节,我们来实现出入库报表的查询、删除、修改还有工作表之间的跳转功能。这里,EK已经实现了出入库报表目前需要的功能。我们来看一下效果图。

仓库数据报表如何操作(从零开始制作仓库出入库报表)(1)

图1 工作表间跳转

仓库数据报表如何操作(从零开始制作仓库出入库报表)(2)

图2 入库单据的增加、查询、修改、删除功能效果图

仓库数据报表如何操作(从零开始制作仓库出入库报表)(3)

图3 库位库存功能效果图

仓库数据报表如何操作(从零开始制作仓库出入库报表)(4)

图 4 入库效果图

从图1到图4中,演示了出入库表格的大部分内容。图2 只希望能对大家有所帮助。

好了。看完效果图。我们现在接着第三节开始制作。

首先,把主页的表格给修饰一下。如下图:

仓库数据报表如何操作(从零开始制作仓库出入库报表)(5)

图5 主页

其中的6个图标,EK是利用EXCEL自带的图形和文本框组合制作的。这里EK给大家演示一个图标的制作过程。后面的大家可以自己制作。如下图。

仓库数据报表如何操作(从零开始制作仓库出入库报表)(6)

图6 图标的制作过程

大家可以试着做一下,当然也可以上网搜索图标。这里提供一个方法。

2、在表添加图标和按钮。如下图所示。

仓库数据报表如何操作(从零开始制作仓库出入库报表)(7)

图7 添加图标和按钮

3、在模块1 中添加如下代码:

Sub 清空单据信息()

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

End Sub

Sub 入库单()

Sheets("单据操作").Range("a2") = "入库单"

Sheets("单据操作").Range("i4:i15") = ""

End Sub

Sub 出库单()

Sheets("单据操作").Range("a2") = "出库单"

Sheets("单据操作").Range("i4:i15") = ""

End Sub

仓库数据报表如何操作(从零开始制作仓库出入库报表)(8)

图8 模块1 中添加代码

4、在VBE中添加窗体,列表框,选项按钮2个,命令按钮两个。

设置如下:

窗体名称->UFDJ, caption->单据查询

选项按钮1名称->OB1,caption->入库流水账,value->True

选项按钮2名称->OB2,caption->出库流水账

命令按钮1名称->CB1,caption->单据查询

命令按钮2名称->CB2,caption->关闭

仓库数据报表如何操作(从零开始制作仓库出入库报表)(9)

图9 插入用户窗体

双击用户窗体。写入代码:

Dim intnum As Integer

Private Sub CB1_Click()

If ListBox1.ListIndex >= 0 Then

Dim LstStr As String

LstStr = Trim(CStr(ListBox1.List(ListBox1.ListIndex)))

s = InStr(LstStr, "-") 1

e = InStr(2, LstStr, Left(LstStr, 1))

estr = Mid(LstStr, s, e - s)

MsgBox estr

If Left(LstStr, 1) = "入" Then

Call 出入库单据(1, estr)

ElseIf Left(LstStr, 1) = "出" Then

Call 出入库单据(2, estr)

End If

Unload Me

End If

End Sub

Private Sub 查询单据(OBNum As Integer)

Dim d As Object

Set d = CreateObject("Scripting.Dictionary")

If OBNum = 1 Then

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

ArrRK = Sheets("入库流水账").Range("A4:H" & hrq)

For i = 1 To UBound(ArrRK)

d(ArrRK(i, 4)) = "入库单号-" & ArrRK(i, 4) & "入库时间-" & ArrRK(i, 3) & "入库类型:" & ArrRK(i, 8)

Next

Erase ArrRK

ListBox1.List = d.items()

ElseIf OBNum = 2 Then

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

ArrCK = Sheets("出库流水账").Range("A4:H" & hcq)

For i = 1 To UBound(ArrCK)

d(ArrCK(i, 4)) = "出库单号-" & ArrCK(i, 4) & "出库时间-" & ArrCK(i, 3) & "出库类型:" & ArrCK(i, 8)

Next

Erase ArrCK

ListBox1.List = d.items()

End If

End Sub

Private Sub CB2_Click()

Unload Me

End Sub

Private Sub OB1_Click()

Call 查询单据(1)

End Sub

Private Sub OB2_Click()

Call 查询单据(2)

End Sub

Private Sub UserForm_Activate()

Call 查询单据(1)

OB2.Value = False

OB1.Value = True

ListBox1.SetFocus

End Sub

Private Sub UserForm_Initialize()

ListBox1.Font.Size = 12

UFDJ.BackColor = &HFF8080

End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Call CB1_Click

End Sub

仓库数据报表如何操作(从零开始制作仓库出入库报表)(10)

图10 代码1

仓库数据报表如何操作(从零开始制作仓库出入库报表)(11)

图11 代码2

5、 添加模块2 和模块3 如图:

仓库数据报表如何操作(从零开始制作仓库出入库报表)(12)

图12 添加模块2和模块3

模块2 中代码:

Sub 显示单据查询窗口()

UFDJ.Show

End Sub

'单据查询

Sub 出入库单据(ListType As Integer, ByVal ListStr As String)

Dim n As Integer

n = 0

If ListType = 1 Then

Sheets("单据操作").Range("a4:a15,c4:i15") = ""

Sheets("单据操作").Range("a2") = "入库单"

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

For i = 4 To hrq

If Sheets("入库流水账").Range("d" & i).Value = ListStr Then

Sheets("入库流水账").Range("A" & i & ":H" & i).Copy Sheets("单据操作").Range("a" & 4 n)

Sheets("单据操作").Range("i" & 4 n) = i

n = n 1

End If

Next

ElseIf ListType = 2 Then

Sheets("单据操作").Range("a4:a15,c4:i15") = ""

Sheets("单据操作").Range("a2") = "出库单"

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

For i = 4 To hcq

If Sheets("出库流水账").Range("d" & i).Value = ListStr Then

Sheets("出库流水账").Range("A" & i & ":H" & i).Copy Sheets("单据操作").Range("a" & 4 n)

Sheets("单据操作").Range("i" & 4 n) = i

n = n 1

End If

Next

End If

End Sub

Sub 单据修改()

Msg = MsgBox("是否修改表单?", vbInformation vbYesNo, "提示")

If Msg = vbNo Then

Exit Sub

End If

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

n = 1

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

For i = 4 To 15

If Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) <> "" Then

Sheets("单据操作").Range("A" & i & ":H" & i).Copy Sheets("入库流水账").Range("a" & Sheets("单据操作").Range("i" & i).Value)

ElseIf Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) = "" Then

Sheets("单据操作").Range("A" & i & ":H" & i).Copy Sheets("入库流水账").Range("a" & hrq n)

n = n 1

End If

Next

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

ElseIf Sheets("单据操作").Range("A2") = "出库单" Then

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

n = 1

For i = 4 To 15

If Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) <> "" Then

Sheets("单据操作").Range("A" & i & ":H" & i).Copy Sheets("出库流水账").Range("a" & Sheets("单据操作").Range("i" & i).Value)

ElseIf Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) = "" Then

Sheets("单据操作").Range("A" & i & ":H" & i).Copy Sheets("出库流水账").Range("a" & hrq n)

n = n 1

End If

Next

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

End If

End Sub

Sub 删除表单()

Msg = MsgBox("是否删除表单?", vbInformation vbYesNo, "提示")

If Msg = vbNo Then

Exit Sub

End If

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

For i = 15 To 4 Step -1

If Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) <> "" Then

Sheets("入库流水账").Rows(Sheets("单据操作").Range("i" & i)).Delete

End If

Next

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

ElseIf Sheets("单据操作").Range("A2") = "出库单" Then

For i = 15 To 4 Step -1

If Sheets("单据操作").Range("A" & i) <> "" And Sheets("单据操作").Range("i" & i) <> "" Then

Sheets("出库流水账").Rows(Sheets("单据操作").Range("i" & i)).Delete

End If

Next

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

Else

MsgBox "单据删除错误,请查看标题!"

End If

End Sub

仓库数据报表如何操作(从零开始制作仓库出入库报表)(13)

图12 模块2 中代码1

仓库数据报表如何操作(从零开始制作仓库出入库报表)(14)

图13 模块2 中代码2

仓库数据报表如何操作(从零开始制作仓库出入库报表)(15)

图14 模块2 中代码3

模块3中代码:

Sub 隐藏()

For Each Sh1 In Worksheets

If Sh1.Name <> "主页" Then

Sh1.Visible = False

End If

Next

End Sub

Sub 跳转至主页()

Call 隐藏

End Sub

Sub 跳转至基础信息()

Call 隐藏

Sheets("基础信息").Visible = True

Sheets("基础信息").Activate

End Sub

Sub 跳转至入库流水()

Call 隐藏

Sheets("入库流水账").Visible = True

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

End Sub

Sub 跳转至出库流水()

Call 隐藏

Sheets("出库流水账").Visible = True

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

End Sub

Sub 跳转至单据操作()

Call 隐藏

Sheets("单据操作").Visible = True

Sheets("单据操作").Activate

End Sub

Sub 跳转至库存跟踪()

Call 隐藏

Sheets("库存跟踪表").Visible = True

Sheets("库存跟踪表").Activate

End Sub

Sub 显示全部表格()

For Each Sh1 In Worksheets

Sh1.Visible = True

Next

Sheets("主页").Activate

End Sub

仓库数据报表如何操作(从零开始制作仓库出入库报表)(16)

图15 模块3 中代码

6、在ThisWorkbook中添加代码:

Private Sub Workbook_Open()

Call 隐藏

End Sub

仓库数据报表如何操作(从零开始制作仓库出入库报表)(17)

图16 ThisWorkbook添加代码

7、为每个图标和按钮添加指定宏:

仓库数据报表如何操作(从零开始制作仓库出入库报表)(18)

图17 图标指定宏

这里只演示了【主页】表中的指定宏。后面的,EK留给大家自己去指定相应的宏。EK给大家准备了一个表格。

仓库数据报表如何操作(从零开始制作仓库出入库报表)(19)

图18 图标对应的宏

到这里,从零开始制作出入库表全部已经完成了。如果,有不懂的地方,可以在评论区告诉EK。如果想获得文中的文件,可以关注私信EK数字代表的节数。

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

,