关于VBA中的变量声明

摘 要: 基于Microsoft Office系列办公软件中内嵌的VBA语言,本文作者针对其语法规则中的变量声明规则进行了论述,重点介绍了显式声明和隐式声明的用法,并对两种声明方式进行了对比,提出了程序开发中应注意的问题。

关键词: VBA 变量声明 显式声明 隐式声明

VBA(Visual Basic for Applications)是应用程序开发语言Visual Basic的子集,内嵌在微软公司常用办公软件Microsoft Office中。做为新一代标准宏语言,VBA提供了面向对象的程序设计方法和相当完整的程序设计语言。

VBA易于学习掌握,可以使用宏记录器记录用户的各种操作并转换为VBA程序代码。这样用户可以很容易地将日常工作转换为VBA程序,使工作自动化。因此,对于在工作中需要经常使用Office套装软件的用户,学用VBA有助于使工作自动化,提高工作效率。另外,VBA可以直接应用Office套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。

VBA可以借助于宏记录器完成开发,实现预定的自动功能,所以许多初次接触VBA的人员往往对VBA本身的语法规则不那么重视。当需要完成一些较为复杂的功能或对录制完成的代码进行维护时候就会产生困难。所以,使用VBA必须要对VBA的语法、对象、事件、代码规则等基本知识有所了解。本文选取VBA语法规则中的最基础部分――变量声明进行简单地论述。

1.VBA中变量的概念及命名规则

变量是指在程序的运行过程中随时可以发生变化的量。

变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期,以及属性。在使用中,变量可以保存程序运行时用户输入的数据、特定运算的结果,以及要在窗体上显示的一段数据,等等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。

在VBA中,每一变量都有变量名。变量名必须以字母字符开头,不能是VBA中的保留字(关键字),在同一范围内必须是唯一的,不能超过 255 个字符,而且中间不能包含句点或类型声明字符。

在VBA中使用变量的时候还需要注意一些问题。

1.1变量名在VBA中是不区分大小写的(如ABC、abc、Abc等都是一样的)。

1.2定义和使用变量时,通常把变量名定义为容易使用阅读和能够描述所含数据用处的名称,而不要使用一些难懂的缩写如A或B2等。

1.3根据需要混合使用大小写字母和数字。

1.4通常每个变量名以两个或三个字符缩写开始,这些字符缩写对应于变量要存储数据的数据类型。例如,使用strName来说明Name变量保存字符串型数据。

2.VBA中变量声明的概念

变量在使用前,必须在代码中进行声明,即创建该变量。

变量声明的作用是告诉编译器在程序中使用了哪些变量,这些变量的数据类型和长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。

3.VBA中变量声明的方式

VBA中声明变量有两种方式:显式声明、隐式声明。

显式声明:用声明语句创建变量。下例就是在程序中声明一个整型变量intIndex:

dim intIndex as integer。

隐式声明:变量可以不经声明直接使用,此时VBA给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。

4.VBA中显式声明变量

显式声明变量是在使用该变量之前,调用声明语句对该变量进行声明。显式声明的语法为:

声明语句 变量名[,变量名2,变量名3 ……][as 数据类型]

4.1 声明语句

VBA中的声明语句包括Dim、Static、Public、Private。

4.1.1 使用 Public 语句可以声明公共模块级别变量(公有变量)

Public strName As String.

公有变量可用于工程中的任何过程。如果公有变量是声明于标准模块或是类模块中,则它也可以被任何引用到此公有变量所属工程的工程中使用。

4.1.2 使用 Private 语句可以声明私有的模块级别变量(私有变量)

Private strName As String.

私有变量只可使用于同一模块中的过程。

4.1.3 使用Dim语句同样可以声明私有的模块级别变量(私有变量)

Dim strName As String.

在模块级别中使用 Dim 语句与使用 Private 语句是相同的,不过使用 Private 语句可以更容易地读取和解释代码。

4.1.4 使用 Static 语句所声明的变量在调用时仍保留它原先的值。

Static strName As String.

4.2 变量的数据类型

在VBA中,变量可以声明成下列数据类型中的一种:Boolean、Byte、Integer、Long、Currency、Single、Double、Date、String(变长字符串)、String * length(定长字符串,*代表字符串长度)、Object 或 Variant。如果未指定数据类型,则变量被赋予缺省的Variant 数据类型。另外也可以使用 Type 语句来创建用户定义类型。

4.3 变量的作用范围

