购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 常量与变量

2.2.1 常量

在程序运行过程中其值保持不变的量我们称之为常量。VBA中的常量可以分为直接常量和符号常量两大类。

直接常量也叫字面常量、值常量,简单地说,就是在代码窗口中直接书写的常量。对应不同的数据类型,我们有不同类型的直接常量,例如3是整型常量,7.1为单精度常量,“南京”为字符型常量,True为布尔型常量,#06/26/2016#为日期型常量。

符号常量又可以分为两类,一类是用户自定义的符号常量,另一类是系统自带的符号常量。

1.用户自定义的符号常量

在代码中需要多次使用同一个常量时候,我们可以把它定义为符号常量。代表常量的符号称为常量名。符号常量在使用之前需要先定义,在程序运行过程中不能被重新赋值。定义符号常量的形式如下:

[Public|Private]Const常量名[As数据类型]=表达式

说明:

Public|Private:说明常量的作用域,若省略则为Private;

Const:定义符号常量的关键字;

常量名:符号常量的名字,在之后的程序中可以使用常量名来引用表达式的值;

As数据类型:符号常量的数据类型,若省略,则由表达式的类型决定;

表达式:可以是直接常量以及由运算符组成的常量表达式,不能使用变量或函数。

例如:const p=3.141 592 653 589 79

2.系统自带的符号常量

VBA提供一系列的内置符号常量,我们称之为系统常量,它们一般以vb、xl开头。例如:内置常量vbokcancel用来在msgbox函数中生成信息框,包括“确定”按钮和“取消”按钮。我们在对象浏览器中可以通过输入vb、xl获得以它们开头的系统常量的列表,或者输入具体的常量名称查询该常量对应的值。图2-2显示的是在对象浏览器中输入“vb”后查询到的系统常量的效果图。

2.2.2 变量

变量指的是在程序运行过程中其值可以变化的量。定义一个变量需要确定变量的名称和数据类型。其中变量的名称用于引用一个变量,而数据类型用于决定该变量的存储方式。

变量的名称一般由字母、数字和下划线组成,必须以字母开头,在中文VBA中还允许有汉字;长度不能超过255个字符,控件、窗体、类或模块的名字不能超过40个字符;不能使用系统保留字作为变量名。系统保留字一般指的是在VBA中有特殊意义的单词或单词的缩写,比如Dim,Integer,Sub等。VBA的变量名不区分大小写。

图2-2 用对象浏览器查看系统常量

在使用变量之前,我们需要先对变量加以声明,变量声明有两种类型:显式声明和隐式声明。

1.显式声明

显示声明格式如下:

Dim|Public|Private|Static变量名[As数据类型]

其中,Dim用于定义局部和私有变量,Public用于定义公有变量,Private用于定义私有变量,Static用于定义局部的静态变量。“As数据类型”可以省略,省略的时候该变量的数据类型为变体型。

2.隐式声明

隐式声明是代码中不给出声明语句,系统对变量不说明直接使用,此时系统自动将变量声明为变体型,此时其值为empty。当被赋值后,赋值数据的数据类型取代变体型。隐式类型说明不推荐使用。采用隐式声明方式,一旦变量名输入错误,系统不会有任何提示,当程序较长时这种错误很难被发现。

默认情况下,VBA的隐式声明方式是开启的,如需关闭,可以在代码窗口的第一行添加语句Option Explicit。或者我们可以在“工具”菜单下选择“选项”命令,打开如图2-3所示的“选项”对话框,在“选项”对话框中的“编辑器”选项卡中将“要求变量声明”复选框选中。该复选框被选中后,在每个打开的代码窗口的首行将会出现语句“Option Explicit”。如果仍有变量未定义而使用,系统将给出“变量未定义”的错误提示,如图2-4所示。

图2-3 “选项”对话框

图2-4 “变量未定义”错误提示框

在定义一个变量之后,我们就在内存中给该变量分配相应的存储空间,并设置初值。数值型变量的初值为0,布尔型变量的初值为false,字符型变量的初值为空字符串,而变体型变量的初值为空(empty)。

2.2.3 变量作用域

定义一个变量后,并不是在任何地方都可以引用这个变量,每个变量都有它的有效范围,我们称之为变量作用域。VBA中变量按作用域可以分为三类:

1.局部变量

在过程内部使用dim或者static语句定义的变量为局部变量,作用范围在定义它的过程内。在不同的过程中局部变量同名是可以的,它们互不影响。

2.私有变量

在模块的起始部分使用dim或者private语句定义的变量称为私有变量,它对本模块中的所有过程均有效,对其他模块无效。使用私有变量,可以将变量值从一个过程传递到本模块的另一个过程。

3.公有变量

在模块的起始部分使用public语句定义的变量称为公有变量,它对所有模块中的所有过程均有效。

表2-2 变量的作用域

我们在过程内部用static语句定义的局部变量叫静态变量,它的值在调用它的过程结束后变量值仍然保留,这点与公有变量类似。区别在于,静态变量只在定义它的过程中有效,而公有变量对所有过程均有效。 80J6lHJwAYHJTkOwDX2kh0hc7g2DCQonrgduWwfc9zqeiNDXwsSwbp83xNuw9wMK

点击中间区域
呼出菜单
上一章
目录
下一章
×