《精选VBA语法基础.docx》由会员分享,可在线阅读,更多相关《精选VBA语法基础.docx(14页珍藏版)》请在第一文库网上搜索。
1、数据类型数据类型是指如何将数据存储在内存中。(l)Boolean表示逻辑数据,可以是True或False中的任一个值。占用2字节的存储空间,取值范围为True 或 False,缺省值为 False。(2)Byte只能表示正数。占用1字节的存储空间,取值范围为0255,缺省值为0。(3)Currency一种保存货币值数据的特殊数字格式。占用8字节的存储空间,取值范围为-922337203685477.5808-922337203685477.5807,缺省值为 0。(4) Date一种用于表示日期或时间的专用格式。占用8字节的存储空间,取值范围为100年1月1日一9999年12月31日,缺省值为
2、00: 00: 00。(有关在VBA中使用日期和时间的详细介绍请见后面的一系列文章。)(5)Decimal(Decimal数据类型是在Excel 2000中引入的,在以前的版本中不能使用这种数据类型。该数据类型非常特殊,因为不能实际声明它,它是Variant的子类型,必须使用CDec函数将一个变量转换为Decimal数据类型)(6)Double存储双精度浮点数,占用8字节的存储空间,取值范围为负值:-1.79769313486232E3084,94065645841247E-324, 正 值:1.79769313486232E3084.94065645841247E-324,缺省值为 0。(7
3、)Integer表示从-32768-32767之间的整数,其中一位表示符号,占用2字节的存储空间,缺省值为0o(8)Long表示存储为4个字节空间的带符号的数,其中一位表示符号,取值范围为-2147483648-2147483647,缺省值为 0。(9)0bject包含对某个对象的引用(地址),占用4字节的存储空间,可对任何对象引用,缺省值为Nothing o(10)Single表示分数、带小数位或指数的数值等单精度数,占用4字节的存储空间,取值范围为负值:-3.402823E38-1.401298E-45,正值:1.401298E-45-3.402823E38,缺省值为 0。(ll)Stri
4、ng可声明定长和变长的String数据类型。其中,定长的String数据类型占用的存储空间为字符串的长度,取值范围为165400个字符,缺省值等于该字符串长度的空格数。变长的String数据类型能动态地加长或缩短以存储要求的字符串数,占用的存储空间为10字节加上字符串的长度,取值范围为020亿个字符,缺省值为零长字符串()。(有关String数据类型及处理和操作字符串数据的VBA内置函数的详细介绍请见后面的一系列文章。)(12)VariantVariant字符串类型的存储空间为22字节加上字符串的长度,其取值范围与变长字符串数据类型的取值范围一样,缺省值为Empty。Variant数字型的存储
5、空间为16字节,其取值范围与Double数据类型的取值范围一样,缺省值为Empty。(有关Variant数据类型的进一步介绍见后面的一系列文章。)(13)用户自定义类型允许用户创立一种特殊的数据类型,这种数据类型由VBA的内部数据类型、数组、对象或其他用户定义类型组成,其存储空间为各个组成局部的存储空间的总和,取值范围与各个组成局部的数据类型的取值范围一致,缺省值为各个组成局部的缺省值。(有关用户自定义类型的进一步介绍请见后面的一系列文章。)各数据类型之间也可以相互转换。(有关数据类型转换的详细介绍请见后面的一系列文章)(有关数字数据类型(Byte、Integer、Long、Single、Do
6、uble、Currency、Decimak Variant)及相应的VBA内置函数的详细介绍请见后面的一系列文章。)常量(数)常量即在程序执行过程中不发生改变的值或字符串。使用Const语句声明常量。如:Const Rate=0.25Const NumMonths As Integer=12Public Const myName As Stringi BabyPig而最后一个语句声明了一个公共常量,应放在模块中所有过程之前声明。VBA自身包含有许多内置常数,它们的值都是VBA预先定义好的,使用内部常数时无需定义这些常数的值。几个特殊的常数由于有好几种不一样的无效值常数,VBA语言提供了好几种方
7、法,以检验某个变量是否为empty或null值,或者设置某个变量为empty或null值。 vbNull和VarType函数一起使用,用于确定变量是否包含nulL(2) vbNullChar赋值或检测null字符,null字符的值为Chr(O),即vbNullChar常数相当于将变量赋值为Chr(O),可用于检测变量,确定它的值是否是一个null字符。 vbNullString赋值或检测零长(空)字符串。(4) Null关键字将null值赋给variant变量后,可以通过调用IsNull函数来检测变量是否是Null值。 vbEmpty检测某个variant变量是否初始化。(6) Nothing
8、 关键字只能和对象变量一起使用,以确定变量是否具有有效的对象引用,此外,Nothing关键字还可以用于销毁当前的对象引用。(关于常量的介绍还可见?ExcelVBA编程系列之数据类型(1):常量?)变量变量的主要作用是存取数据、提供了数据存放信息的容器。根据变量的作用域不同,可分为局部变量、全局变量,见后面的变量(常量)作用域和生存期介绍。变量命名要注意以下几点:1、有效性。变量以字母开头,中间可以出现数字和一些标点符号,除下划线(_)作为连字符外,变量名称不能有空格、加号(+)、减号()、逗号(,)、句点(.)等符号。2、VBA不区分大小写。但在变量命名时,最好表达该变量的作用3、不能使用VB
9、A中的关键字作为变量。4、变量名称中不能有特殊类型的声明字符(#、$、&或!)。5、变量名称最多可以包含254个字符。(有关VBA的命名规那么的详细介绍请见后面的一系列文章)声明变量其语法为:Dim变量名As数据类型或:Private v变量名,As v数据类型或:Public v变量名,As v数据类型可以在一行中声明多个变量,每个变量之间用逗号分隔开。还有一种声明变量的方法是,将一个字符加在变量名称后面,从而声明变量的数据类型。如Dim MyVar%表示将变量MyVa声明为整型。一些类型声明符为:数据类型 类型声明字符Integer %Long&Single!Double#Currency
10、 String$在模块前参加Option Explicit语句,将强制声明所使用的所有变量。对象变量在使用对象模型的属性、方法和事件之前,必须创立一个对包含所需属性、方法和事件的类的引用。可以先声明一个局部对象变量以存储该对象引用,然后把对象引用赋给该局部变量。声明对象变量的方法和声明其他类型的变量根本上一样。有三种声明对象变量的方法:(1) Dim myObject As库名.类名此方法指向类的类型库,但没有给该变量赋予任何类的实例。此时,变量myObject被赋值为Nothingo假设要用这种方式引用类,就必须利用引用对话框向工程添加一个对类模块的引用。假设要将类的实例引用赋予该变量,必须
11、在使用该变量之前用Set语句赋值。如:Set myObject=v库名.类名(2) Dim myObject As NewV库名.类名此方法将类的新实例引用赋给Object变量。同样,要用这种方式引用类,必须先利用、引用对话框向工程添加一个对类模块的引用。 Dim myObject As Object此方法将myObject变量声明为一般的Object数据类型,这在不能预先知道要创立的对象的数据类型时十分有用。此时,Object变量被赋值为Nothing。假设要将对象引用赋值给该变量,必须使用CreateObject函数或GetObject函数。可以用Private或Public语句替换Dim
12、语句,且对象变量的作用域规那么和其他类型的变量一样。声明对象变量可以显著地简化代码且加快代码的执行速度。有关对象模型的根底知识见ExcelVBA编程系列之对象模型(2):初步理解和使用Excel对象模集合(Collection)对象集合对象是其他对象的一个容器。一般有四个方法:(1) Add方法添加一项到集合中。除了可以指定数据外还可以指定键值,通过键值可以访问集合中的成员。(2) Count 方法返回集合中的项的个数。(3) Item 方法通过集合中的索引(即集合中项的序号)或键(假设该项添加到集合时指定了)检索集合中的成员。(4) Remove 方法通过集合中的索引或键删除集合中的成员。可
13、以使用With.End With构造和For Each . Next构造很方便地处理对象和集合,其介绍可参见ExcelVBA编程系列之对象模型(2):初步理解和使用Excel对象模型一文。运算符运算符是用于完成操作的一系列符号,包括算术运算符、比较运算符、逻辑运算符、字符串运算符等。可用于连接一个或多个语言元素,或者完成一些运算以形成一个表达式。表达式表达式就是变量、常量、运算符的集合,可分为算术表达式、字符串表达式、赋值表达式、布尔表达式等详细的内容请见VBA编程系列:运算符和表达式。数组数组是一组拥有一样名称同类元素。定义数组后,即创立了数组。数组中单个的数据项称为数组元素,用于访问数组元
14、素的编号称为数组索引号,最小索引号和最大索引号称为边界。在VBA中,根据数组元素是否变化,分为固定大小的数组和动态数组,根据数组的维数乂可分为一维数组和多维数组。1、创立数组用Dim语句来定义固定大小的数组,即声明一个数组。如Dim myArray(9) As Integer上面的代码创立一个名为myArray含有10个数组元素的一维数组。注意,所有VBA数组的下界均从0开场,因此上面的代码所创立的数组元素从myArray(0冽myArray(9)0在Dim语句中不指明数组元素的个数来声明动态数组,如Dim myDynamicArrayO As Integer使用ReDim关键字重新定义数组的
15、大小:ReDim myDynamicArray(lO)也可以用ReDim关键字同时声明一个动态数组并指定该数组的元素个数:ReDim myDynamicArray(5) As IntegerVBA没有限制重新定义动态数组大小的次数,但在重新定义数组大小时,原有的数组数据就会丧失。如果需要保存原来的数据,可以使用Preserve关键字:ReDim Preserve myDynamicArray(5)需要注意的是,如果重新定义数组时减小了数组的大小,那么会丧失被缩减了的那局部元素的数据。当然,与声明变量一样,也可以用Public语句声明公共数组。2、确定数组的边界可以使用UBound函数和LBound函数分别获取数组的最大边界和最小边界。默认情况下,VBA的数组的下界是从0开场的,可以在模块的声明局部使用Option Base语句来改变模块中数组的起始边界。如Option Ba