Execl VBA学习笔记-个人整理
1、一、什么是VBA?
VBA是一种编程语言,它依托于Office软件,不能独立的运行,通过VBA可以实现各种Office软件操作的自动化。
1、宏与VBA有什么关系?
VBA是编程语言,宏是用VBA代码保存下来的程序。
2、打开宏的对话框:Alt+F8。
二、程序里都有什么?
代码,过程,模块,对象,对象的属性
对象的属性表示:对象在前,属性在后,对象与属性之间用点(.)连接如:Range(“A1”).Value
对象的方法同上如:Range(“A1”).Select
三、VBA的编程环境-VBE
打开方法快捷键:Alt+F11
1、 试写一个简单的VBA程序,在模块中添加一个模块输入代码如下:
Public Sub mysub()
MsgBox “学习VBA,我很高兴!”
End Sub
四、VBA语法的学习
1、VBA中有哪些数据类型?
Byte,Boolen,Integer,Long,Date,Variant等等
2、变量与常量
声明变量:Dim 变量名 As 数据类型
声明多个变量:不同的变量之前用逗号隔开。
不指定变量类型使用Variant称为变体型。
强制声明所有变量:
在模块的第一句手动输入:Option Explicit
或者在工具->选项->勾选要求变量声明
2、 变量的作用域不同的
Public 变量名 As 数据类型 公共变量
Private 变量名 As 数据类型 私有变量
Static 变量名 As 数据类型 静态变量
3、 变量赋值
变量名称= 数据
如果给对象变量(Object型,如单元格)赋值,语句为:Set 变量名称=对象(其中Set千万不能少)
4、 使用常量
Const 变量名称 As 数据类型=数值
5、 使用数组
声明数组:Public |Dim 数组名(a to b)As 数据类型 数组中元素的个数为:b-a+1
给数组赋值:数组名(a)=赋值
2、 声明多维数组
Dim 数组名称(a to b,c to d)数组的数量为(b-a+1)x(d-c+1)
声明动态数组:Dim 数组名称()
其他创建数组的方式:Array()、Split()、Range()
使用UBound和LBound函数可以计算数组的最大和最小索引号。
7、集合、对象、属性和方法
例如:Application.Workbooks(“Books”).Worksheets(“sheet2”).Range(“A2”)
对象的属性
Sheet1 工作表的A1单元格
8、VBA的运算符
9、内置函数:Time()、If语句、Select Case语句、For…Next语句、Do While语句、Do Until语句、For Each…Next语句、Goto语句以及With语句
10、Sub过程,基本的程序单元
声明Sub过程,规范的语句
[Private| Public] [Static] Sub 过程名 ([参数列表])
[语句块]
[Exit Sub]
[语句块]
End Sub
过程的作用域分为公有过程与私有过程。
11、自定义函数,Function过程
声明函数过程,规范的语句
[Private| Public] [Static] Function 函数名([参数列表])[As 数据类型]
[语句块]
[函数名=过程结果]
[Exit Function]
[语句块]
[函数名=过程结果]
End Funxtion
12、代码排版
更改长行代码为短行代码:[空格]+下划线,下划线前的空格一定不能少。
把多行合并为一行:各行代码之间用英文冒号(:)分隔。
添加注释语句:’ +需要说明的语句
五、常用对象
1、ecl VBA常用的对象:
Application
代表Execl应用程序
Workbook
代表Execl中的工作薄,一个Workbook对象代表一个工作薄文件
Worksheet
代表Execl中的工作表,一个Workbook对象代表一个工作薄里的一张普通工作表
Range
代表Execl中的单元格,可以是单个单元格,也可以是单元格区域
2、由我开始,最顶层的Application对象
Application.ScreenUpdating = False 关闭屏幕更新
Application.ScreenUpdating = True 恢复屏幕更新
3、Application.DisplayAlerts = False 不显示警告信息
Application.DisplayAlerts = True 恢复显示警告信息
Application对象的EnableEvents属性来启用或禁用事件
3、了解Workbook对象
属性列表
l 属性
l 描述
l Count
l 该属性返回 Workbooks 集合中 Workbook 对象的数量。Long 类型,只读。
l Item
l 该属性返回 Workbooks 集合中的单个 Workbook 对象。Workbook 类型,只读。
l 方法列表
l 方法
l 描述
l Add
l 该方法用于新建工作簿。
l Close
l 该方法用于关闭所有工作簿。
l Open
l 该方法用于打开工作簿。
4、至关重要的Range对象
多种方法引用Ranged对象
Worksheets(或Range)对象的Range属性
如果要引用多个不连续的区域,可以在各区域间添加逗号。
如果想引用相交区域(公共区域),可以在多个区域间添加空格。
可以使用两个参数来引用两个区域围成的矩形区域。
Worksheets(或Range)对象的Cells属性
Application对象的Union方法、Offset属性、Resize属性、UsedRange属性、CurrentRegion属性、End属性
单元格里的内容,Value属性
Count 、Address属性、Selects属性
5、事件,VBA里的自动开关
Worksheet对象的事件列表
Activate
激活工作表时发生
BeforeDoubleClick
双击工作表之后,默认的双击操作之前发生
BeforeRightClick
右击工作表之后,默认的右击操作之前发生
Calculate
重新计算工作表之后发生
Change
工作表中的单元格发生更改时发生
Deactivate
工作表由活动工作表变为不活动工作表时发生
FollowHyperlink
单击工作表中的任意超链接时发生
PivotTableUpdate
在工作表中更新数据透视视表之后发生
SelectionChange
工作表中所选内容发生更改发生
6、Workbook事件列表
事件
说明
Activate
激活工作薄时
AddinInstall
当工作簿作为加载宏安装时
4、AddinUninstall
工作簿作为加载宏卸载时
BeforeClose
关闭工作薄前
BeforePrint
打印工作薄(或其中任何内容)之前
BeforeSave
保存工作薄前
Deactivate
工作簿从活动状态转为非活动状态时
NewSheet
在工作簿中新建工作表时
Open
打开工作簿时
PivotTableCloseConnection
在数据透视表关闭与其数据源的连接之后
PivotTableOpenConnection
在数据透视表打开与其数据源的连接之后
SheetActivate
激活任何一张表时
SheetBeforeDoubleClick
双击任何工作表时
SheetBeforeRightClick
鼠标右键单击任一工作表时
SheetCalculate
工作表重新计算时
SheetChange
更改工作表中的单元格时
SheetDeactivate
任一工作表由活动状态转为非活动状态时
SheetFollowHyperlink
单击 Microsoft Excel 中的任意超链接时
SheetPivotTableUpdate
数据透视表的工作表更新之后
SheetSelectionChange
工作簿中的数据透视表更新之后
WindowActivate
工作簿的窗口激活时
WindowDeactivate
工作簿的窗口变为非活动状态时
WindowResize
工作簿窗口调整大小时
7、别样的自动化
MouseMove事件
不是事件的事件:Application对象的OnKey方法
六、用户界面设计
窗体控件 ActiveX控件
与用户交互、简单的输入输出对话框
InputBox函数
Application对象的InputBox方法:可以创建接收用户输入的对话框。
MsgBox函数:可以创建一共对话框,告诉用户某些信息,并等待用户单击其中某个按钮后继续运行。
MsgBox的6种按钮设定
常数
值
说明
VbOkonly
0
只显示【确定】按钮
vbOkCancel
1
显示【确定】和【取消】两个按钮
5、vbAbortRetryIgnore
2
显示【终止】、【重试】和【忽略】3个按钮
VbYesNoCancel
3
显示【是】、【否】和【取消】3个按钮
vbYesNo
4
显示【是】和【否】2个按钮
vbRetryCancel
5
显示【重试】和【取消】2个按钮
MsgBox函数一共有4种图形样式
VbCritical
16
显示“关键信息”图标
vbQuestion
32
显示“警告询问”图标
vbExclamation
48
显示“警告消息”图标
vbInformation
64
显示“通知消息”图标
Application对象的FindFlie方法:用户可以在对话框中选择并打开文件。
Application对象的GetOpenFilename方法:在对话框里选择文件,获得文件名称。
Application对象的GetSaveAsFilename方法:打开【另存为】对话框,在对话框里选择文件,获得文件名。
Application对象的FileDialog属性:可以获得指定目录的路径及名称。
1、 关于用户窗体
UserForm对象与控件