MICROSOFT

EP02. “Currency Converter 货币转换器”

首页 Microsoft 工具 Excel · VBA · Userform · EP02
约 5 分钟· #EP02#Excel#Userform
🔒 登录后可标记已读
  • 用 Userform 做一个三种货币(欧元/美元/英镑)互相换算的小工具
  • 核心是用一个二维数组存汇率表
  • 靠两个下拉选单选的货币对照到数组里的对应汇率
  • 前置知识:EP01 的 Userform 基本操作、二维数组的概念

重点内容


适用版本

桌面版通用(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 开始编号,跟数组下标对齐时数错位置
  • 汇率是会变动的实际数值,写死在代码里,时间久了汇率过期没有更新

学完你会

  • ✅ 用二维数组存放「行=来源货币、列=目标货币」的对照表
  • ✅ 用两层循环 + If 判断,找到对应下拉选项组合的那格汇率
  • ✅ 知道这类写死的汇率数据只适合示范,实际使用要接实时汇率来源

Sources

Blog / Website:

  1. Currency Converter