注:
1.以下所有代码均可直接贴到你自己的工作簿查看,但要注意,经代码修改的单元格格式/内容等无法撤回,请在关闭工作簿时仔细思考是否需要保存。
2.代码中所有的符号均只能用英文格式。
一、认识VBA编辑器:Excel的"控制中心"
1.1 打开秘密基地
按下Alt+F11(记住这个神奇组合键),你会看到新世界——这里就是指挥Excel的"驾驶舱"。
1.2 核心区域解析
- 工程资源管理器(左上):查看所有目前打开或加载的工作表和工作簿,像文件柜
- 属性窗口(左下):调整选中对象的属性,像调节旋钮
- 代码窗口(右侧):编写指令的主战场,像指挥官的话筒
- 工具栏(最上方):调整窗口,代码等工具
新手任务:双击"Sheet1"打开代码窗口,输入以下代码并运行:
Sub 我的第一个程序()
MsgBox "Hello world!"
'MsgBox "你好," & Application.UserName
End Sub
二、VBA基础语法:像说话一样编程
2.1 三句万能公式
句式结构 | 生活化案例 | VBA代码示例 |
做动作 | 在A1单元格写"销售额" | Range("A1").Value = "销售额" |
如果...就... | 超过100标红 | If Range("B2")>100 Then Range("B2").Font.Color = vbRed |
重复做N次 | 自动填充10行序号 | For i = 1 To 10: Cells(i,1)=i: Next i |
2.2 变量:数据的临时储物柜
Sub 计算折扣价()
Dim 原价 As Currency ' 声明储物柜
原价 = Range("B2").Value ' 存放数据
Range("C2").Value = 原价 * 0.9 ' 取出使用
End Sub
三、五个必学实用技巧
3.1 自动填充本月日期
Sub 填充日期()
Range("A1").Value = Date ' 输入今天日期
Range("A2").Formula = "=A1+1" ' 下一天公式
Range("A2").AutoFill Destination:=Range("A2:A30")
End Sub
3.2 智能标记异常值
Sub 标记异常()
For Each cell In Range("B2:B100")
If cell.Value > 10000 Then
cell.Interior.Color = RGB(255,200,200) ' 浅红色背景
End If
Next cell
End Sub
3.3 一键生成数据透视表
Sub 创建透视表()
ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=Range("A1:D100")).CreatePivotTable _
TableDestination:=Range("F1"))
End Sub
四、安全操作四原则
4.1 防误删机制
在所有删除操作前添加确认框:
下面代码的目的是,在你运行删除操作前弹出对话框提醒你是否要删除,会有两个选项,如果你点击了No,则不执行删除操作,如果点击了Yes,则继续删除操作。
If MsgBox("确定要清空数据吗?", vbYesNo) = vbNo Then Exit Sub
4.2 三步保护法
- 运行前按Ctrl+S保存
- 修改重要代码前复制到记事本备份
- 在代码开头添加On Error Resume Next防崩溃
4.3 危险代码黑名单
' 绝对不要随便尝试!
ActiveSheet.UsedRange.Delete ' 清空所有数据
ThisWorkbook.Close SaveChanges:=False ' 不保存关闭
Kill "C:\*.*" ' 危险文件操作
五、常见问题诊断表
症状 | 可能原因 | 解决方案 |
运行后没反应 | 忘记保存为.xlsm格式 | 另存为"启用宏的工作簿" |
提示"对象无效" | 工作表名称拼写错误 | 检查代码中引用的工作表名是否实际存在 |
代码突然变黄 | 语法错误(如缺引号) | 检查标黄行的符号是否成对 |
只能运行一次 | 未重置变量 | 在代码开头添加i = 0等初始化语句 |
下期详细拆分讲解,变量/函数等的具体用法!