
书: https://pan.baidu.com/s/15VfTw9eJ2MoiHktwswP0gw?pwd=tq5x
笔记如下:
一、VBA基础
- “VBA(Visual Basic for Applications)是Excel的自动化语言,通过
Alt+F11
打开编辑器,F5
运行代码。” - “宏录制器(開発タブ→マクロ記録)可生成基础代码,但需手动优化去除冗余操作。”
二、对象模型
- “Excel对象层级:
Application
→Workbook
→Worksheet
→Range
,操作时需逐层指定(如Worksheets("Sheet1").Range("A1")
)。” - **“
With
语句简化重复对象引用:vbaWith Worksheets(“Sheet1”) .Range(“A1”).Value = 100 .Range(“A2”).Font.Bold = True End With “`”**
三、单元格操作
- **“
Range
引用方式:Range("A1")
:直接地址;Cells(1, 1)
:行列号;Range("A1:B2")
:多单元格。”**
- “
Value
属性读写数据,Formula
属性设置公式(如.Formula = "=SUM(B1:B10)"
)。”
四、流程控制
- **“循环结构:
For i = 1 To 10
:固定次数;For Each cell In Range("A1:A10")
:遍历集合;Do While...Loop
:条件循环。”**
- “
If...Then...ElseIf...End If
分支结构,支持嵌套判断。”
五、事件处理
- **“工作表事件:
Worksheet_Change(ByVal Target As Range)
:单元格变更时触发;Worksheet_SelectionChange
:选中区域变化时触发。”**
- **“工作簿事件:
Workbook_Open
:文件打开时执行;Workbook_BeforeClose
:关闭前保存提示。”**
六、用户交互
- “
InputBox
获取用户输入,MsgBox
显示提示信息(可定制按钮与图标)。” - “用户窗体(UserForm)设计GUI:拖拽控件(如文本框、按钮)并绑定事件。”
七、数据处理
- **“数组快速读写:vbaDim arr() As Variant arr = Range(“A1:D10”).Value ‘ 读取到数组 Range(“F1:I10”).Value = arr ‘ 写入到单元格 “`”**
- **“字典对象(
Scripting.Dictionary
)去重与计数:vbaDim dict As Object Set dict = CreateObject(“Scripting.Dictionary”) dict.Add Key, Value ‘ 自动处理重复Key “`”**
八、效率优化
- **“关闭屏幕更新提速:vbaApplication.ScreenUpdating = False ‘ 开始 ‘…代码操作… Application.ScreenUpdating = True ‘ 恢复 “`”**
- **“禁用自动计算:vbaApplication.Calculation = xlCalculationManual ‘ 手动模式 ‘…代码操作… Application.Calculate ‘ 手动触发计算 “`”**
九、错误处理
- “
On Error Resume Next
忽略错误继续执行,On Error GoTo ErrorHandler
跳转至错误处理段。” - **“调试技巧:
F8
逐行执行;Debug.Print
输出到立即窗口;- 断点(
F9
)暂停检查变量。”**
十、实战建议
- “模块化编程:将功能拆分为多个
Sub
或Function
,Public
声明全局变量。” - **“代码注释规范:
- 单行注释:
' 説明
; - 区块注释:
Rem 処理概要...
。”**
- 单行注释: