各位粉丝朋友,大家好,你们办公工作中利用过excel设计过自己的独特的智能产品出入库单吗?说是智能,无非就是利用excel的高级选择功能进行数据在出入库单中的智能呈现方式。
为此,我给各位以商品出库单设计为例分享一下我的智能商品出库单的过程吧!废话不多说了,我们说干就干吧!
一、准备需要的原始数据
大家可以根据自己的实际数据进行准备,我这里以我的数据为例。如下部分截图所示
二、出库单的详细界面设计
(一)设计主体出库单界面
将所有的单元格填充为白色,并且规划表格、文字的布局设计。如下图所示
(二)在上面的主体界面上添加三个VBA表单控件(非ActiveX控件哦!)
在适当位置插入一个表单按钮、一个表单组合框、一个表单标签,名称分别为“清除按钮”、“表单组合框”、“选择订单号提示”。同时,将表单标签控件置于表单组合框中央内部。整体布局如下图所示
三、出库单智能填充数据功能实现代码
(一)ThisWorkbook代码:
Private Sub Workbook_Open() '工作簿打开后,初始化表单组合框列表项内容等工作
Dim col As New Collection '定义集合变量col
On Error Resume Next '如果出现错误,则执行下一语句
Set sel_orderID_prompt = Sheets("出库单").Shapes("选择订单号提示") '为订单号提示标签图形变量指派具体的标签图形
Set lb = Sheets("出库单").Shapes("表单组合框") '为表单组合框lb对象变量指派具体的表单组合框图形Shapes("ddlb1")
lb.ControlFormat.RemoveAllItems '删除原有列表项
hs = Sheets("销售明细").Cells(1, 1).End(xlDown).Row '求有效行数
For k = 2 To hs '按行循环
x = Sheets("销售明细").Cells(k, 1) '取一个订单号
col.Add x, CStr(x) '添加集合元素,排除重复值
If Err.Number = 0 Then '数据不重复
lb.ControlFormat.AddItem x '添加下拉列表项
End If
Err.Clear '清除错误状态
Next
On Error GoTo 0 '恢复错误处理
Call cls_datas '调用自定义过程cls_datas清除"出库单"工作表相应数据
End Sub
(二)模块1代码:
Public rg As Range, lb As Shape '定义公有全局范围对象变量rg、图形变量表单组合框lb
Public sel_orderID_prompt As Shape '定义公有全局选择订单号提示标签图形变量sel_orderID_prompt
Sub tx() '往出库单指定的单元格中填写数据
sel_orderID_prompt.Visible = msoFalse '一旦选择订单号后立即将选择订单号提示标签图形隐藏起来
n = lb.ControlFormat.Value '求出下拉列表项的序号
ddh = lb.ControlFormat.List(n) '取出订单号
Cells(2, 2) = ddh '填写订单号
Range("B5:E14").ClearContents '清除目标区数据
r = 5 '目标起始行
Set sh = Sheets("销售明细") '将对象用变量表示
hs = sh.Cells(1, 1).End(xlDown).Row '求有效行数
For k = 2 To hs '按行循环
If sh.Cells(k, 1) = ddh Then '找到订单号
Cells(3, 2) = sh.Cells(k, 5) '填写收货单位
Cells(r, 2) = sh.Cells(k, 2) '填写货物名称
Cells(r, 3) = sh.Cells(k, 3) '填写型号
Cells(r, 4) = sh.Cells(k, 4) '填写数量
r = r + 1 '调整目标行
End If
Next
End Sub
Sub Erse_Datas_Proc() '为表单按钮特别指定定义的清除数据过程
yn = MsgBox("确定要清除出库单中的数据吗?