在显式声明中,根据声明语句的不同,变量具有不同的作用范围。在过程中定义的变量对于这个过程是专用的,它的作用范围就是该过程。过程级变量只有在声明它们的过程中才能被识别,在该过程之外不能访问,所以在一个过程中不可以使用Public语句声明一个公有变量;在模块中定义的变量则有私有和公有两种,使用Dim和Private语句声明的变量的作用范围是该模块,该模块中的所有过程都可以调用这些变量,而使用Public语句声明的变量其作用范围是工程内所有模块,当前模块所属过程内的所有模块都可以调用这些变量。

4.4 同时声明多个变量

在显式声明中,可以在一个语句中声明几个变量。而为了指定数据类型,必须将每一个变量的数据类型包含进来。在下面的语句中,变量 intX、intY与 intZ 被声明为Integer 类型。

Dim intX As Integer,intY As Integer,intZ As Integer.

在下面的语句中,变量 intX 与 intY 被声明为 Variant 类型 ;只有 intZ 被声明为 Integer 类型。

Dim intX,intY,intZ As Integer.

在声明语句中,不一定要提供变量的数据类型。若省略了数据类型,则会将变量设成 Variant 类型。

5.VBA中隐式声明变量

VBA中,变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这称为隐式声明。变量的隐式声明方法有三种。

5.1 在使用之前不声明变量,程序运行中遇到未作声明的变量名时,它就临时生成新的变量,分配内存地址。新变量的类型为Variant类型的变量,可以放置所有其他类型的数据。Visual Basic根据变量被赋予的数值来调整变量类型。例如:

VarTemp1=“中华人民共和国” ’变量VarTemp1在赋值时自动成为字符串型变量

VarTemp2=300 ’变量VarTemp2在赋值时自动成为整数型

5.2 可以省略声明语句而用变量类型声明字符生成确定类型的变量。在程序执行时,生成有确定类型的变量。可以用TypeName( )函数返回变量的类型以验证变量到底是何种数据类型。变量类型声明字符包括:

“%”表示integer类型;

“!”表示single类型;

“&”表示 Long类型;

“#”表示 Double类型;

“$”表示 String类型;

“@”表示Currency类型。

5.3 第三种变量隐式定义方法是,用DefXXX语句声明变量,其中“XXX”部分是VBA的数据类型名称保留字。这种方式定义的变量只对它所在的模块起作用。示例:

DefInt A-K ’将名称以 A 至 K 开头变量的缺省数据类型设为 Integer 类型。

DefStr L-Z ’将名称以 L 至 Z 开头变量的缺省数据类型设为 String 类型。

6.显式声明和隐式声明方法的对比

显式声明使用中需要对变量的作用范围、数据类型等进行明确定义,大大提高了程序的易读性;隐式声明使用方便,代码量少,但是开发过程中如果产生命名冲突和拼写错误等,由于程序运行过程中不能检查出错误,其执行结果就不能达到预期的效果,而且这种错误不能利用编译系统检查出来,较难查找,特别是在大型复杂的程序中更是如此。因此,要养成在使用一个变量之前先声明它(即显式声明)的良好的编程习惯。

在VBA中,如果不想使 Visual Basic 生成隐含声明,可以将 Option Explicit 语句放置于模块中所有的过程之前。这一语句在模块级别中使用,强制显式声明模块中的所有变量。如果模块包含 Option Explicit 语句,则当 Visual Basic 遇到一个先前未定界的变量或拼写错误,它会发生编译时间的错误。

本文主要介绍VBA中的变量声明方法。首先对涉及的变量、变量声明等概念进行了论述。在此基础上本文详细叙述了声明变量的两种方式,以及相关的变量数据类型、变量作用范围进行了阐述,最后对两种声明方式的特点进行了对比。通过研究我们可以发现,在实际的VBA开发中,变量声明可以说是一切程序运行的基础,开发人员选择合适的声明方式,养成良好的使用习惯,对程序开发有着极为重要的意义。

参考文献:

[1]Microsoft Visual Basic6.0循序渐进教程专业版[M].

[2]刘曜.VBA变量、对话框及自定义函数[J].中国会计电算化,2002,(12).

[3]喻革武.EXCEL中VBA编程语言的命令介绍及编程[J].电脑学习,2001,(04).

[4]杨强强,顾雅娟.VBA在EXCEL中的应用[J].船舶,1999,(03).

(0)

相关推荐