大家好!前面三节,我们仓库出入库报表实现了出入库增加,库位库存自动生成。这一节,我们来实现出入库报表的查询、删除、修改还有工作表之间的跳转功能。这里,EK已经实现了出入库报表目前需要的功能。我们来看一下效果图。
图1 工作表间跳转
图2 入库单据的增加、查询、修改、删除功能效果图
图3 库位库存功能效果图
图 4 入库效果图
从图1到图4中,演示了出入库表格的大部分内容。图2 只希望能对大家有所帮助。
好了。看完效果图。我们现在接着第三节开始制作。
首先,把主页的表格给修饰一下。如下图:
图5 主页
其中的6个图标,EK是利用EXCEL自带的图形和文本框组合制作的。这里EK给大家演示一个图标的制作过程。后面的大家可以自己制作。如下图。
图6 图标的制作过程
大家可以试着做一下,当然也可以上网搜索图标。这里提供一个方法。
2、在表添加图标和按钮。如下图所示。
图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 模块1 中添加代码
4、在VBE中添加窗体,列表框,选项按钮2个,命令按钮两个。
设置如下:
窗体名称->UFDJ, caption->单据查询
选项按钮1名称->OB1,caption->入库流水账,value->True
选项按钮2名称->OB2,caption->出库流水账
命令按钮1名称->CB1,caption->单据查询
命令按钮2名称->CB2,caption->关闭
图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 代码1
图11 代码2
5、 添加模块2 和模块3 如图:
图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
图12 模块2 中代码1
图13 模块2 中代码2
图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
图15 模块3 中代码
6、在ThisWorkbook中添加代码:
Private Sub Workbook_Open()
Call 隐藏
End Sub
图16 ThisWorkbook添加代码
7、为每个图标和按钮添加指定宏:
图17 图标指定宏
这里只演示了【主页】表中的指定宏。后面的,EK留给大家自己去指定相应的宏。EK给大家准备了一个表格。
图18 图标对应的宏
到这里,从零开始制作出入库表全部已经完成了。如果,有不懂的地方,可以在评论区告诉EK。如果想获得文中的文件,可以关注私信EK数字代表的节数。
最后,感谢小伙伴们的观看,我是EK。如果上述内容能够帮助到你们,希望你们能点赞,关注,评论,转发,你们不清楚的地方我会尽力为大家解答,谢谢大家的支持。我会给大家带来更多关于EXCEL的小技巧。
,