Microsoft Lab
全部软件
Excel用户窗体(Userform)约 5 分钟

Currency Converter 货币转换器

重点内容


适用版本

桌面版通用(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:

  1. Currency Converter
只记在你的浏览器里,换设备不会同步。