vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

Excel不是万能的,但办公应用离开它是万万不能的。

这就是说目前的办公方式早已经不是笔墨纸砚来记账了,数字化办公加快了行政办公效率,如果还有人在一堆纸里写写划划,那么不是特殊行业,就是对这个世界认识不清。

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

配送是一个动态变化过程,由于其数据有动态行为,所以使用Excel编程的时候,会用到很多动态检索功能,以保证当前数据为最新。

所以,在编程本应用的时候也浪费了不少时间,来处理动态数据的静态统计

下面看一下是如何实现配送管理过程的。

下图为操作主页,分别设置了一个订单录入和一个生成配送单按钮

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

工作表内容为订单记录表,通过下图表单可以实现订单的录入和新建。

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

下图为生成配送单操作窗体,可以明显看到这里有很多按钮,其大部分功能在这个窗体中实现。

由于其执行过程并不能看到其运行,所以这里简单介绍一下有哪些功能。

通过日期下拉框可以选择月份和日期,一般情况下会自动默认当日的月份和日期。

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

第一个按钮,生成今天配送单,很好理解,单击它会生成当天要配送的记录,其生成规则是,依据订单来进行的。

比如,某个用户订了300件的送单量,那么就会在这一数据未送完时自动新建,如果已经送完了,那么就不新建当日的送单,当然了,还有很多要判断的条件进行设置。

下图为生成的订单记录:

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

第二个按钮,重置今天配送单,假如当天生成的订单错误,或是某些客户当天不需要配送,可以重新生成订单号,生成之前有一个选择,可以取消某些订单不生成。

如不生成订单,自然也不会在记录中进行登记。

这部分操作有些繁杂,先把已经生成的订单删除后,再次生成当日订单。

第三个按钮,月配送统计,很简单就是统计某个月的订单记录,包括数量,金额,付款,利润等数据。

第四个按钮,日配统计,也就某一天的配送情况。

第五个按钮,查看统计结果,这个功能实现查看统计结果,实际上每次统计之后会自动刷新窗体表内容。

第六个按钮,打印统计结果,很明显就是实现打印输出,可以把统计结果打印出来,无论是什么统计都可以使用这个功能实现。

vvba编程分段函数a编程从入门到精通教程(vba编程分段函数)

配送管理,实际上还是有一些可以深入研究的一个应用过程,通过VBA处理之后,可以方便地生成当天要配送的订单,然后下发给配送员。

如果,生成二维码,就更加方便了。

当然了,也不是不可能,只不过需要一些时间来进行编码,在以前文章里有相关内容与讲解,这里不做过多介绍了。

代码

Private Sub 生成配送记录()
'生成日配送单
On Error Resume Next
Application.ScreenUpdating = False
Dim s As Worksheet
Set s = ThisWorkbook.Worksheets(xPsheet)
If s Is Nothing Then Exit Sub
Dim xArr, xi As Long, ir As Long, ic As Long
Dim cArr, ci As Long
Dim eArr, ei As Long
Dim NowDay As Date
NowDay = VBA.Format(VBA.Date, "yyyy/mm/dd")
xArr = s.Range("A2").CurrentRegion
If CloseModes = 0 Then Exit Sub
If dArr(1) = "" Then Exit Sub
ir = UBound(xArr, 1)
ic = UBound(xArr, 2)
If VBA.Err.Number <> 0 Then Exit Sub
ReDim eArr(LBound(xArr, 1) To ir)
For ei = LBound(xArr, 1) + 1 To ir
    eArr(ei) = xArr(ei, 2)
Next ei
SumxCount "业主订单记录", 11 '计算刷新已送数量
Dim diArr As Variant, di As Long
For xi = 2 To ir
    For di = LBound(dArr) To UBound(dArr) '判断订单 是否不进行送货
        diArr = VBA.Filter(eArr, dArr(di)) '返回查询订单号数组
        If diArr(0) <> "" Then
            If xArr(xi, 2) = diArr(0) Then
                            If VBA.DateDiff("d", xArr(xi, 3), NowDay) >= 0 Then '下单日期正确
                                If xArr(xi, 8) > xArr(xi, 11) Then '订购数量大于已送数量
                                    '收集数组值
                                    ReDim cArr(1 To ic)
                                    For ci = 1 To ic
                                        cArr(ci) = xArr(xi, ci)
                                    Next ci
                                    cArr(1) = "=row()-2"
                                    cArr(3) = VBA.Format(VBA.Date, "yyyy/mm/dd")
                                    cArr(11) = "=G3" '已送数
                                    cArr(12) = "=G3-K3" '未送
                                    cArr(13) = "=I3*K3" '销售额
                                    cArr(14) = GetSale '应付款单价
                                    cArr(15) = "=K3*N3" '应付款
                                    cArr(16) = "=M3-O3" '利润
                                     '执行新建订单
                                     SaveXsheetList cArr
                                     Erase cArr
                                End If
                            End If
                End If
            End If
        Next di
Next xi
Erase xArr
Erase eArr
Erase dArr
Erase diArr
Set s = Nothing
ShowListView
Application.ScreenUpdating = True
End Sub

订单管理过程就写这么多,实际应用当中还有许多要修改的地方,在此只是抛一块砖,希望有些需求的你,可以获得一些启发。

欢迎关注、收藏

—END—

情趣用品,延时产品,各种都有,添加 微信:yztt15 备注:情趣

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 245450443@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.i1026.com/7814.html