Excel VBA变量和常量
时间:2023-02-18 15:48:34
在编写程序时,少不了要使用变量和常量,它们都是程序中很重要的元素,是组织程序的基础。
一个示例
下面是一个简单的VBA程序,用来计算半径为5的圆的面积。
Sub 示例2()
Const PI = 3.1415926
Dim r As Integer
Dim area As Double
r = 5
‘ 计算半径为5的圆的面积
area = PI * r * r
End Sub
其中,r和area就是变量,PI就是常量。
什么是变量
变量就是在计算机中根据其数据类型预先占用一个位置,在这个位置里可以放置相应的数据。换句话说,我们要在计算机中保存数据,就要有相应的空间,变量就是用来指明这些空间的。
我们可以将值存储在变量中,供程序使用,如下图1所示。
图1
注意,如果将另一个值放入已经存在值的变量中,那么原值就被新值所取代。
命名变量
在程序中,我们经常会使用多个变量。这样,就需要给变量起不同的名字,以区分这些变量,例如图1中的r就是一个变量的名字。
VBA规定了变量名的命名规则:
可以使用字母、数字和下划线,但必须以字母开头。
变量名最长不可以超过255个字符。
变量名不区分大小写。
变量名不能与VBA保留字同名,不能与VBA中的函数、语句和方法同名。
变量名中不能使用空格和句点。
这就说明,我们在命名变量名称时:
不能以数字或下划线开头。
不能在变量名中使用特殊类型的声明字符(#、$、%、&或!)。
不能在变量名中使用运算符(+、-、*、/、
下列字符也不能使用(?、=、”、;、`、@、^)。
在同一作用域内不能有相同的名字。
变量的数据类型
在前一篇中,我们过程序中的各种数据都有自已的数据类型(例如整型、字符串型、布尔型等),变量也有自已的数据类型。
在定义变量时,通常要说明变量要存储什么数据类型的值。也就是说,创建变量后,也决定了存储在该变量中的值的数据类型。
例如,上面示例中的:
Dim r As Integer
Dim area As Double
定义变量时,指定变量r存放Integer型的数据,而变量area存放Double型的数据。
说明:与很多编程语言不同,VBA比较特殊,它在定义变量时,并不一定需要声明存储在变量中的数据类型。VBA可以自动处理运用数据时涉及到的细节,这对程序编写来说的确很省事,但你会发现,这样的程序执行的速度会更慢,使用内存的效率也不高。如果我们在定义变量时严格指明该变量的数据类型,那么不仅能有效利用计算机空间,并且该变量在进行数据类型转换时,计算机会自动告诉你发生的问题。
声明变量
如上所述,示例中已经给出了声明变量的方法,即使用Dim语句来对变量进行声明(或定义)。声明变量的一般语法结构是:
图2
当然,还可以使用Public来声明一个公有变量。正如前面所说的,你可以省略掉As及之后的数据类型来声明变量,让VBA自已处理数据,但这并不会带来多少好处。
确切地说,当省略数据类型时,VBA会使用默认的数据类型Variant,在程序处理过程中,会根据所处理内容来改变变量的数据类型。
说明:VBA中“古老的”声明变量的方法
VBA也延续了BASIC定义变量数据类型的方法,即将一个字符加到变量名称后面来指定变量的数据类型,例如:
Dim r%
将变量r声明为整型。下表列出了有类型声明字符的VBA数据类型。
数据类型类型声明字符
Integer(整型)%
Long(长整型)&
Single(单精度浮点型)!
Double(双精度浮点型)#
Currency(货币型)@
String(字符串型)$
常量
在程序中,如果我们处理的某些数据从不会改变,那么我们可以将它们定义成常量,即决不会发生改变的数值或字符串。
声明常量
VBA规定使用Const语句来声明常量。例如本文开头示例中的:
Const PI = 3.1415926
定义了一个名为PI的常量,它的值是3.1415926,在程序中使用该常量,其值不会发生变化。我们没有指明PI的数据类型,VBA会根据它的值确定数据类型,PI的数据类型是Double型。当然,我们可以在声明的同时明确指定常量的数据类型:
Const PI As Double = 3.1415926
定义了常量之后,如果要在程序中修改它的值,例如给常量赋新值,将会产生错误。和变量一样,也可以在前面添加Public来声明一个公有常量。
说明:声明常量的好处
在程序中,将多处使用的值声明为常量,至少有两大好处:
如果要修改值,只需手动修改常量定义即可,不必到多个地方修改同一值,不仅繁锁,也容易遗漏。
给常量起一个好的名字,能够清楚地表明其意图,让代码更具可读性。
除了我们定义的常量外,VBA还提供了很多预定义的常量,这些常量不用明确声明就可使用。VBA预定义的常量通常以“xl”或“vb”开头。