用ChatGPT与VBA一键搞定Excel
上QQ阅读APP看书,第一时间看更新

3.1 常量与变量

3.1.1 常量

常量用于存储固定信息,常量值具有只读特性,也就是在程序运行期间其值不能发生改变。在代码中使用常量的好处如下。

增加程序的可读性:例如,在如下设置活动单元格字体为绿色的代码中,使用了系统常量vbGreen。

此代码等价于如下代码。

显而易见,使用系统常量vbGreen比直接使用数值65280更具可读性。

代码的维护升级更加容易:除系统常量外,在VBA中也可以使用Const语句声明自定义常量。如下代码将声明字符型常量ClubName。

假设在VBA程序编写完成后,需要将所有的“ExcelHome”简写为“EH”,那么开发人员只需要修改上面这行代码,VBA应用程序代码中所有的ClubName将引用新的常量值。

3.1.2 变量

变量用于保存程序运行过程中需要临时保存的值或对象,在程序运行过程中其值可以被改变。事实上, VBA代码无须声明变量就可以直接使用,但这将给后期调试和维护带来很多麻烦,而且未被声明的变量为变体变量(Variant变量),将占用较大的内存空间,进而代码的运行效率也会比较差。因此在使用变量之前声明变量并指定数据类型是一个良好的编程习惯,同时也可以提高程序的运行效率。

VBA中使用Dim语句声明变量,如下代码声明变量iRow为整数型变量。

利用类型声明字符,以上代码可以简化如下。

在VBA中并不是所有的数据类型都有对应的类型声明字符,在代码中可以使用的类型声明字符如表3-1所示。有关数据类型的详细介绍请参阅3.1.3小节。

表3-1 类型声明字符

变量赋值是代码中经常使用的功能。变量赋值使用等号,等号右侧可以是数值、字符串和日期等,也可以是表达式。如下代码将为变量iSum赋值。

注意

如下的Dim语句在一行代码中同时声明了多个变量,其中的变量iRow实际上被声明为Variant变量而不是Integer变量。

如果希望将两个变量均声明为Integer变量,应该使用如下代码。

3.1.3 数据类型

数据类型决定变量或常量可用来保存何种数据。VBA中的数据类型包括 Byte、Boolean、Integer、Long、Currency、Decimal、Single、Double、Date、String、Object、Variant (默认)和用户自定义等。不同数据类型所需要的存储空间并不相同,取值范围也不相同,如表3-2所示。

表3-2 VBA数据类型的存储空间及其取值范围

续表

注意

VBA 7.0中引入的LongPtr并不是一个真实的数据类型,因为它在32位操作系统环境中被转换为Long类型,而在64位操作系统环境中被转换为LongLong类型。