EP07. “Loan Calculator 贷款计算器”
🔒 登录后可标记已读- ActiveX 控件的综合实战:用两个滚动条(ScrollBar)调整贷款金额和利率
- 搭配两个选项按钮切换「月付」或「年付」,再用 PMT 函数即时算出应付金额
- 贷款金额、还款金额都可以套用 RM(马来令吉)实际填写
- 前置知识:EP05 选项按钮、EP06 微调按钮(滚动条用法类似),以及 PMT 函数的基本概念
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
控件设置
- 第一个滚动条(利率):Min=0、Max=20、SmallChange=0、LargeChange=2
- 第二个滚动条(贷款年限):Min=5、Max=30、SmallChange=1、LargeChange=5、LinkedCell 设成 F8
- D4(贷款金额)可以填实际的 RM 金额,例如 RM 50,000
[截图:完整的贷款计算器工作表布局,两条滚动条(利率、年限)、月付/年付选项按钮,以及即时算出的应付金额]
工作表变动事件:贷款金额改变时重算
If Target.Address = "$D$4" Then Application.Run "Calculate"
第一个滚动条变动时
Private Sub ScrollBar1_Change()
Range("F6").Value = ScrollBar1.Value / 100
Application.Run "Calculate"
End Sub
滚动条本身只能给整数,除以 100 换算成百分比利率(比如滚动条给 5,实际利率是 5%)。
第二个滚动条变动时
Private Sub ScrollBar2_Change()
Application.Run "Calculate"
End Sub
两个选项按钮:切换月付/年付
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then Range("C12").Value = "Monthly Payment"
Application.Run "Calculate"
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then Range("C12").Value = "Yearly Payment"
Application.Run "Calculate"
End Sub
核心计算程序
Sub Calculate()
Dim loan As Long, rate As Double, nper As Integer
loan = Range("D4").Value
rate = Range("F6").Value
nper = Range("F8").Value
If Sheet1.OptionButton1.Value = True Then
rate = rate / 12
nper = nper * 12
End If
Range("D12").Value = -1 * WorksheetFunction.Pmt(rate, nper, loan)
End Sub
逻辑说明
- 贷款金额、利率、年限任何一项变动,都会呼叫同一个
Calculate程序重新计算 - 选「月付」时,年利率要除以 12 变成月利率,年限要乘以 12 变成月数,因为
PMT函数算的是「每一期」的还款金额 PMT函数算出来的结果本身是负数(代表付出去的钱),前面乘-1转成正数方便阅读
常见错误
- 选月付时忘记把利率和期数分别做「除以 12」「乘以 12」的换算,直接套用年利率年限,算出金额错得离谱
- 各个控件变动时忘记统一呼叫
Calculate,导致改了利率但金额没有重新计算 PMT结果没有乘-1,显示成负数的还款金额,容易让人误解
学完你会
- ✅ 用滚动条(ScrollBar)搭配 LinkedCell 让使用者拖拽调整数值
- ✅ 组合多个控件的变动事件,统一呼叫同一个计算程序
- ✅ 用
WorksheetFunction.Pmt算出贷款的每期应付金额,并处理月付/年付的利率换算
Sources
Blog / Website: