重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
打开表单
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub初始化:填好两个下拉选单的默认选项
Private Sub UserForm_Initialize()
With ListBox1
.AddItem "Euro"
.AddItem "US Dollar"
.AddItem "British Pound"
End With
With ListBox2
.AddItem "Euro"
.AddItem "US Dollar"
.AddItem "British Pound"
End With
ListBox1.ListIndex = 1
ListBox2.ListIndex = 0
TextBox1.Value = 1
TextBox2.Value = 0.722152
End Sub换算逻辑:用二维数组存汇率
Private Sub CommandButton1_Click()
Dim rates(0 To 2, 0 To 2) As Double, i As Integer, j As Integer
rates(0, 0) = 1
rates(0, 1) = 1.38475
rates(0, 2) = 0.87452
rates(1, 0) = 0.722152
rates(1, 1) = 1
rates(1, 2) = 0.63161
rates(2, 0) = 1.143484
rates(2, 1) = 1.583255
rates(2, 2) = 1
For i = 0 To 2
For j = 0 To 2
If ListBox1.ListIndex = i And ListBox2.ListIndex = j Then TextBox2.Value = TextBox1.Value * rates(i, j)
Next j
Next i
End Sub逻辑说明
rates(i, j)代表「从第 i 种货币换算成第 j 种货币」的汇率,rates(0,0)/rates(1,1)/rates(2,2)都是 1(自己换自己当然是 1 比 1)- 循环走过 3×3 的汇率表,找到跟两个下拉选单目前选中项目对应的那一格汇率,乘上输入金额得出结果
运行时的货币转换器表单,两个下拉选单分别选好来源/目标货币,输入金额后 TextBox2 显示换算结果
常见错误
- 汇率表填反方向(该填「A 换 B」的汇率却填成「B 换 A」),换算结果颠倒
ListIndex从 0 开始编号,跟数组下标对齐时数错位置- 汇率是会变动的实际数值,写死在代码里,时间久了汇率过期没有更新
学完你会
Sources
Blog / Website: