快递费用计算编程

2023-08-04 11:56 综合百科 0阅读 投稿:小七

用VBA制作快递费计算器详细教程(基于Access数据库,1600字)

本案例是用VBA技术给一个物流行业的学员做的计算器,前端用Access数据库窗体展现,后端的计算用的VBA的模块。本案例实现了自动计算快递费,并且便于修改基础参数。

我接到这个活的时候,开始觉得没有什么难的,第一感觉是用Excel就可以做,但这个学员一直做不出来。我拿到她给我发的表一看,感觉确实稍微复杂一些,用Excel公式做还是比较麻烦。

快递费用计算编程图1

快递费计算器最终实现效果

我就用Access帮他做了一下,计算直接用VBA封装了一个模块。

这个计算器的特点是计算过程比较清楚,因为VBA语句用的Select Case看起来很有层次感,也便于更改价格和数量。

本教程分为三个部分:需求描述、代码解释、模块调用和自动化

第1部分 需求描述

这个学员所在的工厂位于浙江,需要向全国各省发货,由于距离远近不同,起步价和起步重量、续重都是不同的,如果用Excel的公式来做表,会很繁琐,更改也容易出错。而且由于选定范围是省份,因此用Excel还要用VLookup确定省份才能查询,设计起来很麻烦。

快递费用计算编程图2

学员给我的原始表

另外用Excel公式做,也不容易进行自动化的查询,Excel的控制按钮并不容易操作。

因此我用Access数据库做前端查询,用VBA封装了一个计算模块,在前端用VBA编程调用计算模块,查询条件设置成省份和快递重量,通过更改这两个变量,快递费总价格自动计算并显示,很方便。

快递费用计算编程图3

第2部分 代码解释

本案例的Access数据库VBA程序,分为两个部分:VBA计算模块、Access前端VBA代码(用于模块调用和自动化计算)。我们先来看一下核心计算模块的完整代码,并进行一下解释。

Function CalculateExpressFee(weight As Double, location As String) As Double'确定计算函数的名称,确定两个变量重量weight和快递终点location Dim expressfee As Double'设置一个expressfee作为中间变量 Select Case location '用Select Case作为循环,比较清楚简洁,适合本案例的需求 Case "浙江", "上海" '快递终点是浙江或者上海 If weight < 100 Then '如果重量没到100公斤(起步价重量) expressfee = 80 '快递费一律80元 Else '如果快递重量大于等于100公斤 expressfee = 80 + (weight - 100) * 0.8 '快递费等于起步价加上超重乘以单位费用 End If Case "安徽" If weight < 87 Then expressfee = 130 Else expressfee = 130 + (weight - 87) * 1 End If Case "山东", "北京", "天津" If weight < 74 Then expressfee = 110 Else expressfee = 110 + (weight - 74) * 1.5 End If Case "河北", "河南" If weight < 74 Then expressfee = 130 Else expressfee = 130 + (weight - 74) * 1.5 End If Case "湖北", "湖南", "江西" If weight < 87 Then expressfee = 130 Else expressfee = 130 + (weight - 87) * 1.5 End If Case "四川", "甘肃", "青海" If weight < 87 Then expressfee = 160 Else expressfee = 160 + (weight - 87) * 2.2 End If Case "山西" If weight < 87 Then expressfee = 160 Else expressfee = 160 + (weight - 87) * 2.1 End If Case "广东", "福建" If weight < 74 Then expressfee = 110 Else expressfee = 110 + (weight - 74) * 1.5 End If Case "云南", "贵州" If weight < 73 Then expressfee = 160 Else expressfee = 160 + (weight - 73) * 2.2 End If Case "重庆" If weight < 77 Then expressfee = 160 Else expressfee = 160 + (weight - 77) * 2.2 End If Case Else ' 默认情况下的处理逻辑,可以根据需要进行修改 expressfee = 0 End Select CalculateExpressFee = expressfeeEnd Function
快递费用计算编程图4

用Select Case计算快递费,优点是非常清楚,看着不累,比Excel嵌套各种函数要更直观,修改也方便。

第3部分 模块调用和自动化

每当在Access数据库前端的窗体上点击“省份”,或者输入快递的重量,这个程序就会自动计算出快递的价格。这个过程是通过模块调用和自动化实现的。

本案例模块调用是通过一个子过程进行的,好处是节省代码行数,便于修改,看着不乱。

Public Sub 计算过程()'调用计算模块的子过程If IsNull(List2) Then'如果没有点击省份,先提醒一下使用者选择省份 Text2 = "请选择地区"Else'选择了省份、填写了快递重量之后,调用模块,显示在text2中 Text2 = CalculateExpressFee(Val(Nz(Text1)), List2) & "元"End IfEnd Sub

自动化实现也很简单。

每次点击列表框选择省份,每次更改快递重量,窗体就进行一次刷新,基本逻辑就是这样子的。

Private Sub Command27_Click()'清空查询条件的操作 List1 = Null List2 = Null Text1 = Null Text2 = Null Me.RefreshEnd SubPrivate Sub List1_Click() List2 = Null Me.RefreshEnd SubPrivate Sub List2_Click() Call 计算过程 '召唤计算模块 Me.RefreshEnd SubPrivate Sub Text1_AfterUpdate() Call 计算过程 '召唤计算模块 Me.RefreshEnd SubPrivate Sub Text1_Change() Call 计算过程 '召唤计算模块 Me.RefreshEnd Sub
快递费用计算编程图5

小结

本案例制作快递费计算器,软件需求清晰、制作过程层次感很好、VBA语句也不算难、总体技术难度适中,非常适合VBA和编程新手进行编写训练,可以充分体会VBA编程技术给生产力带来的效率提升。

声明:若水百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系youzivr@vip.qq.com