MICROSOFT

EP01. “Swap Values 交换两个值”

首页 Microsoft 工具 Excel · VBA · Create a Macro · EP01
约 4 分钟· #EP01#Excel#Create a Macro
🔒 登录后可标记已读
  • A1 填 10、B1 填 20,想让两格数字互换——直接写 A1 = B1B1 = A1,两格最后会变成同一个数字,这是新手很容易踩的坑
  • 破解办法:先借一个临时变量存住其中一格的值,再互相赋值,这个"先借一个变量"的思路,后面很多更复杂的程序都会用到
  • 前置知识:知道怎么打开 VBA 编辑器、放一个命令按钮
  • 学完能理解临时变量怎么用,也搞懂为什么两格数值不能直接互相赋值

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Sub Swap_Values()
    Dim temp As Double

    temp = Range("A1").Value
    Range("A1").Value = Range("B1").Value
    Range("B1").Value = temp
End Sub

代码怎么运行

  1. Alt + F11 打开 VBA 编辑器(Visual Basic Editor)
  2. Insert → Module,把上面代码贴进去
  3. 回到工作表,Developer → Insert → Button(表单控件),画一个命令按钮,指定给 Swap_Values 这个宏

[截图:Developer 标签下 Insert 按钮下拉选单里的表单控件按钮图标,以及画完命令按钮后跳出的 Assign Macro 对话框]

  1. 在 A1、B1 分别输入两个不同的数字
  2. 点击命令按钮两次以上,观察 A1 和 B1 的数值互换

代码逻辑说明

  • Dim temp As Double:先声明一个 Double 类型的变量 temp,用来临时存放数字
  • temp = Range("A1").Value:把 A1 的值存进 temp,这一步是关键——不这样做的话,直接把 B1 写进 A1 会导致 A1 原本的值永久丢失
  • Range("A1").Value = Range("B1").Value:把 B1 的值写进 A1
  • Range("B1").Value = temp:把刚才存起来的原 A1 值写进 B1,完成交换

学完你会

  • ✅ 会用临时变量交换两个单元格的值
  • ✅ 看懂并能修改 Range().Value 赋值的写法
  • ✅ 理解为什么不能直接互相赋值,一定要先借一个变量

常见错误

  • 直接写 Range("A1").Value = Range("B1").Value 再写 Range("B1").Value = Range("A1").Value,没有用临时变量——第二行执行时 A1 已经被覆盖成 B1 的值,结果两个格子都变成同一个数字
  • temp 变量类型用 Integer 但单元格里其实是小数,会导致小数部分被截断,建议用 Double 更保险

Sources

Blog / Website:

  1. Swap Values