声明语法
Enum 枚举类型名
枚举变量1
枚举变量2
枚举变量3
...
End Enum
枚举变量的默认值:第一个0,后面的自增1。如需修改起始值,给起始变量赋值即可。
声明实例——声明一个Week的枚举类型
Public Enum week
Sun
Mon
Tue
Wed
Thu
Fri
Sat
End Enum
对于上面的实例,若将起始值改为1,只需修改为
Sun=1
声明语法
Type 数据类型名
元素1名 As 数据类型
元素2名 As 数据类型
元素3名 As 数据类型
...
End Type
其中的“数据类型”既可以是基本数据类型,也可以是已定义的自定义数据类型。
声明实例——声明一个myType类型
Type myType
myName As String
myID As Number
myBir As Date
End Type
可以参考C语言的变量名要求。注意:中文版的Excel支持中文作为变量名
声明语法
Dim 变量名 [As 数据类型]
声明实例
/*声明一个String类型的变量myString*/
Dim myString As String
/*声明多个Integer变量*/
Dim intA As Integer,intB As Integer,intC As Integer
/*注意比较上一条*/
Dim intA,intB,intC As Integer
/*上面声明的结果是:只有intC是Integer型,intA,intB将是Variant型*/
VBA其实可以像MATLAB一样,直接使用变量从而创建变量(即所谓隐式声明),其类型也将是Variant。虽然看似方便,但有两个不可回避的缺点
因此VBA提供了强制声明的选项,也建议大家使用。具体操作有两种:
静态变量的生存期是直到该Excel工作簿被关闭后才结束的。
声明语法
Static 变量名 As 变量类型
声明实例
Option Explicit
Sub staticvar()
Static num1 As Integer
num1 = num1 + 5
Debug.Print num1
End Sub
Sub dynamicvar()
Dim num2 As Integer
num2 = num2 + 5
Debug.Print num2
End Sub
分别多次执行第一个和第二个过程,结果如下图:
可以看到静态变量和动态变量在执行的过程中值的变化情况的不同。
声明语法
[Public|Private] Const 常量名1 [As 数据类型1]=常数表达式1,常量名2 [As 数据类型2]=常数表达式2,常量名3 [As 数据类型3]=常数表达式3...
默认的是Private
即特别定义了一些符号常数,能够比使用常数有着更好的效果。比如色彩常数中vbRed代表红色,这显然比0xFF0000要好用的多。
查看Excel VBA的系统常量,可以在“视图”→“对象浏览器”中搜索查看。如下图所示
加(+),减(-),乘(*),除(/),整数除法(\,结果只保留整数部分),幂(^),模(Mod)
比较运算符的计算结果只有True和False
小于(<),小于等于(<=),大于(>),大于等于(>=),不等于(<>,注意不是!=),等于(=,注意不是==)
数学表达式的比较遵循数学运算规律
字符串之间的大小比较参考C语言的strcmp
Like:类似于SQL语句中的like,进行字符串的模糊匹配
Is:用于对象引用之间的比较
逻辑运算的结果也只有True和False
“&”用来强制将两个表达式作为字符串连接起来
“+”只能在其两端为字符串是可以进行连接操作,否则会提示“类型不匹配”
先算数,再比较,最后逻辑。
Dim 数组名 (上界) As 数据类型
/*例如*/
Dim myStrings (15) As String
这里声明的数组myStrings,数组中的元素是从myStrings(0)开始,到 myStrings(15)结束,共16个元素。请与C语言中数组的相关内容区分!!
Dim 数组名 (下界 To 上界) As 数据类型
/*例如*/
Dim myArray (-2To8) As String
这里声明的数组myArray,数组中的元素是:myArray(-2),…,myArray(0),…,
myArray(8),共11个元素。
/*声明语法1*/
Dim 数组名(第一维上界,第二维上界) As 数据类型
/*声明语法2*/
Dim 数组名 (第一维下界 To 第一维上界,第二维下界 To 第二维上界) As 数据类型
与C语言类似,Excel VBA静态数组的下标也只能是常量,而不能是表达式或者变量。
动态数组的声明过程:
Dim myArray () As Integer
ReDim [Preserve] 数组名 (下标) [As 数据类型]
其中,保留字Preserve的作用是:如果使用,则在扩充数组时保留原有数据中的数据。
注意:对于多维数组,由于Excel VBA的数组也是列分割,所以只能ReDim最后一维。