
学习资源:《全民一起VBA基础篇(Excel数据处理)》 杨洋老师
一. VBA界面操作
- 调出开发工具
依次点击“文件”->“选项”->“自定义功能区”,在右侧主选项卡下面的选项中,找到“开发工具”,在前面的小框打勾,确定,即可在菜单栏看到有开发工具。

2. VBE界面(Visual Basic Editor)
菜单栏 -> 开发工具 -> 查看代码
快捷键:Alt + F11
常用标准代码,存放在模块。如没有看到模块,在工程资源管理器单击右键,插入模块即可。



二. 程序设计
- 数据类型
①字符串 String
②数字类型:整型 Integer、长整型 Long、单精度浮点型 Single(小数点后最多6位)、双精度浮点型 Double(小数点后最多14位)。
③日期型 Date
④布尔型 Boolean:TrueFalse.
⑤变体型 Variant(不知道是什么类型,可定义为variant,但这种操作应当尽量避免)
2. 变量
用于保存在程序运行过程中需要临时保存的值或对象。
定义变量:Dim 变量名 (As 数据类型)
Dim i as Integer
i=6
1)第一个字符必须是字母。
2)名字中可以包含字母、数字和下划线。
3)名字中不能包含空格、句号、惊叹号,也不能包含字符@、&、$和#。
4)名字中最多包含255个字符。
3. 常量
用于保存不会发生变化的数据。
定义常量:Const 常量名 As 数据类型 = 常量的值
Const pi As Single = 3.14
4.字符串
几个常用的字符串函数:
Len(): 求长度
Trim(): 去掉两端空格
Replace(): 替代子串
Left(): 从左边取若干字符
Right(): 从右边取若干字符
Mid(): 从中间取若干字符
Instr(): 查找子串
LCase(), UCase(): 将字母变成小/大写
进行操作前可叠加使用Trim()和LCase()清除数据中的空格和因大小写不一致出现的问题。
5.过程流程控制
①循环
For … next
Do While … Loop
For Each in … Next
②判断
If ... Then ... (Else if ... Else ...) End if
Not, And, Or(优先级从左往右)
三. 对象结构
类,对象,属性,方法
1.定义类
2.定义属性
3.定义方法
4.创建并使用对象

四. 编程习惯与辅助工具
①强制声明Option Explicit(写在sub上面,避免误用未定义的变量)
②代码缩进Tab键(注意递进关系,使代码更清晰)
③程序注释REM或单引号“‘ ”
④调试器(设置断点(在句子左侧点击)、单步执行F8、添加监视)
⑤录制宏(不会就录,注意录制时不要做多余的步骤)
五. 过程:
1.Sub
...
End Sub
2.Function
...
End Function
个人把过程语句理解为给电脑一个指令,让它知道是从这里开始,到那里结束。这里老师没有太多细讲。
六.练习:
汇总员工业季度报告(VBA基础篇第十八回 For Each轻取工作表,串函数巧解文字栏)

Option Explicit
Sub 季度汇总()
Dim i, j, k, name
Dim w As Worksheet, r As Worksheet
Set r = Worksheets("季度汇总")
'循环扫描汇总表中的每一行,记住每次要查找的姓名
For i = 3 To 10
name = r.Cells(i, 2)
'循环扫描所有工作表,并用 w 指向该工作表
For Each w In Worksheets
'如果该工作表名字以“月”结尾,则认为是月报表
If Right(w.name, 1) = "月" Then
'循环扫描该月报表的每一行,判断其姓名列是否等于name
k = 3
Do While w.Cells(k, 2) <> ""
'如果第k行姓名等于name,则将该行累加到汇总表第i行
If LCase(Trim(w.Cells(k, 2))) = LCase(Trim(name)) Then
For j = 3 To 6
r.Cells(i, j) = r.Cells(i, j) + w.Cells(k, j)
Next j
End If
k = k + 1
Loop
End If
Next w
Next i
End Sub
六. 总结
写了好久都没写对,一按运行就程序未响应,需要重新启动Excel,然后打开我写的程序就不见了……

对VBA有了大致的了解,明天开始学习蓝色幻想的课程。加油!