VBA学习-数组、过程与函数

数组声明
一维数组
Dim/Static/Private/Public<数组名>([索引下界]To]索引上界)As<数据类型>
二维数组
Dim/Static/Private/Public<数组名>(行数,列数)As<数据类型>
设置默认下界值
Option Base 0|1
查看数组的索引上界和下界值
下界值:LBound(数组名[,返回哪个维数的下界值])
上界值:UBound(数组名[,返回哪个维数的上界值])
数组赋值
使用循环语句初始化数组
FOR<循环变量>=索引下界To索引上界
<数组元素>=<初始值>
Next循环变量
Array()函数初始化数组
Array(以英文逗号隔开的数据序列表)
使用数组值初始化数组
动态数组
声明动态数组
Dim<数组名>()As<数据类型>
ReDim函数隐式数组声明
ReDim<数组名>([索引下界]To索引上界)
每次使用ReDim后数组中的值会丢失,若要保留原有值,可使用ReDim Preserve语句扩充数组
数组清除和重定义
Erase 数组变量

检测变量是否为数组
IsArray(变量名)
For Each数组的控件变量必须为变体
不能直接给整个数组赋值
数组中不能放置监视断点
过程创建
Sub过程
在调用子过程时,将采用按参数值(ByVal)和按地址传递(ByRef)两种方式
定义Sub过程
利用录制宏来创建
使用代码创建
[Private|Public|Friend][Static]Sub 过程名 [(要传递的参数变量列表)]
[过程语句]
[Exit Sub]
[过程语句]
End Sub
参数变量列表格式:
[Option][ByVal|ByRef][ParamArray]参数名[()][As type][=defaultvalue]
Function 函数
参数传递可采用按参数值(ByVal)和按地址传递(ByRef)两种方式
[Private|Public|Friend][Static]Function 函数名 [(要传递的参数变量列表)]
[函数语句]
[函数名=表达式]
[Exit Function]
[函数语句]
End Function
过程调用
Call语句调用子过程
Call 过程名[参数列表]
直接调用
过程名 参数列表
调用自定义函数
变量=函数名(参数列表)
过程调试
控制过程执行工具
VBE开发环境:运行菜单、调试菜单
运行:运行子过程/用户窗体
中断:Ctrl+Break
重新
控制程序执行间隔的功能
逐语句【F8】
逐过程【Shift+F8】
跳出【Ctrl+Shift+F8】
运行到光标处【Ctrl+F8】
监视
添加监视
编辑监视【Ctrl+W】
快速监视【Shift+F9】
切换断点【F9】
清除所有断点【Ctrl+Shift+F9】
调试方法
程序侵入式调试
Print过程 以Debug.Print输入立即窗口
Assert过程 以Debug.Asset 条件表达式(表达式为假时弹出警告)
变量监视
调试技巧
查看帮助文档
每个程序位置都要检查
怀疑代码错误
不做无根据判断
良好的编码风格
Property属性过程和Event事件过程
是VBA在对象功能上添加的连个过程
函数和子过程的区别
函数具有一个特定的返回值
子过程没有返回值
子过程用Sub关键字声明,函数用Function 关键字声明
常用字符串函数
Len(字符串/变量名) 返回字符数
LenB(字符串/变量名) 返回字节数
Left(字符串,长度) 返回指定字符串中从左边算起指定数量的字符
Mid(字符串,开始,[长度]) 返回指定字符串从指定位置向右指定个数字符
Right(字符串,长度) 返回指定字符串中从右边算起指定数量的字符
String(返回字符长度,字符码或字符串表达式) 生成多个重复字符
Replace(字符串表达式要替换的子字符串,要搜索的子字符串,用来替换的子字符串[,开始搜索位置[,替换次数[,判别比较方式]]]) 替换字符串
StrConv(字符串表达式,转换类型,LCID) 转换字符串类型

LCase(字符串) 转换成小写
UCase(字符串) 转换成大写
StrComp(字符串1,字符串2[,比较方式]) 比较两个字符串是否相等


日期函数
Now() 返回计算机系统的当前日期和时间
Date() 返回计算机系统的当前日期
Time() 返回计算机系统的当前时间
Year(日期参数)、Month(日期参数)、Day(日期参数) 返回日期参数的年、月、日
Hour(时间参数)、Minute(时间参数)、Second(时间参数) 返回时间参数的小时、分钟、秒数
Weekday(日期,[指定星期类型默认以周日为第一天]) 返回日期参数的星期值
WeekdayName(日期,星期名称是否被缩写Boolean值,指定星期类型默认以周日为第一天)
日期计算
DateAdd(字符串表达式,时间间隔,日期字符串或字符串表达式) 一段时间后的日期或时间
DateDiff(字符串表达式两个日期时间间隔,第一个日期,第二个日期[,指定一个星期的第一天默认周日[,指定一年的第一周]]) 计算两个日期间的间隔
DatePart(返回的日期单位,日期[,一周的第一天[,指定一年的第一周]]) 获取指定日期在指定年的第几天、周和月


FormatDateTime(日期[,日期/时间所使用的格式]) 将日期数字转换成日期或时间格式表达式

清除字符串空格
LTrim(字符串或字符串变量) 清除前导空格
RTrim(字符串或字符串变量) 清除末尾空格
Trim(字符串或字符串变量) 清除字符串中的空格
字符与ASCII码转换
Asc(字符串参数) 将字符串第一个字符转换成ASCII码
Chr(ASCII码) 将ASCII码转换成对应字符
相关代码说明和实例可查询VBA开发文档 以上内容是本人自学笔记总结,欢迎指正,有关Excel的问题,可私信联系,互相交流讨论,共同进步,谢谢。部分内容和数据来自互联网,如有疑问,欢迎联系。