从0开始学习VBA
从0开始学习VBA
第一章 VBA 基础
一、基础准备工作
理解VBA是什么,学习的目的是什么,学习所需具备的条件
VBA是什么?
VBA是嵌入Excel的脚本语言,是VB语言的分支,VBA可以理解为Excel的另一种操作方式,以编写脚本的方式操作Excel,弥补EXCEL软件的不足,拓展EXCEL的功能进而实现办公自动化,提高工作效率。学习目的
学习VBA的目的是解决日常表格操作中重复的工作,提高工作效率学习VBA的所需具备的条件
(1)Excel基础操作
(2)能够使用Excel工作表函数(不需要精通)
(3)不需要英语基础本套学习教程使用的是Excel2016及以上版本
二、VBA基础操作
调出开发工具
打开工作簿单击文件选项卡 选择“选项”
单击“选项按钮”调出Excel选项界面,单击自定义功能区
将主选卡中的“开发工具”复选框选中,将开发工具添加至工作簿主选项卡进入VBA编写界面
快捷键:alt+F11
单击“开发工具”选择“Visual Basic” 进入VBA代码编写界面
在“工程资源管理器”中单击鼠标右键选择 插入模块 在模块中即可编写VBA代码
- VBA 基础操作
3-1 变量的定义:变量是一个自定义名称的储存单位,变量是一个载体。在VBA 中变量的作用是用于简化操作,并存储不确定的数据
dim i as Integer 表示定义一个整型变量 可简写为 dim i%,i的大小为2个字节,i的范围为-32768到32767
dim i As Long 表示定义一个 长整型变量 可简写为 dim i&,i的大不为4个字节,i的范为-2147483648到2147483647
dim s As string 表示定义一个字符串变量,可简写为 dim s$,
注:编写vba代码不区分大小写
3-2 VBA中的对象
日常我们编写VBA,大部分都是在操作对象,对象就是VBA的主角,我们最常用的对象为单元格、工作表、工作簿
单元格对象的表示方式:
range("单元格地址")
例:Range("a1") 表示a1单元格
Range("a:a")表示a列
range("a1:b20")表示a1单元格到b20单元格之音的矩形区域
注:以上写法都是表示固定的区域,在以后的学习过程中我们会学习如何动态的表示一个单元格区域
cells(行,列)
例:celss(1,1)表示工作簿中第一行,第一例的单元格 等价于range("a1") 同时也等价于cells(1,"a")
工作表对象的表示方式:
sheet1、sheet2:我们新建工作表时的默认名称
sheets(i):通过工作表在工作簿中的位置表示工作表,与工作表中的名称无关
sheets(1) != sheet1
在上图中sheets(1)表示工作表sheet4,sheets(2)表示工作表sheet3,sheets(3)表示工作表sheet2,sheets(4)表示工作表sheet(1)
sheets("工作表名"):通过用户给工作表自定义的名称表示工作表。
3-3 开始编写vba 代码
首先定义sub 过程,在sub 过程中开始编写代码
编写代码:Range("a1") = 12,单击“运行”按钮开始运行代码,代码运行后在Range("a1")中写入数字12。
range("a1") = 12
range("a1").select 表示a1单元格被选中
sheets(1).select 表示第一张工作表被选中,相当于单击工作表
以上是 vba最基本的操作,有了这些基础,我们可以进一步的学习,从而实现批量操作工作表中的数据。
3-4 vba 中的if 语句
3-4-1 单分支结构
if 判断条件 then
执行的语句
end if 结束 if语句
sub test()
if range("a2") = "男" then
range("b2") = "先生"
end if
end sub
以上代码表示如果a1单元格的值为“男” 则在e2单元格中填入女士
3-4-2 双分支结构
if 判断条件 then
如果条件成立 执行的语句
else
如果条件不成立执行的语句
end if
sub test
if range("a2") = "男" then
range("b2") = "先生"
else
range("b2") = "女士"
end if
end sub
3-4-3 多分支结构
if 判断条件 then
如果条件成立 执行的语句
else if 判断条件 then
如果条件成立执行的语句
else
如果以上条件不成立执行的语句
end if
sub test()
if range("a2") >=90 then
range("b2") = "优秀"
elseif range("a2") >= 70 then
range("b2") = "良好"
elseif range("a2") >= 60 then
range("b2") = "及格"
else
range("b2") = "不及格"
end if
end sub
3-5 vba 中的循还语句
vba中的循还语句包括 for 循还、for each 循还、do loop 循还、do while循还、do until循还
for:循环次数固定,不仅是是获取循环内容,可能也会关注循环次序(1、2、3、4、5、....)
for each:不关心循环次数,特别注重循环内容(也就是元素)、无条件执行。
do loop、do whlie 、do until :不关心循环次数,特别注重的是循环条件的满足,同时循环过程与循环条件没有任何关系。
我们先从 for 循还开始学习
基本语法:for 变量名 = x to y
循还体
next
Sub test()
Dim i As Integer
For i = 2 To 19
If Range("b" & i) < 60 Then
Range("b" & i).Interior.ColorIndex = 3
End If
Next
End Sub
以上代码的作用是将分数小于60分的单元格标注为红色