EP01. “Swap Values 交换两个值”
🔒 登录后可标记已读- A1 填 10、B1 填 20,想让两格数字互换——直接写
A1 = B1再B1 = 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
代码怎么运行
- 按
Alt + F11打开 VBA 编辑器(Visual Basic Editor) - Insert → Module,把上面代码贴进去
- 回到工作表,Developer → Insert → Button(表单控件),画一个命令按钮,指定给
Swap_Values这个宏
[截图:Developer 标签下 Insert 按钮下拉选单里的表单控件按钮图标,以及画完命令按钮后跳出的 Assign Macro 对话框]
- 在 A1、B1 分别输入两个不同的数字
- 点击命令按钮两次以上,观察 A1 和 B1 的数值互换
代码逻辑说明
Dim temp As Double:先声明一个 Double 类型的变量temp,用来临时存放数字temp = Range("A1").Value:把 A1 的值存进temp,这一步是关键——不这样做的话,直接把 B1 写进 A1 会导致 A1 原本的值永久丢失Range("A1").Value = Range("B1").Value:把 B1 的值写进 A1Range("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: