VBA 变量
变量用于存储数据。
变量的使用主要包括三个步骤:声明、写、读。
1)声明:声明变量。为变量分配相应内存空间。
2)写:变量赋值。即往变量写数据。
3)读:读取变量。在表达式、函数参数中使用变量,即会从变量读取已经写入的数据。
1 变量声明
Dim 变量名 As 数据类型
Dim 完整英文Dimension,意为分配内存空间。
变量名 由我们自定义。
数据类型 主要使用系统定义的数据类型,常见的字符串String、整型Integer、字节型Byte、长整型Long、单精度小数Single、双精度小数Double、布尔型Boolean、日期型Date、对象型Object、变体型Variant、以及自定义类型。
示例。声明整型变量i,布尔类型变量b
Dim i As Integer '声明整型变量i
Dim d As Double '声明小数变量d
注:上述代码写在过程var1中,完整代码如下:
Sub var1()
Dim i As Integer '声明整型变量i
Dim d As Double '声明小数变量d
End Sub
变量名的命名规则
变量名称规则符合标识符规则。
1)名称可包含:由字母(含中文)、数字、下划线
2)名称首字母:由字母(含中文)、下划线
3)名称中不能包含:空格、句号(.)、感叹号(!)、@、#、$、%、等特殊符号
4)名称中不能与关键字相同。
变量名的命名规范
见名思义。根据过程的作用命名,保证看到过程的名称就知道它的作用。
规则与规范的差别:不满足规则程序会报错,不满足规范程序不会报错,但大家都通常不这么做。
2 变量赋值(写数据)
简单数据类型的变量赋值,语法如下
变量名=值
或
Let 变量名=值
值的类型需要变量名的类型一致。
不建议使用Let,麻烦。
示例。为变量i赋值为2023,变量d赋值为2023.61。
i = 2023 '变量赋值,即往变量写数据
d = 2023.61 '变量赋值,写数据
常见错误
错误1:赋值类型不匹配
i = "hello" '整型变量赋值字符串,错误写法。
如果赋值类型不匹配则会报错“类型不匹配”。
3 读取变量
在函数中使用变量,即会读取变量的值。
Debug.Print i '打印变量,即读取变量数据
Debug.Print d '打印变量,读数据
完整代码如下:
Sub var1()
Dim i As Integer '声明整型变量i
Dim d As Double '声明小数变量d
i = 2023 '变量赋值,即往变量写数据
d = 2023.61 '变量赋值,写数据
Debug.Print i '打印变量,即读取变量数据
Debug.Print d '打印变量,读数据
End Sub
运行结果如下:
在表达式中使用变量的值,也会读取变量的值。
Dim i2 As Integer
i2 = i + 1
Debug.Print i2
i2=i+1表示读取变量i的值,计算i+1的结果,往变量i2中写数据。
针对i是读数据,针对i2是写数据。
4 同类型多个变量的声明
同类型多个变量可以在一行中进行声明。
语法
Dim 变量1, 变量2, … 变量n As 数据类型
示例
Sub var2()
Dim i1, i2, i3 As Integer
i1 = 100
i2 = 200
i3 = 300
Debug.Print i1, i2, i3
End Sub
注:Debug.Print 后多个参数以逗号隔开,则输出每项后会跟制表符。
5 声明变量不声明数据类型
因为不规范,不推荐使用。
声明变量不声明数据类型。
语法
Dim 变量名
等价完整代码
Dim 变量名 As Variant
示例
Sub var3()
Dim i1
i1 = 100
Debug.Print i1
End Sub
<TODO链接>查看Variant详情
6 变量不声明直接使用
这种用法并不规范,不推荐使用。
但是,学习过程中,有时候用起来真的方便:)
Sub var4()
i1 = 200
Debug.Print i1
End Sub
7 强制变量显示声明
VBA提供功能保证变量必须要先声明再使用,即强制变量显示声明。
Option Explicit
Option 意思为选项。
Explicit 意思为显式。
这句代码通常放在文件的最开头。
再执行前面的var4过程,会提示报错:变量未定义。
8 更多
<TODO链接>查看 变量作用域
<TODO链接>查看 static变量