Excel VBA使用说明
1、个人宏工作簿:
是为宏儿设计的一种特殊的具有自动隐藏特性的工作簿。第一次会创建名为“PERSONAL.XLS"的新文件,保存在C :\WINDOWS\Profiles\ApplicationData\Microsoft\Excel\XLSTART,启动时excel会自动将此文件打开并隐藏在活动工作簿后面(在“窗口”菜单中可选择“取消隐藏”).不需要每次打开excel文件启动个人宏工作簿时,可在文件夹中删除此文件。
功能:让某个宏在多个工作簿都能使用
2、一个模块包含四类代码:
1. 声明:不可执行的代码,用来给VBA提供常数、变量或过程的定义信息,并且制定其特性,如数据类型的声明。
2. Sub过程:指完成某项特定任务的VBA代码集合,sub过程不能返回值
3. Function函数:函数,可返回一个运算结果
4. 属性过程:类模块中的特殊过程,可创建并操作类的自定义属性
3、立即窗口:
1. 开发代码中加入Debug.Print语句,可输出到立即窗口。
2. 立即窗口可加入执行代码,只需在代码前面加上?,按【enter】即可独立立即执行
4、事件:
1. 双击对象,弹出该对象的代码窗口
2. 在代码窗口上部左侧选择对象,右侧下拉框可选择事件
常见事件:
工作簿:
1. 打开Workbook_Open
2. 关闭Workbook_BeforeClose
3. 保存Workbook_BeforeSave
4. 打印Workbook_BeforePrint
工作表:
1. 双击Worksheet_BeforeDoubleClick
2. 右击Worksheet_BeforeRightClick
3. 选中区域/单元格Worksheet_SelectionChange
4. 改变单元格内容Worksheet_Change
5. 激活Worksheet_Activate
5、常量:
1. 符号常量:Const 常量名=常量值,如Const PI=3.14
2. 日期常量:用#括起来的日期字符串就是日期常量,如#3/28/2019#
3. 内置常量:一般以Vb为前缀,可直接使用,如VbRed
6、变量:
Dim语句定义一个变量后,VBA自动为该变量赋值。若变量为数值型,则初始值为零;若变量为字符串型,则初始值为空字符串;未定义数据类型的变量,则默认值为variant。
Dim: 普通局部变量;只能在声明它的过程中使用,变量在过程执行时才分配存储空间,执行后即释放。
Static: 静态局部变量;只能在声明它的过程中使用,在整个程序运行过程均有效。
Private: 模块变量;必须在某个模块的生命部分进行预先声明,在模块内的所有过程都可以使用。
Public: 全局变量;在标准模块的所有过程之外的起始位置进行定义的变量,运行时所有类模块和标准模块的所有子过程和函数可以使用该变量。
Option Explicit:在模块的开始部分添加该语句行,可实现强制用户显式声明,避免变量名拼写错误。
数组: Dim 数组名(n) [As 数据类型], 存储0-10共11个数据。
数据类型:(保留字或说明符)
1. Dim i as Integer = Dim i% (2字节)
2. Dim i as Long = Dim i& (4字节)
3. Dim i as Single = Dim i! (4字节)
4. Dim i as Double = Dim n# (8字节)
5. Dim i as String =Dim i$ (2M), Dim i as String*10 (定长10字符,0~64K)
6. Boolean 2字节,True或False
7. Date 8字节
8. Object 声明为对象变量,用Set语句赋值,
Dim myobject as Object
Set myobject=worksheet("Sheet")
Set myobject=Nothing '中断关联
9. Byte
10. Currency 货币
11. Variant 变体型
7、运算符:
MOD: 取模运算10MOD3=1
+:如果两边为字符串时,连接字符串,“1”+“2"="12"
&:强制连接为字符串 1&2=12
XOR: 逻辑排除运算符,左右表达式只有一个为真时,为真
EQV:逻辑等价运算符,左右表达式逻辑值相同为真
IMP:逻辑蕴含运算符,左表达式为真,右为假,结果为假,否则为true。
1、特殊字符
回车换行符:vbCrLf
2、过程:
事件:
Private Sub 事件(……)
End Sub
Sub过程:
[Private|Public|Friend|Static] Sub 过程名[(参数)]
[程序语句]
[Exit Sub]
[程序语句]
End Sub
调用:
Call 过程名(过程参数)
或过程名(过程参数),作为语句使用
Function:
[Private|Public|Friend|Static] Function 函数名[(参数) [as 参数类型]] [as 返回类型]
[程序语句]
函数名=表达式1
[Exit Function]
[程序语句]
函数名=表达式2
End Function
调用:
1. 在excel表中直接调用
2. 在VBA像内置函数一样使用, 如a=函数(参数)
3、常用函数:
输入:
变量 = InputBox(<提示>[,<标题>,<默认值>][,<边距1>,<边距2>])
输出:
[对象].print [<表达式>
Debug.print
[变量名response]=MsgBox
字符串:
Left("abcdefg", 2) = "ab"
Right("abcdefg", 2) = "fg"
Mid("abcdefg", 3, 2) = "cd"
"a" & "b"="ab"
调用内置函数
Application.WorksheetFunction.(内置函数)
最后一行
lastrow = thisworkbook.Sheet1.Range("A65536").End(xlUp).Row
工作簿
ActiveWorkbook.Name 文件名,不包含路径
ActiveWorkbook.FullName 文件名,包含路径
ActiveWorkbook.Path 路径
4、结构语句:
1. 条件
If 逻辑表达式1 then
程序语句1
elseif 逻辑表达式2 then
程序语句2
……
else
程序语句n
End if
2. 循环
For 循环变量=初始值 to 最终值 [Step 步长]
循环语句
Next [循环变量]
1、定时:
Application.OnTime 安排一个程序在将来的指定时间运行,不占用线程
Application.Wait 用于暂停程序,直到一特定时间才可继续执行。如果达到指定时间,则值为true。