Excel_2016_VBA学习笔记_基础语法篇①
在Excel中快速打开VBA编辑器
1
2
3FN+Alt+F11
or
选择开发选项,点击 Visual Basic
在VBA编辑器中摁以下按钮,切回Excel表格中
1
FN+Alt+F11
创建一个VBA输入代码界面
1
插入→模块→插入→过程→子程序 or 函数
注释
1
2英文下的单引号 '
视图→工具栏→编辑相关函数的帮助
1
鼠标选中函数名+FN+F11,会弹出网页版该函数的解释
代码换行
下划线+空格+换行
1 |
|
对象选择确认
在操作sheet时,需要通过“视图”中的“工程资源管理器”中显示sheet序号来定。
因为不这样的确认的话,程序是找不见对象的,比如你认为是sheet2,其实人家对象是sheet3.复制sheet1表中的数据到sheet2中(附赠一个填充语句)
1
2
3
4Sub 填充和复制()
'Sheet1.Range("a12:a15", "b12:b15") = 1
Sheet1.Range("a1:a9").Copy Sheet3.Range("a1")
End Sub删除sheet的方法
1
2
3
4
5
6
7
8
9' 删除sheet3这个表
Sub 删除表()
Sheet3.Delete
End Sub
or
' 删除排列顺序第三个的表
Sub 删除表()
Sheets(3).Delete
End Sub定义常量(常量是定义了之后就不做变化了)
常量定义格式:const 常量名 = 常量表达式
1 |
|
- 定义变量(在定义之后还能再次赋值)
变量定义格式:dim 变量 as 变量类型
1 |
|
注意事项1
VBA允许使用未定义的变量,默认是变体变量(variant)
因为默认的类型,开辟的空间较大,不建议使用
变量的强制声明:option explicit (在代码首行定义后,如果下面的子代码不定义变量的话,就会提示编译出错)变量的命名规则
已字母开头
不能使用保留字
不超过255个字符
同一范围内必须是唯一的常见的数据类型
1
2
3
4
5
6
7
8
9
10
11类型 注释 简写 占用内存
integer 整型 % 2byte
single 单精度 ! 4byte
double 双精度 # 8byte
long 长整型 & 4byte
string 字符型 $ 定长或变长
currency 货币型 @ 8byte
Sub 定义类型()
Dim a As Integer, b As Single, c As String
Dim d%, e!, f$
End SubIF判断语句
1 |
|
IF判断多语句
1
2
3
4
5
6
7
8
9
10
11Sub if判断多条件()
If Sheet1.Range("c3") >= 90 Then
Sheet1.Range("c4") = "优秀"
ElseIf Sheet1.Range("c3") >= 80 Then
Sheet1.Range("c4") = "良好"
ElseIf Sheet1.Range("c3") >= 70 Then
Sheet1.Range("c4") = "中等"
Else
Sheet1.Range("c4") = "较差"
End If
End SubIIF函数应用
1
2
3Sub iif函数应用()
Sheet1.Cells(行, 列) = IIf(Sheet1.Cells(行, 列) > 80, "优秀", "不优秀")
End SubIF用法小结
单行形式(if…then)
if 条件判断 then 条件成立结果
注意:在单行形式中,按照if…then判断的结果也可以执行多条语句
所有语句必须在同一行上并且以冒号分开
1 |
|
- Select cass 语法
根据表达式的值来决定执行语句中的其中一个。
单条件判断:
1 |
|
多条件判断:
1 |
|
DO…LOOP语法
do…loop循环语句
某条件之后输入 Exit Do 结束循环
1
2
3
4
5
6
7
8
9
10Sub do_loop循环()
Dim a%
Do
a = a + 1
If a > 10 Then
MsgBox a & "终于大于10"
Exit Do
End If
Loop
End SubDO…WHILE…LOOP语法
do…while…loop循环语句
条件小于某值后结束循环
1
2
3
4
5
6
7
8
9
10Sub do_while_loop循环()
Dim a%
a = 1
Do While a < 12
If a > 10 Then
MsgBox a & "终于大于10"
End If
a = a + 1
Loop
End SubDO…UNTIL…LOOP语法
do…until…loop循环语句
条件等于某值后结束循环
1
2
3
4
5
6
7
8
9
10Sub do_until_loop循环()
Dim a%
a = 1
Do Until a = 12
If a > 10 Then
MsgBox a & "终于大于10"
End If
a = a + 1
Loop
End SubWHILE和UNTIL循环小技巧
while和until不但可以放在do后面,也可以放在loop后面
事实上有时在循环的最后一行进行判断,更有意义
1 |
|
- FOR…EACH..NEXT循环
当需要处理集合成员时,一般会用for…each…next来处理对象
1 |
|
- FOR…NEXT 语法
对数字进行累积相加
1 |
|
for语法总结
for …next 语句:已制定次数来重复执行一组语句
for 计数变量 = 初始值 to 终止值 [step 步长值]
[执行的一条或多条语句]
[exit for]
[执行的一条或者多条语句]
net [计数变量]可以忽略不写
循环中可以在任何位置放置任意个exit for 语句,随时退出循环
exit for 与if…then经常一起使用,目的是找到符合条件后,跳出循环九九乘法表
1
2
3
4
5
6
7
8
9
10
11
12Sub 九九乘法()
Dim a!, b!
For a = 1 To 9
For b = 1 To 9
If b > a Then
Sheet1.Cells(a, b) = ""
Else
Sheet1.Cells(a, b) = a & "x" & b & "=" & a * b
End If
Next
Next
End SubEXIT和END的介绍
exit是退出当前语句exit do、exit for 、exit function 、 exit sub
end 结束一个过程或者块
end 、end function、 end if 、 end select 、 end sub
- GoTo line 跳转语句
goto line 无条件的转移到过程中指定的行。
注意,太多的 goto 语句,会使程序代码不容易阅读及调试。
请尽可能使用结构化控制语句(do..loop等等)
1 |
|
line 这个标识符可以是任意一个字符或者数字
1 |
|
- GOSUB…RETUNRN跳转语句
懒得解释了,看代码吧。。。。
1 |
|
- 错误分支语句
On Error Resume Next
但错误的时候,继续执行下去
1 |
|
On Error GoTo 跳转值
当执行出错时,跳转到制定行
1 |
|
- with 语句
当对某个对象执行一系列的语句时,不用重复指出对象的名称
with 固定值 … end with
1 |
|
多看注释就懂了
Sub 双with赋值()
1 |
|
- 一些函数语法注意项
当在vba代码中使用Excel函数时,当遇到函数内需要双引号时,需要填写两个双引号,即可。
1 |
|
一般使用Application.WorksheetFunction来借用工作表函数
1 |
|
直接使用vba内置的函数来操作
1 |
|
自定义函数,具体用法等等以后的笔记。
1 |
|
- 运算符
定义:运算符是代表vba某种运算功能的符号
赋值运算符:=
数学运算符:&(字符连接符)、+(加)、-(减)、mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
逻辑运算符:not(非)、and(与)、or(或)、xor(异或)、eqv(相等)、imp(隐含)
关系运算符:=(相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、like(匹配)、
1 |
|