目录
3.一次要声明多个变量的时候,可以写在同一行,中间用逗号隔开
一、概念介绍:
1)VBA的概念
VBA是一种编程语言,是VB语言的分支
2)VBA和VB的区别
VB是编写应用程序,而VBA是使已有的应用程序(EXCEL、CAD)自动化
VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.
运行VB开发的应用程序,不必安装VB,而VBA开发的程序必须依赖于它的父应用程序
3)VBA的用途
规范用户的操作,控制用户的操作行为
操作界面人性化,方便用户的操作
多步骤,重复步骤可以通过执行VBA代码可以迅速的实现
实现一些无法实现的功能
4)宏和VBA代码的关系(录制宏相当于照相机)
宏是一组可以让自动执行的代码,每个宏对应一段VBA代码
区别:宏是录制出来的VBA代码,而VBE窗口里的代码是用户自己写的
宏的优点:可以避免重复执行相同的操作,提高工作效率
宏的缺点:不够智能化,无法交互工作,代码冗余
【注意事项】
1、录制宏的时候要注意选择“相对引用”
2、F5在Excel里面是用来定位的快捷键
3.VB语言不区分大小写
二、VBE——VBA的窗口介绍
1)如何进入VBA代码编辑窗口
快速方法:Alt+F11(再按一次回到表格界面)
常规方法:开发工具-Visual Basic-工程资源管理器(Ctrl+R)-模块
2)立即窗口(Ctrl+G)
vba 立即窗口有两个功能:
1、执行单句的代码【F8是单步调试的快捷键】;2、显示调试代码时产生的结果。
3)如何在VBE窗口下插入过程
插入过程(子程序、函数过程)
1.插入子程序:
Sub 子过程()
MsgBox "弹出一个信息框——文字内容用英文半角双引号引起"
End Sub
2.插入函数过程:
Public Function plus()
End Function
4)运行宏/VBA的方法
直接运行——点运行按钮
图形运行——插入图形后指定宏 or 在VBE窗口下插入表单控件指定宏
三、VBA代码编写规则
1)VBE常见的设置
A.设置字体,大小等——工具-选项-编辑器格式
'B.注释——在注释语句前加英文单引号表示注释掉这一行(注释的语句会变成绿色)
【快速方法:工具-编辑(小手标志的右边两个控件,=注释模块和解除注释块)】
C.代码的运行【快捷键是F5】
D.代码帮助(函数/模块用法不懂-选中后按F1-得到帮助文档)
E.单步运行——选中代码块-每按一次F8执行一句
2)什么是子过程&什么是函数过程
A.子过程{Sub到End Sub表示了一个子过程}
B.函数过程{Function到End Function表示了一个子过程}
3)代码换行
英文下划线+空格后,回车换行(举个栗子👇)
Sub aa()
MsgBox _
"学习VBA"
End Sub
四、Excel中的对象&集合
1)Excel中的对象有:
工作簿,工作表,单元格,图表,透视表之类的
工作簿(Workbooks) | 工作表(Worksheets) | 单元格(cells) |
Workbooks(N)第N个工作簿 | Sheets(N) 第N个工作表 | Cells(行号,列号) [A1]单元格简写 |
Workbooks ("工作簿名") | Sheets("工作表名") | Range ("单元格地址") |
ActiveWorkbook 活动工作簿 | ActiveSheet 活动工作表 | Activecell 活动单元格 |
ThisWorkBook '代码所在工作簿 | worksheets 与 Sheets的区别 | Selection 当前被选取的区域 |
2)Excel中的集合有:
workbooks(工作簿集合),worksheets(工作表集合),cells(单元格集合)等等
五、VBA里的对象属性
VBA属性: 指对象所具有的特性?
类比人的属性:姓名,年龄,身份证号,住址….
'VBA对象属性介绍
Sub 属性()
Debug.Print Sheet1.Name '这里Sheet1是对象,Name是对象的属性
'【Debug.Print是在立即窗口打印的意思-Ctrl+G调出立即窗口】
Debug.Print Sheet1.Range("a1").Value '这里Sheet1的a1单元格是对象,Value值是属性
End Sub
'VBA对象属性的赋值
Sub 属性赋值()
Sheet2.Name = "这是我改的名字"
Sheet2.Range("a1") = "学习VBA"
End Sub
六、VBA对象的方法
方法:实际上就是对对象的操作,它是一种动作,一种行为。
👉常见的有选择方法、复制方法、删除方法:
1)选择方法:
Sub 选择方法()
Range("a1:a3").Select '这句代码的意思是在单元格a1-a3这一列的范围内,进行选择操作
'注:如果单元格区域前没有写工作表名,则默认为当前活动工作表
End Sub
2)复制方法:
Sub 复制方法()
Sheet1.Range("a1:a12") = 5 '将5写入表一的a1:a12区域
Sheet1.Range("a1:a6").Copy Sheet2.Range("a1") '将表一的a1:a6区域的值复制到表2的a1
End Sub
3)删除方法:
Sub 删除方法()
Sheets(3).Delete
'这句话的意思是删除工作表集合中,属性为3(第三个工作表,工作表的名字可以不是3)的工作表
End Sub
七、变量与常量
1.常量:
常量是定义了之后就不做变化了
常量定义格式:Const 常量名= 常量表达式
举个例子,定义一个常量pi,并给它赋值为3.1415926
Sub 常量()
Const pi = 3.145926
End Sub
2.变量:
变量在定义之后还能再次赋值
变量定义格式:Dim 变量名 As 变量类型
Sub 变量()
Dim a As Integer
'定义一个整数类型的变量a,整数类型的变量默认的初始值是0(可以通过F8单步调试在本地窗口中看到)
a = 100 '将100赋值给变量a
a = 250 '这次再将250赋值给变量a【此时变量a原来的值100将会被覆盖】
End Sub
3.常量和变量的应用:
Sub 应用()
'执行完sub这句就直接跳到a=200了,跳到a=200这句时,常量pi=3.14159,整型变量a处于默认值0的状态
Const pi = 3.1415926 '先定义一个常量pi
Dim a As Integer '再定义一个整型变量a
a = 200 '给这个整型变量a赋值为200
Debug.Print pi * a
'在立即窗口中打印pi*a的值【Ctrl+G调出立即窗口检查一下应该是628.31852】
End Sub
★注意事项
'A.VBA允许使用未定义的变量,默认是体变量(Variant),初始值这时就默认为空值
'默认的体变量Variant占的内存相对较大,故一个好的代码习惯就是自己尽量明确定义变量类型
'B.变量的强制声明:在所有模块的最上方写上语句:Option Explicit
★变量名的命名规则
'以字母开头
'不能用保留字【保留字就是VB语言里已经用作他途的固定字符,如;sub、if、end之类】
'不超过 255 个字符。
'同一子范围内必须是唯一
★注释可以是英文单引号,也可以是英文双引号【和VB语言的注释方法是一样的】
八、数据类型:
1.VBA中的常见数据类型:
' 类型 注释 简写 占用内存
' Integer 整型 % 2Byte
' Single 单精度 ! 4Byte
' Double 双精度 # 8Byte
' Long 长整型 & 4Byte
' String 字符型 $ 定长或变长
' Currency 货币型 @ 8Byte
【变长字符串最多可包含大约 20 亿 ( 2^31)个字符;
定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。】
👉如何记住不同的数据类型对应的符号?
Integer整型---完完整整100%→用%表示整型 |
Single单精度---形单影只→用!来表示单精度 |
Double双精度---哪里都是成双的,#横着竖着都是两画→用#来表示双精度 |
Long 长整型---&一笔写成,又长又整→用&来表示长整型 |
String字符串型---在String的S上做个标记$来表示字符型变量→用$来表示字符型 |
Currency货币型---用C的变体@来表示货币型变量 |
2.变量数据类型的声明:
Sub 数据类型()
Dim a As Integer
Dim b% '这句代码的意思是定义一个整型变量b,注意整型变量没有赋值的话,默认初始值为0
a = 120
End Sub
3.一次要声明多个变量的时候,可以写在同一行,中间用逗号隔开
Sub 多数据类型声明()
Dim a As Integer, b As Single, c As String
Dim d%, e!, f$ '这句代码的意思是定义一个整型变量d,定义一个单精度变量e和一个字符型变量f
End Sub