这就是说目前的办公方式早已经不是笔墨纸砚来记账了,数字化办公加快了行政办公效率,如果还有人在一堆纸里写写划划,那么不是特殊行业,就是对这个世界认识不清。
配送是一个动态变化过程,由于其数据有动态行为,所以使用Excel编程的时候,会用到很多动态检索功能,以保证当前数据为最新。
所以,在编程本应用的时候也浪费了不少时间,来处理动态数据的静态统计。

下面看一下是如何实现配送管理过程的。
下图为操作主页,分别设置了一个订单录入和一个生成配送单按钮。
工作表内容为订单记录表,通过下图表单可以实现订单的录入和新建。
下图为生成配送单操作窗体,可以明显看到这里有很多按钮,其大部分功能在这个窗体中实现。
由于其执行过程并不能看到其运行,所以这里简单介绍一下有哪些功能。
通过日期下拉框可以选择月份和日期,一般情况下会自动默认当日的月份和日期。
第一个按钮,生成今天配送单,很好理解,单击它会生成当天要配送的记录,其生成规则是,依据订单来进行的。
比如,某个用户订了300件的送单量,那么就会在这一数据未送完时自动新建,如果已经送完了,那么就不新建当日的送单,当然了,还有很多要判断的条件进行设置。
下图为生成的订单记录:
第二个按钮,重置今天配送单,假如当天生成的订单错误,或是某些客户当天不需要配送,可以重新生成订单号,生成之前有一个选择,可以取消某些订单不生成。
如不生成订单,自然也不会在记录中进行登记。
这部分操作有些繁杂,先把已经生成的订单删除后,再次生成当日订单。
第三个按钮,月配送统计,很简单就是统计某个月的订单记录,包括数量,金额,付款,利润等数据。
第四个按钮,日配统计,也就某一天的配送情况。
第五个按钮,查看统计结果,这个功能实现查看统计结果,实际上每次统计之后会自动刷新窗体表内容。
第六个按钮,打印统计结果,很明显就是实现打印输出,可以把统计结果打印出来,无论是什么统计都可以使用这个功能实现。
配送管理,实际上还是有一些可以深入研究的一个应用过程,通过VBA处理之后,可以方便地生成当天要配送的订单,然后下发给配送员。
如果,生成二维码,就更加方便了。
当然了,也不是不可能,只不过需要一些时间来进行编码,在以前文章里有相关内容与讲解,这里不做过多介绍了。
代码
Private Sub 生成配送记录()'生成日配送单On Error Resume NextApplication.ScreenUpdating = FalseDim s As WorksheetSet s = ThisWorkbook.Worksheets(xPsheet)If s Is Nothing Then Exit SubDim xArr, xi As Long, ir As Long, ic As LongDim cArr, ci As LongDim eArr, ei As LongDim NowDay As DateNowDay = VBA.Format(VBA.Date, "yyyy/mm/dd")xArr = s.Range("A2").CurrentRegionIf CloseModes = 0 Then Exit SubIf dArr(1) = "" Then Exit Subir = UBound(xArr, 1)ic = UBound(xArr, 2)If VBA.Err.Number <> 0 Then Exit SubReDim eArr(LBound(xArr, 1) To ir)For ei = LBound(xArr, 1) + 1 To ir eArr(ei) = xArr(ei, 2)Next eiSumxCount "业主订单记录", 11 '计算刷新已送数量Dim diArr As Variant, di As LongFor 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) = "=I3K3" '销售额 cArr(14) = GetSale '应付款单价 cArr(15) = "=K3N3" '应付款 cArr(16) = "=M3-O3" '利润 '执行新建订单 SaveXsheetList cArr Erase cArr End If End If End If End If Next diNext xiErase xArrErase eArrErase dArrErase diArrSet s = NothingShowListViewApplication.ScreenUpdating = TrueEnd Sub
订单管理过程就写这么多,实际应用当中还有许多要修改的地方,在此只是抛一块砖,希望有些需求的你,可以获得一些启发。
欢迎关注、收藏
---END---