第一节:数据类型及常用控制语句
1、运算符:
(1)赋值运算符 =
(2)数学运算符: &、+ (字符连接符)、+(加)、-(减)、*(乘)、/(除)、Mod(取余)、\(整除)、-(负号)、^(指数)
(3)逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)
(4)关系运算符: = (相等)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is
(5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)
2、数据类型:
VBA共有12种数据类型,具体见下表,此外用户还可以根据以下类型用Type自定义数据类型。
数据类型 | 类型标识符 | 字节 |
字符串型 String | $ | 字符长度(0-65400) |
字节型 Byte | 无 | 1 |
布尔型 Boolean | 无 | 2 |
整数型 Integer | % | 2 |
长整数型 Long | & | 4 |
单精度型 Single | ! | 4 |
双精度型 Double | # | 8 |
日期型 Date | 无 | 8 公元100/1/1-9999/12/31 |
货币型 Currency | @ | 8 |
小数点型 Decimal | 无 | 14 |
变体型 Variant | 无 | 以上任意类型,可变 |
对象型 Object | 无 | 4 |
3、变量与常量
(1)VBA允许使用未定义的变量,默认是变体变量Variant。
(2)在模块通用说明部份,加入 Option Explicit 语句可以强迫用户进行变量定义。
(3)变量定义语句及变量作用域
Dim 变量 as 类型 | '定义为局部变量 | 如 Dim xyz as integer |
Private 变量 as 类型 | '定义为私有变量 | 如 Private xyz as byte |
Public 变量 as 类型 | '定义为公有变量 | 如 Public xyz as single |
Global 变量 as 类型 | '定义为全局变量 | 如 Globlal xyz as date |
Static 变量 as 类型 | '定义为静态变量 | 如 Static xyz as double |
一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。
(4)常量为变量的一种特例,用Const定义,且定义时赋值,程序中不能改变值,作用域也如同变量作用域。
如下定义:Const Pi=3.1415926 as single
4、数组
在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。定义规则如下:Dim 数组名([lower to ]upper [, [lower to ]upper, ….]) as type ;Lower缺省值为0。二维数组是按行列排列,如XYZ(行,列)。除了以上固定数组外,VBA还有一种功能强大的动态数组,定义时无大小维数声明;在程序中再利用Redim语句来重新改变数组大小,原来数组内容可以通过加preserve关键字来保留。如下例:Dim array1() as double : Redim array1(5) : array1(3)=250 : Redim preserve array1(5,10)
5、注释
注释语句是用来说明程序中某些语句的功能和作用;VBA中有两种方法标识为注释语句。单引号 ’ ;如:’定义全局变量;可以位于别的语句之尾,也可单独一行Rem ;如:Rem 定义全局变量;只能单独一行。
6、书写规范
(1)VBA不区分标识符的字母大小写,一律认为是小写字母;
(2)一行可以书写多条语句,各语句之间以冒号 : 分开;
(3)一条语句可以多行书写,以空格加下划线 _ 来标识下行为续行;
(4)标识符最好能简洁明了,不造成歧义。
第二节:常用控制语句及举例
1、判断语句 If … Then … Else Endif语句
If a>60 Then
k=1
Elself a>70 Then
k=2
Elself a>80 Then
k=3
Elself a>90 Then
k=4
Endif
2、Select Case语句
Select Case Time
Case 1 To 11
msg = "上午"
Case 12
msg = "中午"
Case 13 To 16
msg = "下午"
Case 17 To 20
msg = "晚上"
Case 23, 24
msg = "午夜"
Case Else
msg = "不明"
End Select
MsgBox "现在是:" & msg
3、循环语句
(1)For … Next循环
For cnt = 1 To 10 Step 1 ' 建立 10 次循环
For Chars = 0 To 9 ' 建立 10 次循环
MyString = MyString & Chars ' 将数字添加到字符串中
Next Chars ' Increment counter
MyString = MyString & " " ' 添加一个空格
Next cnt
[Exit For]
(2)For Each…Next语句
主要功能是对一个数组或集合对象进行,让所有元素重复执行一次语句
Sub 大于90的单元格涂红色()
Dim rng As Range
For Each rng In Sheet5.Range("b3:b12")
Select Case rng
Case Is >= 90
rng.Interior.ColorIndex = 3
End Select
Next
End Sub
其他常用循环
1) Do While循环
---------------------------------------------------------
Do [While 条件]
[指令]
[Exit Do]
[指令]
Loop
---------------------------------------------------------
Do
[指令]
[Exit Do]
[指令]
Loop [While 条件]
---------------------------------------------------------
2) Do Until循环
---------------------------------------------------------
Do [Until 条件]
[指令]
[Exit Do]
[指令]
Loop
---------------------------------------------------------
Do
[指令]
[Exit Do]
[指令]
Loop [Until 条件]
---------------------------------------------------------
3) While … Wend循环
While <条件>
[指令]
Wend