VBA语法
1. 基础语法
2. 控制结构
3. 数组
4. 过程
5. 模块
6. 处理字符串和日期
基础语法
4.2所有代码都在宏内如下:
Sub 宏名称()
'说明
…
End sub
单引号为注释
字符: a-z,A-Z,0-9,中文版excel还可以用中文
关键字:vbe中不区分大小写,输入完enter后,vbe自动将关键字转换为首字母大写
标识符:过程、常熟、变量、对象的名称
首字符为字母或下划线;最长255字符;见名知意
4.3数据类型:
1. Ineger
2个字节 %声明字符
2. Long
4个字节 &
3. Single
4个字节 !
4. Double
8个字节 #
5. Currency
8个字节 @
整型的数值形式,除以10000,给出一个定点数,左边15位,右边4位,single和double 浮点数比货币型有效范围大得多,有可能有误差,因此货币型用更多的字节保存数据,减少计算误差。
6. Byte
1个字节 0-255之间整数
7. String
双引号内
"欢迎使用VBA" "" '空字符串
Dim str1 as string '变长字符2^31个字符
Dim str2 as string*10 '定长2^16个支付,约64K
8. Boolean
只有两个值True和False,当其他类型转换为布尔类型,0转为false,其他为true;布尔转换其他类型时,false为0 ,true为-1
9. Date
支持复杂日期操作和运算,日期范围100年1月1日—9999年12月31日;时间从0:00:00 --- 23:59:59,
任何可辨认的文本日期都可赋值给date变量,以##括起来。如
#january1/1993#
#1 jan 93 #
日期型变量会根据计算机中短日期格式显示,时间根据计算机时间格式显示(12或24小时制)
其他数值类型转为日期型,小数点左边表示日期,右边表示时间;午夜为0,中午为0.5,负整数表示1899年12月30日之前
10. Object
4个字节存储地址,必须用set语句赋值,结束后,赋值为nothing
Dim MyObject as object
Set myobject = worksheets(“sheet1”)
Set myobject = nothing
11. Variant
可以为除定长string外所有类型,可用vartype或typename函数决定如何处理变体型数据
12. 自定义数据类型
Type
…
End type
必须放在模块或类模块声明部分
Type product
Productname asstring
库存量 as integer
Price as currency
Order as integer
End type
Sub test()
Dim p1 asproduct
With worksheets(“商品“)
P1.productname= .cells(3,2)
P1.库存量 = .cells(3,6)
P1.price= .cells(3,7)
P1.order= cells(3,8)
End with
End sub
13. 枚举类型
默认情况下枚举第一个常数为0,后边比前边大1,也可直接= 赋值第一个为1
Public enum grade
小学
一年级
二年级
End enum
4.4常数(直接常数,符号常数,系统常数)
日期自动按月/日/年表达
Const MAXCOL =255
Const MyInt asInteger = 5
Const BOOKNAME =“excel 从入门到精通“
Const BOOK = “microsoft”+ BOOKNAME
系统常数 控制对象的某些属性,用名称比用数字直观,有vb和应用程序的常数列表,常用大小写混合方式,前缀表示对象库名
如msgbox 用vbOKOnly比用0直观
XlWindowType xlWorkbook
可以在帮助中搜索常数查看,或对象浏览器
4.5变量
dim 变量名[as 类型]
optionexplicit
作用域
过程级dim声明
模块级在开始部分用dim或private声明
全局级别整个程序(各模块,过程)在开始部分public 声明
生命周期
一般生命周期与作用域相同,static静态变量,整个程序有效,但只在定义过程能访问,超过该过程不能访问
Sub过程1()
Dims1 as string
S1= “hello world”
Msgboxs1
Endsub
Sub过程2()
Msgboxs1
Endsub
过程2 无显示
4.6运算符
字符连接运算
+连接两个都是字符
&强制为字符串连接
Msgbox “局部变量的值” &Il & vbNewLine & ”静态变量的值” & i2,vbOkOnly