重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
完整 VBA 代码
Dim rng As Range, cell As Range
Set rng = Range("A1:A3")
For Each cell In rng
cell.Value = cell.Value * cell.Value
Next cell代码说明
- 声明
rng(要处理的范围)、cell(循环变量,代表范围里正在处理的那个单元格)两个Range对象 - 用
Set rng = Range("A1:A3")把 A1 到 A3 这三个单元格赋给rng(对象变量要用Set赋值) For Each cell In rng会依次把rng里的每个单元格赋给cell,循环体里对cell做的操作就是对当前这个单元格操作cell.Value = cell.Value * cell.Value把当前单元格的值平方后写回原格Next cell结束这一轮循环,继续处理下一个单元格
用 Selection 处理任意范围
如果不想把范围写死成 A1:A3,可以改成处理使用者当下选中的范围:
Set rng = Selection这样不管使用者选中多大范围,程序都会用同一段循环逻辑处理。
怎么运行
先在工作表 A1:A3 输入数字,Alt+F11 打开 VBA 编辑器,把代码放进按钮点击事件,按 F5 或点命令按钮执行,A1:A3 的数字会被替换成各自的平方值。
学完你会
常见错误
- 忘记用
Set给Range对象赋值,直接写rng = Range("A1:A3")会报错——对象赋值必须加Set For Each遍历的对象类型要跟循环变量类型一致(这里cell必须也是Range),类型不匹配会报错- 用
Selection时如果使用者没有先选中任何范围,或者选中了非数字的单元格,cell.Value * cell.Value会报类型不匹配的错误
Sources
Blog / Website: