网站首页 > 技术文章 正文
大家好!前面三节,我们仓库出入库报表实现了出入库增加,库位库存自动生成。这一节,我们来实现出入库报表的查询、删除、修改还有工作表之间的跳转功能。这里,EK已经实现了出入库报表目前需要的功能。我们来看一下效果图。
从图1到图4中,演示了出入库表格的大部分内容。图2 只希望能对大家有所帮助。
好了。看完效果图。我们现在接着第三节开始制作。
首先,把主页的表格给修饰一下。如下图:
其中的6个图标,EK是利用EXCEL自带的图形和文本框组合制作的。这里EK给大家演示一个图标的制作过程。后面的大家可以自己制作。如下图。
大家可以试着做一下,当然也可以上网搜索图标。这里提供一个方法。
2、在表添加图标和按钮。如下图所示。
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
4、在VBE中添加窗体,列表框,选项按钮2个,命令按钮两个。
设置如下:
窗体名称->UFDJ, caption->单据查询
选项按钮1名称->OB1,caption->入库流水账,value->True
选项按钮2名称->OB2,caption->出库流水账
命令按钮1名称->CB1,caption->单据查询
命令按钮2名称->CB2,caption->关闭
双击用户窗体。写入代码:
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
5、 添加模块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
模块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
6、在ThisWorkbook中添加代码:
Private Sub Workbook_Open()
Call 隐藏
End Sub
7、为每个图标和按钮添加指定宏:
这里只演示了【主页】表中的指定宏。后面的,EK留给大家自己去指定相应的宏。EK给大家准备了一个表格。
到这里,从零开始制作出入库表全部已经完成了。如果,有不懂的地方,可以在评论区告诉EK。如果想获得文中的文件,可以关注私信EK数字代表的节数。
最后,感谢小伙伴们的观看,我是EK。如果上述内容能够帮助到你们,希望你们能点赞,关注,评论,转发,你们不清楚的地方我会尽力为大家解答,谢谢大家的支持。我会给大家带来更多关于EXCEL的小技巧。
猜你喜欢
- 2024-12-24 Excel VBA 用户窗体设置/一步一步代你设计EXCEL用户+密码登录界面
- 2024-12-24 家庭收支理财管理系统 Access数据库系统课程设计制作实例
- 2024-12-24 Qt 2D绘图:图形视图框架的事件处理与传播
- 2024-12-24 MFC界面库BCGControlBar v32.1 - 可视化管理器和主题升级
- 2024-12-24 DJYGUI系列文章九:GDD消息系统 gd信息
- 2024-12-24 Qt设备识别(简单的密钥生成器) qt设备管理系统
- 2024-12-24 Access开发的《财务经济管理系统》
- 2024-12-24 初级开发人员告诉我:OO 设计模式太复杂而且没用
- 2024-12-24 从零开始学Qt(89):UDP单播和广播
- 2024-12-24 Qt入门阶段之事件 qtc间期延长的临床意义
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)